fix(sanitize): prevent XSS via SVG animate values attribute #776
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).