GHSA-gpfj-4j6g-c4w9
Clipboard-based DOM-XSS
Packages
| Ecosystem | Package | Affected | Fixed in |
|---|---|---|---|
| npm | @github/paste-markdown | < 0.3.4 | 0.3.4 |
Details
As written in the advisory (Markdown source, shown as plain text).
### Impact
A self Cross-Site Scripting vulnerability exists in the @github/paste-markdown library. If the clipboard data contains the string `<table>`, a **div** is dynamically created, and the clipboard content is copied into its **innerHTML** property without any sanitization, resulting in improper execution of JavaScript in the browser of the victim (the user who pasted the code). Users directed to copy text from a malicious website and paste it into pages that utilize this library are affected.
The following @github/paste-markdown code snippet is triggered when the user pastes something and the browser's clipboard data contains an entry whose content-type is **text/HTML**.
```typescript
function generateText(transfer: DataTransfer): string | undefined {
if (Array.from(transfer.types).indexOf('text/html') === -1) return
let html = transfer.getData('text/html')
if (!/<table/i.test(html)) return
html = html.replace(/<meta.*?>/, '')
const el = document.createElement('div')
el.innerHTML = html
const tables = el.querySelectorAll('table')
for (const table of tables) {
if (table.closest('[data-paste-markdown-skip]')) {
table.replaceWith(new Text(table.textContent || ''))
}
const formattedTable = tableMarkdown(table)
table.replaceWith(new Text(formattedTable))
}
return el.innerHTML
}
```
### Patches
A security patch was released in [version 0.3.4](https://github.com/github/paste-markdown/releases/tag/v0.3.4).
### Workarounds
A Content Security Policy that prevents `unsafe-inline` helps reduce the likelihood of this vulnerability being exploited in modern browsers.
<!--
### References
_Are there any links users can visit to find out more?_
### For more information
If you have any questions or comments about this advisory:
* Open an issue in [example link to repo](http://example.com)
* Email us at [example email address](mailto:[email protected])
*
-->
References
External links from the advisory. They lead to third-party sites.
- https://github.com/github/paste-markdown/security/advisories/GHSA-gpfj-4j6g-c4w9
- https://nvd.nist.gov/vuln/detail/CVE-2021-37700
- https://github.com/github/paste-markdown/commit/32b7ea3f29ae8f256f9d19768387be42678ddf30
- https://github.com/github/paste-markdown
- https://github.com/github/paste-markdown/releases/tag/v0.3.4
- https://www.npmjs.com/package/@github/paste-markdown