fix: DOM text reinterpreted as HTML Improper Neutralization of Input Cross-site Scripting #1610
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.
mongo/src/third_party/wiredtiger/src/docs/style/header-web.html
Line 42 in 0a68308
Extracting text from a DOM node and interpreting it as HTML can lead to a cross-site scripting vulnerability. A webpage with this vulnerability reads text from the DOM, and afterwards adds the text as HTML to the DOM. Using text from the DOM as HTML effectively unescapes the text, and thereby invalidates any escaping done on the text. If an attacker is able to control the safe sanitized text, then this vulnerability can be exploited to perform a cross-site scripting attack.
POC
The following vulnerable shows a webpage using a
data-target
attribute to select and manipulate a DOM element using the JQuery library. In thedata-target
attribute is read into thetarget
variable, and the$
function is then supposed to use thetarget
variable as a CSS selector to determine which element should be manipulated.However, if an attacker can control the
data-target
attribute, then the value oftarget
can be used to cause the$
function to execute arbitrary JavaScript.The above vulnerability can be fixed by using
$.find
instead of$
. The$.find
function will only interprettarget
as a CSS selector and never as HTML, thereby preventing an XSS attack.References