Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Release Tools Bot <robert+release-tools@gitlab.com>2019-11-26 20:02:49 +0300
committerGitLab Release Tools Bot <robert+release-tools@gitlab.com>2019-11-26 20:02:49 +0300
commit6b50c98f7a3c38627603da3650240a401789bb79 (patch)
tree85019936afe1b6b21409cbc0b6e566160f5dca77
parent5df019e892f4e717772133e469303ab220938233 (diff)
parent54564e79d311f06cbf279d137d6d517efc5c9fb2 (diff)
Merge branch 'security-fix-xss-in-label-namespace' into 'master'
Escape namespace in label references Closes #2941 See merge request gitlab/gitlabhq!3509
-rw-r--r--changelogs/unreleased/security-fix-xss-in-label-namespace.yml5
-rw-r--r--lib/banzai/filter/label_reference_filter.rb2
-rw-r--r--spec/lib/banzai/filter/label_reference_filter_spec.rb9
3 files changed, 15 insertions, 1 deletions
diff --git a/changelogs/unreleased/security-fix-xss-in-label-namespace.yml b/changelogs/unreleased/security-fix-xss-in-label-namespace.yml
new file mode 100644
index 00000000000..342cf3e68cb
--- /dev/null
+++ b/changelogs/unreleased/security-fix-xss-in-label-namespace.yml
@@ -0,0 +1,5 @@
+---
+title: Escape namespace in label references to prevent XSS
+merge_request:
+author:
+type: security
diff --git a/lib/banzai/filter/label_reference_filter.rb b/lib/banzai/filter/label_reference_filter.rb
index db620c65237..609ea8fb5ca 100644
--- a/lib/banzai/filter/label_reference_filter.rb
+++ b/lib/banzai/filter/label_reference_filter.rb
@@ -89,7 +89,7 @@ module Banzai
parent_from_ref = from_ref_cached(project_path)
reference = parent_from_ref.to_human_reference(parent)
- label_suffix = " <i>in #{reference}</i>" if reference.present?
+ label_suffix = " <i>in #{ERB::Util.html_escape(reference)}</i>" if reference.present?
end
presenter = object.present(issuable_subject: parent)
diff --git a/spec/lib/banzai/filter/label_reference_filter_spec.rb b/spec/lib/banzai/filter/label_reference_filter_spec.rb
index 35e99d2586e..66af26bc51c 100644
--- a/spec/lib/banzai/filter/label_reference_filter_spec.rb
+++ b/spec/lib/banzai/filter/label_reference_filter_spec.rb
@@ -521,6 +521,15 @@ describe Banzai::Filter::LabelReferenceFilter do
expect(reference_filter(act).to_html).to eq exp
end
+
+ context 'when group name has HTML entities' do
+ let(:another_group) { create(:group, name: '<img src=x onerror=alert(1)>', path: 'another_group') }
+
+ it 'escapes the HTML entities' do
+ expect(result.text)
+ .to eq "See #{group_label.name} in #{another_project.full_name}"
+ end
+ end
end
describe 'cross-project / same-group_label complete reference' do