Cross-site Scripting (XSS) via Data URIs
Affecting marked package, versions <0.3.7
marked is a markdown parser and compiler used for rendering markdown content to html.
Affected versions of the package are vulnerable to Cross-site Scripting (XSS). Data URIs enable embedding small files in line in HTML documents, provided in the URL itself. Attackers can craft malicious web pages containing either HTML or script code that utilizes the data URI scheme, allowing them to bypass access controls or steal sensitive information.
<script>alert('XSS')</script> tag in base64 encoded format.
These attacks are possible by escaping the context of the web application and injecting malicious scripts in an otherwise trusted website. These scripts can introduce additional attributes (say, a "new" option in a dropdown list or a new link to a malicious site) and can potentially execute code on the clients side, unbeknown to the victim. This occurs when characters like
' are not escaped properly.
There are a few types of XSS:
- Persistent XSS is an attack in which the malicious code persists into the web app’s database.
- Reflected XSS is an which the website echoes back a portion of the request. The attacker needs to trick the user into clicking a malicious link (for instance through a phishing email or malicious JS on another page), which triggers the XSS attack.
marked to version 0.3.7 or higher.
Also, you can patch the vulnerability using Snyk wizard.
Snyk patch available for versions:
- <=0.3.6 >0.3.3