summaryrefslogtreecommitdiff
path: root/lib/banzai
Commit message (Collapse)AuthorAgeFilesLines
* Add latest changes from gitlab-org/security/gitlab@12-7-stable-eeGitLab Bot2020-01-281-3/+5
|
* Add latest changes from gitlab-org/gitlab@12-7-stable-eeGitLab Bot2020-01-219-103/+165
|
* Add latest changes from gitlab-org/security/gitlab@12-6-stable-eeGitLab Bot2019-12-311-3/+9
|
* Add latest changes from gitlab-org/gitlab@12-6-stable-eeGitLab Bot2019-12-2010-8/+41
|
* Merge branch 'security-dos-issue-and-commit-comments-12-5' into '12-5-stable'GitLab Release Tools Bot2019-11-261-1/+1
|\ | | | | | | | | Fix invalid byte sequence See merge request gitlab/gitlabhq!3547
| * Fix invalid byte sequencePatrick Derichs2019-11-221-1/+1
| |
* | Escape namespace in label referencesHeinrich Lee Yu2019-11-251-1/+1
|/ | | | | | | When referencing cross-namespace labels, we append the namespace name to the rendered label. This MR escapes the name to prevent XSS attacks.
* Add latest changes from gitlab-org/gitlab@12-5-stable-eeGitLab Bot2019-11-195-32/+139
|
* Add latest changes from gitlab-org/gitlab@12-4-stable-eeGitLab Bot2019-10-2214-89/+294
|
* Add latest changes from gitlab-org/gitlab@masterGitLab Bot2019-09-181-1/+1
|
* Add latest changes from gitlab-org/gitlab@masterGitLab Bot2019-09-138-0/+16
|
* Avoid calling freeze on already frozen strings in libDinesh Panda2019-09-107-14/+14
|
* Set asset_proxy_whitelist default to gitlab host67037-user-content-gitlab-static-net-brings-back-404-onlyBrett Walker2019-09-051-1/+5
|
* Fix upload URLs in Markdown66803-fix-uploads-relative-link-filterHeinrich Lee Yu2019-09-021-10/+3
| | | | | Fixes RelativeLinkFilter for users that don't have access to the project's repository
* Fix for #56295, https://gitlab.com/gitlab-org/gitlab-ce/issues/56295.Jesse Hall2019-08-301-1/+2
| | | | All avatars now visible in commit trailers.
* Resolve "Use "moved" instead of "closed" in issue references"Juliette de Rancourt2019-08-301-1/+6
|
* Merge branch 'security-enable-image-proxy' into 'master'GitLab Release Tools Bot2019-08-298-5/+109
|\ | | | | | | | | | | | | Use image proxy to mitigate stealing ip addresses Closes #2812 See merge request gitlab/gitlabhq!2926
| * Add support for using a Camo proxy serverBrett Walker2019-08-238-5/+109
| | | | | | | | | | | | User images and videos will get proxied through the Camo server in order to keep malicious sites from collecting the IP address of users.
* | Merge branch 'security-fix-markdown-xss' into 'master'GitLab Release Tools Bot2019-08-293-12/+34
|\ \ | | | | | | | | | | | | Re-escape the whole HTML content when finding HTML references See merge request gitlab/gitlabhq!3340
| * | Re-escape whole HTML content instead of only matchJan Provaznik2019-08-233-12/+34
| |/ | | | | | | | | | | | | | | | | | | When we un-escape HTML text to find references in it, we should then re-escape the whole text again, not only found matches. Because we replace matches with milestone/label links (which contain HTML tags we don't want to escape again), we re-escape HTML text with placeholders instead of these links and then replace placeholders in the escaped text.
* | Avoid exposing unaccessible repo data upon GFM processingOswaldo Ferreira2019-08-211-0/+16
|/ | | | | | | | | | | | | | | | | | When post-processing relative links to absolute links RelativeLinkFilter didn't take into consideration that internal repository data could be exposed for users that do not have repository access to the project. This commit solves that by checking whether the user can `download_code` at this repository, avoiding any processing of this filter if the user can't. Additionally, if we're processing for a group ( no project was given), we check if the user can read it in order to expand the href as an extra. That doesn't seem necessarily a breach now, but an extra check doesn't hurt as after all the user needs to be able to `read_group`.
* Support query parameters in metrics embedsSarah Yasonik2019-08-151-11/+22
| | | | | | | | https://gitlab.com/gitlab-org/gitlab-ce/issues/62971 Adds support for embedding specific charts from the metrics dashboard. Expected parameters are dashboard, title, group, and y_label.
* Remove gfm_embed_metrics flag from BETristan Read2019-08-092-4/+0
| | | | | | Removes the feature flag that controls whether metrics dashboard urls unfurl the metrics dashboard charts.
* Initial commit of WIP code for considerationKerri Miller2019-08-073-21/+32
| | | | Squash this commit and reword before merging..
* Merge branch 'master' of dev.gitlab.org:gitlab/gitlabhqRobert Speicher2019-07-294-50/+16
|\
| * Extract SanitizeNodeLink and apply to WikiLinkFilterKerri Miller2019-07-264-50/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The SanitizationFilter was running before the WikiFilter. Since WikiFilter can modify links, we could see links that _should_ be stopped by SanatizationFilter being rendered on the page. I (kerrizor) had previously addressed the bug in: https://gitlab.com/gitlab-org/gitlab-ee/commit/7bc971915bbeadb950bb0e1f13510bf3038229a4 However, an additional exploit was discovered after that was merged. Working through the issue, we couldn't simply shuffle the order of filters, due to some implicit assumptions about the order of filters, so instead we've extracted the logic that sanitizes a Nokogiri-generated Node object, and applied it to the WikiLinkFilter as well. On moving filters around: Once we start moving around filters, we get cascading failures; fix one, another one crops up. Many of the existing filters in the WikiPipeline chain seem to assume that other filters have already done their work, and thus operate on a "transform anything that's left" basis; WikiFilter, for instance, assumes any link it finds in the markdown should be prepended with the wiki_base_path.. but if it does that, it also turns `href="@user"` into `href="/path/to/wiki/@user"`, which the UserReferenceFilter doesn't see as a user reference it needs to transform into a user profile link. This is true for all the reference filters in the WikiPipeline.
* | Prefer `flat_map` over `map` + `flatten`Peter Leitzen2019-07-261-1/+1
|/ | | | | Convert several occurrences of `map` + `flatten` to `flat_map` where applicable.
* Merge branch 'issue-64645-asciidoctor-footnote-links' into 'master'Nick Thomas2019-07-171-5/+28
|\ | | | | | | | | | | | | Preserve footnote link ids Closes #64645 See merge request gitlab-org/gitlab-ce!30790
| * Preserve footnote link idsGuillaume Grossetie2019-07-171-5/+28
| |
* | Rename Redactor classes to ReferenceRedactorSarah Yasonik2019-07-165-6/+6
|/
* Enable section anchorsGuillaume Grossetie2019-07-161-2/+28
|
* Merge branch 'issue-63298-asciidoc-sanitization' into 'master'Douwe Maan2019-07-124-79/+163
|\ | | | | | | | | | | | | Prevent excessive sanitization of AsciiDoc ouptut Closes #63298 See merge request gitlab-org/gitlab-ce!30290
| * Prevent excessive sanitization of AsciiDoc ouptutGuillaume Grossetie2019-07-124-79/+163
| |
* | Merge branch 'banzai-avoid-redis-if-db-cache' into 'master'Douwe Maan2019-07-111-11/+31
|\ \ | | | | | | | | | | | | Banzai - avoid redis if attr is in DB cache See merge request gitlab-org/gitlab-ce!30334
| * | Banzai - avoid redis if attr is in DB cachebanzai-avoid-redis-if-db-cacheMario de la Ossa2019-07-101-11/+31
| |/ | | | | | | | | | | | | When cache_collection_render runs we end up reading and writing things to redis even if we already have the rendered field cached in the DB. This commit avoids using redis at all whenever we have the field already rendered in the DB cache.
* | Expose metrics element for FE consumptionSarah Yasonik2019-07-105-0/+210
|/ | | | | | | | | | | Adds GFM Pipline filters to insert a placeholder in the generated HTML from GFM based on the presence of a metrics dashboard link. The front end should look for the class 'js-render-metrics' to determine if it should replace the element with metrics charts. The data element 'data-dashboard-url' should be the endpoint the front end should hit in order to obtain a dashboard layout in order to appropriately render the charts.
* Merge branch 'asciidoc-syntax-highlighting' into 'master'Douwe Maan2019-07-032-1/+2
|\ | | | | | | | | | | | | Enable AsciiDoc syntax highlighting (using Rouge) Closes #32635 See merge request gitlab-org/gitlab-ce!29835
| * Enable AsciiDoc syntax highlighting (using Rouge)Guillaume Grossetie2019-07-022-1/+2
| |
* | Merge branch 'master' of gitlab.com:gitlab-org/gitlab-ceMarin Jankovski2019-07-031-3/+3
|\ \ | |/
| * Fix attachments using the wrong URLs in e-mailssh-fix-issue-63910Stan Hu2019-06-281-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Prior to https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/29889, only the project context were set for the Markdown renderer. For a note on an issuable, the group context was set to `nil` because `note.noteable.try(:group)` attempted to get the issuable's group, which doesn't exist. To make group notifications work, now both the project and group context are set. The context gets passed to `RelativeLinkFilter`, which previously assumed that it wasn't possible to have both a group and a project in the Markdown context. However, if a group were defined, it would take precedence, and the URL rendered for uploads would be `/group/-/uploads` instead of `/group/project/uploads/`. This led to 404s in e-mails. However, now that we have both project and group in the context, we render the Markdown giving priority to the project context if is set. Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/63910
* | Merge branch 'security-DOS_issue_comments_banzai' into 'master'Marin Jankovski2019-07-021-1/+1
|\ \ | |/ |/| | | | | Fix DOS when rendering issue/MR comments See merge request gitlab/gitlabhq!3152
| * Fix DOS when rendering issue/MR commentsMario de la Ossa2019-06-131-1/+1
| |
* | Do not rewrite relative links for system notesbug/63162-duplicate_path_in_linksMario de la Ossa2019-06-201-0/+2
|/
* Allow emoji in label and milestone referencesallow-emoji-in-referencesSean McGivern2019-06-071-1/+1
| | | | | | | | | | | | | | | If we put the emoji filter before the reference filters, each emoji will have a wrapper element that prevents the reference filter from detecting the presence of the emoji. As the emoji filter now runs after the reference filters, references must contain a literal emoji, not the GitLab Flavored Markdown versions (:100`, for example). A weird side-effect is that if you have a label with the 100 emoji, and a label named :100:, then trying to reference the latter will work (link to the correct label), but will render with the 100 emoji. I'm comfortable with that edge case, I think.
* Use Redis for CacheMarkDownField on non AR modelsPatrick Bajao2019-06-051-1/+1
| | | | | | | | | | | | | | | | | | This allows using `CacheMarkdownField` for models that are not backed by ActiveRecord. When the including class inherits `ActiveRecord::Base` we include `Gitlab::MarkdownCache::ActiveRecord::Extension`. This will cause the markdown fields to be rendered and the generated HTML stored in a `<field>_html` attribute on the record. We also store the version used for generating the markdown. All other classes that include this model will include the `Gitlab::MarkdownCache::Redis::Extension`. This add the `<field>_html` attributes to that model and will generate the html in them. The generated HTML will be cached in redis under the key `markdown_cache:<class>:<id>`. The class this included in must therefore respond to `id`.
* Merge branch 'security-60143-address-xss-issue-master' into 'master'Robert Speicher2019-06-031-0/+8
|\ | | | | | | | | Reject slug+uri concat if slug is deemed unsafe See merge request gitlab/gitlabhq!3108
| * Reject slug+uri concat if slug is deemed unsafeKerri Miller2019-05-241-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | First reported: https://gitlab.com/gitlab-org/gitlab-ce/issues/60143 When the page slug is "javascript:" and we attempt to link to a relative path (using `.` or `..`) the code will concatenate the slug and the uri. This MR adds a guard to that concat step that will return `nil` if the incoming slug matches against any of the "unsafe" slug regexes; currently this is only for the slug "javascript:" but can be extended if needed. Manually tested against a non-exhaustive list from OWASP of common javascript XSS exploits that have to to with mangling the "javascript:" method, and all are caught by this change or by existing code that ingests the user-specified slug.
* | Merge branch 'security-fix-project-existence-disclosure-master' into 'master'GitLab Release Tools Bot2019-06-031-2/+5
|\ \ | |/ |/| | | | | Fix url redaction for issue links See merge request gitlab/gitlabhq!3091
| * Fix url redaction for issue linksPatrick Derichs2019-05-031-2/+5
| | | | | | | | | | | | | | | | | | | | Add changelog entry Add missing href to all redactor specs and removed href assignment Remove obsolete spec If original_content is given, it should be used for link content
* | Fix milestone references with HTML entities in the namefix-milestone-references-with-escaped-html-entitiesSean McGivern2019-05-243-10/+10
| | | | | | | | | | | | | | | | | | When a milestone name contained an HTML entity that would be escaped (&, <, >), then it wasn't possible to refer to this milestone by name, or use it in a quick action. This already worked for labels, but not for milestones. We take care to re-escape un-matched milestones, too.