fix(sanitize): prevent XSS via SVG animate values attribute#776
Open
beliarh wants to merge 1 commit intodiplodoc-platform:masterfrom
Open
fix(sanitize): prevent XSS via SVG animate values attribute#776beliarh wants to merge 1 commit intodiplodoc-platform:masterfrom
beliarh wants to merge 1 commit intodiplodoc-platform:masterfrom
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Found that
valuesattribute in SVG<animate>tags wasn't being checked for dangerous URL schemes likejavascript:ordata:. This could be exploited like this:The issue is that
allowedSchemesAppliedToAttributesalready hasfromandtofor animate elements, butvalueswas missing.Changes
Added
valuesto the list of attributes that get validated.Now it works the same way as
href,from, andto- extracts the scheme and blocks if it's not in the whitelist.Regular animation values like
"0;1;0"or"red;green;blue"work fine since they don't have a scheme prefix.Only stuff like
javascript:,data:,vbscript:gets filtered out.Tests
Added two test cases to xss.test.ts - one with
javascript:and one withdata:scheme.Both get properly sanitized now (the
valuesattribute is removed from the output).