Outdated Parsedown 1.7.4 with known XSS bypasses in safe mode #8
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
composer.lockpinserusev/parsedownat version1.7.4(released 2019-12-30). Parsedown's safe mode — enabled with$Parsedown->setSafeMode(true)— is the application's sole defense against XSS when storing user-submitted messages. Version 1.7.4 is the last stable release on the 1.x line and has not received security updates since 2019.Location
composer.lock,erusev/parsedownentrymessage.php, lines 42–45 (safe mode usage)Risk
Multiple XSS bypasses in Parsedown 1.7.x safe mode have been publicly documented (e.g. via crafted image alt text, link titles, and inline HTML fragments that survive safe-mode filtering). Since the stored HTML is rendered raw in
index.php(see related issue), any successful bypass results in stored XSS for all visitors of that message. The library appears unmaintained on the 1.x branch, so no patch is forthcoming.Suggested fix direction
league/commonmark, and add a dedicated HTML sanitizer (e.g.ezyang/htmlpurifierormasterminds/html5) as a post-processing step.HTMLPurifieras a second sanitization pass over its output before storing to the database.Severity
moderate
Found by
Automated audit by Claude Code