Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Bypasses require non-default advanced configs (AC:H) and a victim rendering the output (UI:R); XSS crosses into the browser (S:C) with limited C/I and no availability impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Lifecycle Timeline
4DescriptionCVE.org
justhtml before 1.16.0 contains multiple HTML sanitization bypass issues that can allow active/dangerous content (e.g., script or style) to survive sanitization, potentially leading to cross-site scripting. The issues primarily affect advanced usage rather than the default JustHTML(..., sanitize=True) path for ordinary parsed HTML: mutating or reusing sanitization policy objects (including exported defaults) could weaken later sanitization; programmatic DOM input to sanitize()/sanitize_dom() could miss mixed-case tag names (e.g., ScRiPt, StYlE); crafted programmatic doctype names could serialize into active markup; and custom policies preserving SVG or MathML could allow animation elements, presentation attributes with external url(...) references, or DOM trees mislabeled as namespace="html" to bypass foreign-content checks. Fixed in 1.16.0.
AnalysisAI
Cross-site scripting via HTML sanitization bypass affects justhtml (a Python HTML parsing/sanitization library by EmilStenstrom) in all versions up to and including 1.15.0, letting active content such as script or style survive sanitization. The flaws mostly hit advanced usage - programmatic DOM input, reused or mutated policy objects, and custom policies that preserve SVG/MathML - rather than the default JustHTML(..., sanitize=True) path, though process-wide mutation of exported default policies can weaken sanitization broadly. …
Unlock full vulnerability intelligence
- Risk assessment & exploitation conditions
- Attack chain visualization
- Remediation with exact patch versions
- Threat intelligence from 22 sources
- Personal watchlist & email alerts
Free forever · No credit card required
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata
Vulnerability AssessmentAI
| Exploitation | Exploitation is not against the default configuration: the specific prerequisites are (1) use of a custom policy that preserves SVG or MathML foreign namespaces, enabling animation elements (<set>, <animate>), presentation attributes (fill, clip-path, mask, marker-start, cursor) with external url(...) references, or DOM trees mislabeled namespace="html"; (2) passing programmatic DOM to sanitize()/sanitize_dom(), which can miss mixed-case tags (ScRiPt, StYlE) or drop_content_tags sets like {"SCRIPT"}; (3) code that mutates or reuses sanitization policy objects, including exported defaults (DEFAULT_POLICY, DEFAULT_DOCUMENT_POLICY), leaving stale compiled sanitizers active - this one CAN affect the otherwise-default path; or (4) custom policies preserving style/script (remote @import) or crafted programmatic doctype names. … Additional conditions and limiting factors are described in the full assessment. |
| Risk Assessment | The input CVSS 4.0 vector (AV:N/AC:L/PR:N/UI:N, VC:H/VI:H/VA:H, score 9.3) reads as trivially remote and unauthenticated with high impact, but this overstates real-world risk for the typical integrator: the description and vendor GHSA state most bypasses do NOT affect the default JustHTML(..., sanitize=True) path and instead require advanced usage - programmatic DOM input, custom SVG/MathML-preserving policies, or code that mutates reused/exported policy objects. … Full risk analysis with EPSS, KEV, and SSVC signal comparison available after sign-in. |
| Exploit Scenario | An application uses justhtml <= 1.15.0 with a custom policy that preserves inline SVG for user-submitted content; an attacker submits SVG containing an <animate> element or a presentation attribute with an external url(...) reference that survives sanitization, and when another user views the page the active content executes in their browser session. Alternatively, an app feeding programmatic DOM to sanitize() is bypassed by a mixed-case <ScRiPt> node. … |
| Remediation | Vendor-released patch: upgrade to justhtml 1.16.0 (released April 12, 2026), which fixes all of the sanitization, serialization, and programmatic-DOM issues; this is the primary and complete remediation (advisory: https://github.com/EmilStenstrom/justhtml/security/advisories/GHSA-4p64-v8f5-r2gx). … Detailed patch versions, workarounds, and compensating controls in full report. |
Recommended ActionAI
Within 24 hours, inventory all internal and third-party applications using justhtml and flag those processing user-submitted content or rendering untrusted HTML as priority-1. …
Sign in for detailed remediation steps and compensating controls.
Threat intelligence, references, and detailed analysis are available after sign-in.
Uncontrolled recursion in the justhtml Python HTML parsing library (all versions through 1.9.1) allows any remote unauth
Sanitizer bypass in the justhtml Python library (versions <= 1.11.0) allows attacker-controlled input to survive as raw
Sanitization bypass in justhtml (a Python HTML/Markdown sanitization library) before 1.15.0 lets attacker-controlled inp
Uncontrolled resource consumption in justhtml before 1.18.0 enables denial-of-service conditions through CPU and memory
Cross-site scripting in justhtml 0.9.0-1.21.0 allows an attacker who can control the text content of HTML code or pre el
Cross-site scripting in justhtml before 3.11.0 allows remote unauthenticated attackers to execute arbitrary JavaScript i
Mutation XSS in justhtml (versions ≤1.11.0) allows injection of arbitrary HTML into serialized output when applications
Mutation XSS (mXSS) in justhtml 1.13.0 and earlier enables markup injection bypass against applications using non-defaul
Cross-site scripting in justhtml versions before 1.13.0 allows attackers who control `<pre>` element content to break ou
Sanitization bypass in justhtml (Python HTML sanitization library) before version 1.17.0 enables cross-site scripting in
Same weakness CWE-20 – Improper Input Validation
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-64658
GHSA-fj35-9vw4-h76v