summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-02-28 18:57:47 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-02-28 18:57:47 +0000
commit90768b3af0385ae687c3d7d45d0424f572cd6cfd (patch)
tree97457b6c849d22227db78bf7496f685c1e7175a8
parent40a4f1e07e1575f073bde7b19f960e9cb56fdc6e (diff)
downloadgitlab-ce-90768b3af0385ae687c3d7d45d0424f572cd6cfd.tar.gz
Add latest changes from gitlab-org/security/gitlab@12-8-stable-ee
-rw-r--r--.gitlab/issue_templates/Security developer workflow.md19
-rw-r--r--.gitlab/merge_request_templates/Security Release.md4
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_rebase.vue6
-rw-r--r--app/views/shared/issuable/form/_branch_chooser.html.haml4
-rw-r--r--changelogs/unreleased/security-49-xss-branch-names.yml5
-rw-r--r--locale/gitlab.pot5
-rw-r--r--spec/features/merge_request/user_creates_merge_request_spec.rb24
-rw-r--r--[-rwxr-xr-x]vendor/gitignore/C++.gitignore0
-rw-r--r--[-rwxr-xr-x]vendor/gitignore/Java.gitignore0
9 files changed, 48 insertions, 19 deletions
diff --git a/.gitlab/issue_templates/Security developer workflow.md b/.gitlab/issue_templates/Security developer workflow.md
index 1b6a1f87216..56be0453b33 100644
--- a/.gitlab/issue_templates/Security developer workflow.md
+++ b/.gitlab/issue_templates/Security developer workflow.md
@@ -9,10 +9,11 @@ Set the title to: `Description of the original issue`
## Prior to starting the security release work
- [ ] Read the [security process for developers] if you are not familiar with it.
-- [ ] Link this issue in the Security Release issue on GitLab.com. You can find this issue in the topic of the `#releases` channel.
-- [ ] Add a link to the confidential `gitlab-org/gitlab` issue describing the vulnerability next to **Original issue** in the [links table](#links).
-- [ ] Add a link to the confidential `gitlab-org/gitlab` Security release issue next to **Security release issue** in the [links table](#links).
+- [ ] Mark this [issue as related] to the Security Release tracking issue. You can find it on the topic of the `#releases` Slack channel.
- [ ] Run `scripts/security-harness` in your local repository to prevent accidentally pushing to any remote besides `gitlab.com/gitlab-org/security`.
+- Fill out the [Links section](#links):
+ - [ ] Next to **Issue on GitLab**, add a link to the `gitlab-org/gitlab` issue that describes the security vulnerability.
+ - [ ] Next to **Security Release tracking issue**, add a link to the security release issue that will include this security issue.
## Development
@@ -29,7 +30,8 @@ After your merge request has being approved according to our [approval guideline
* You can use the script `bin/secpick` instead of the following steps, to help you cherry-picking. See the [secpick documentation]
- [ ] Create each MR targeting the stable branch `X-Y-stable`, using the [Security Release merge request template].
* Every merge request will have its own set of TODOs, so make sure to complete those.
-- [ ] Make sure all MRs are linked in the [Links section](#links)
+- [ ] On the "Related merge requests" section, ensure all MRs are linked to this issue.
+ * This section should only list the merge requests created for this issue: One targeting `master` and the 3 backports.
## Documentation and final details
@@ -46,12 +48,8 @@ After your merge request has being approved according to our [approval guideline
| Description | Link |
| -------- | -------- |
-| Original issue | #TODO |
-| Security release issue | #TODO |
-| `master` MR | !TODO |
-| `Backport X.Y` MR | !TODO |
-| `Backport X.Y` MR | !TODO |
-| `Backport X.Y` MR | !TODO |
+| Issue on [GitLab](https://gitlab.com/gitlab-org/gitlab/issues) | #TODO |
+| Security Release tracking issue | #TODO |
### Details
@@ -68,5 +66,6 @@ After your merge request has being approved according to our [approval guideline
[security Release merge request template]: https://gitlab.com/gitlab-org/security/gitlab/blob/master/.gitlab/merge_request_templates/Security%20Release.md
[code review process]: https://docs.gitlab.com/ee/development/code_review.html
[approval guidelines]: https://docs.gitlab.com/ee/development/code_review.html#approval-guidelines
+[issue as related]: https://docs.gitlab.com/ee/user/project/issues/related_issues.html#adding-a-related-issue
/label ~security
diff --git a/.gitlab/merge_request_templates/Security Release.md b/.gitlab/merge_request_templates/Security Release.md
index cccfafe397e..02cb4c59fd1 100644
--- a/.gitlab/merge_request_templates/Security Release.md
+++ b/.gitlab/merge_request_templates/Security Release.md
@@ -8,11 +8,11 @@ See [the general developer security release guidelines](https://gitlab.com/gitla
## Related issues
-<!-- Mention the issue(s) this MR is related to -->
+<!-- Mention the GitLab Security issue this MR is related to -->
## Developer checklist
-- [ ] Link this MR in the `links` section of the related issue on [GitLab Security].
+- [ ] **Make sure this merge request mentions the [GitLab Security] issue it belongs to (i.e. `Related to <issue_id>`).**
- [ ] Merge request targets `master`, or `X-Y-stable` for backports.
- [ ] Milestone is set for the version this merge request applies to. A closed milestone can be assigned via [quick actions].
- [ ] Title of this merge request is the same as for all backports.
diff --git a/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_rebase.vue b/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_rebase.vue
index 57be97855e3..b1fb377e47a 100644
--- a/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_rebase.vue
+++ b/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_rebase.vue
@@ -1,5 +1,6 @@
<script>
import { GlLoadingIcon } from '@gitlab/ui';
+import { escape } from 'lodash';
import simplePoll from '../../../lib/utils/simple_poll';
import eventHub from '../../event_hub';
import statusIcon from '../mr_widget_status_icon.vue';
@@ -44,11 +45,10 @@ export default {
fastForwardMergeText() {
return sprintf(
__(
- `Fast-forward merge is not possible. Rebase the source branch onto %{startTag}${this.mr.targetBranch}%{endTag} to allow this merge request to be merged.`,
+ 'Fast-forward merge is not possible. Rebase the source branch onto %{targetBranch} to allow this merge request to be merged.',
),
{
- startTag: '<span class="label-branch">',
- endTag: '</span>',
+ targetBranch: `<span class="label-branch">${escape(this.mr.targetBranch)}</span>`,
},
false,
);
diff --git a/app/views/shared/issuable/form/_branch_chooser.html.haml b/app/views/shared/issuable/form/_branch_chooser.html.haml
index 29ac17c43b9..8d9e5ddf065 100644
--- a/app/views/shared/issuable/form/_branch_chooser.html.haml
+++ b/app/views/shared/issuable/form/_branch_chooser.html.haml
@@ -8,7 +8,9 @@
.form-group.row.d-flex.gl-pl-3.gl-pr-3.branch-selector
.align-self-center
- %span= s_('From %{source_title} into').html_safe % { source_title: "<code>#{source_title}</code>".html_safe }
+ %span
+ = _('From <code>%{source_title}</code> into').html_safe % { source_title: source_title }
+
- if issuable.new_record?
%code= target_title
&nbsp;
diff --git a/changelogs/unreleased/security-49-xss-branch-names.yml b/changelogs/unreleased/security-49-xss-branch-names.yml
new file mode 100644
index 00000000000..d6ad72aa622
--- /dev/null
+++ b/changelogs/unreleased/security-49-xss-branch-names.yml
@@ -0,0 +1,5 @@
+---
+title: Fix for XSS in branch names
+merge_request:
+author:
+type: security
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index 70945366c6c..e1e04c38804 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -8208,6 +8208,9 @@ msgstr ""
msgid "Failure"
msgstr ""
+msgid "Fast-forward merge is not possible. Rebase the source branch onto %{targetBranch} to allow this merge request to be merged."
+msgstr ""
+
msgid "Fast-forward merge is not possible. Rebase the source branch onto the target branch or merge target branch into source branch to allow this merge request to be merged."
msgstr ""
@@ -8655,7 +8658,7 @@ msgstr ""
msgid "From %{providerTitle}"
msgstr ""
-msgid "From %{source_title} into"
+msgid "From <code>%{source_title}</code> into"
msgstr ""
msgid "From Bitbucket"
diff --git a/spec/features/merge_request/user_creates_merge_request_spec.rb b/spec/features/merge_request/user_creates_merge_request_spec.rb
index 67f6d8ebe32..86ee9fa5aa5 100644
--- a/spec/features/merge_request/user_creates_merge_request_spec.rb
+++ b/spec/features/merge_request/user_creates_merge_request_spec.rb
@@ -5,9 +5,9 @@ require "spec_helper"
describe "User creates a merge request", :js do
include ProjectForksHelper
+ let_it_be(:project) { create(:project, :repository) }
+ let_it_be(:user) { create(:user) }
let(:title) { "Some feature" }
- let(:project) { create(:project, :repository) }
- let(:user) { create(:user) }
before do
project.add_maintainer(user)
@@ -38,6 +38,26 @@ describe "User creates a merge request", :js do
end
end
+ context "XSS branch name exists" do
+ before do
+ project.repository.create_branch("<img/src='x'/onerror=alert('oops')>", "master")
+ end
+
+ it "doesn't execute the dodgy branch name" do
+ visit(project_new_merge_request_path(project))
+
+ find(".js-source-branch").click
+ click_link("<img/src='x'/onerror=alert('oops')>")
+
+ find(".js-target-branch").click
+ click_link("feature")
+
+ click_button("Compare branches")
+
+ expect { page.driver.browser.switch_to.alert }.to raise_error(Selenium::WebDriver::Error::NoSuchAlertError)
+ end
+ end
+
context "to a forked project" do
let(:forked_project) { fork_project(project, user, namespace: user.namespace, repository: true) }
diff --git a/vendor/gitignore/C++.gitignore b/vendor/gitignore/C++.gitignore
index 259148fa18f..259148fa18f 100755..100644
--- a/vendor/gitignore/C++.gitignore
+++ b/vendor/gitignore/C++.gitignore
diff --git a/vendor/gitignore/Java.gitignore b/vendor/gitignore/Java.gitignore
index a1c2a238a96..a1c2a238a96 100755..100644
--- a/vendor/gitignore/Java.gitignore
+++ b/vendor/gitignore/Java.gitignore