CVE-2026-61597 djust is vulnerable to stored/reflected XSS via javascript: URLs in built-in component template tags
- Exploited in the wild
- Not known
- Fix
- Available
What is CVE-2026-61597?
CVE-2026-61597 is a medium-severity vulnerability in djust-org djust, published on 16 Sep 2026.
Official description
djust provides Phoenix LiveView-style reactive server-side rendering for Django with Rust-powered performance. Prior to version 1.0.7, many djust built-in component template tags (`djust.components.templatetags.*`) render a developer/user-supplied URL into an `href` / `action` attribute, HTML-escaping it with `conditional_escape` but never validating the URL scheme. HTML escaping prevents attribute breakout but does not neutralize a `javascript:` URI (which needs no escapable characters), so a URL value of `javascript:alert(document.cookie)` lands verbatim in `<a href="javascript:alert(document.cookie)">` and executes in the victim's session on click. Version 1.0.7 contains a fix. As a workaround, do not pass user-controllable URLs to the affected built-in component tags; pre-validate URL schemes in application code before binding them to component arguments.
Weakness: CWE-79
Which versions are affected by CVE-2026-61597?
3 open source packages ship an affected version, including djust.
| Package | Affected | Fixed in |
|---|---|---|
djust PyPI | All versions | 1.0.7 |
djust PyPI | All versions | 1.0.7 |
djust PyPI | All versions | 1.0.7 |
How do I fix CVE-2026-61597?
Upgrade djust to 1.0.7 or later.
Is CVE-2026-61597 being exploited?
There is no known exploitation of CVE-2026-61597 in the wild and no public exploit code.
Sources
Also known as GHSA-4mf4-73j6-mvrw, PYSEC-2026-4037.