HSEC-2023-0008

Stored XSS in hledger-web

An issue was discovered in hledger-web < 1.23. A Stored Cross-Site Scripting (XSS) vulnerability exists in toBloodhoundJson that allows an attacker to execute JavaScript by encoding user-controlled values in a payload with base64 and parsing them with the atob function.

hledger-web forms sanitise obvious JavaScript, but not obfuscated JavaScript (see OWASP Filter Evasion Cheat Sheet). This means hledger-web instances, especially anonymously-writable ones like demo.hledger.org, could be loaded with malicious JavaScript to be executed by subsequent visitors.

Reported by Gaspard Baye and Hamidullah Muslih. Fix by Arsen Arsenović.

Info

Published
November 14, 2025
Modified
November 14, 2025
CAPECs
< none >
CWEs
87
Keywords
web, xss, historical
Aliases
CVE-2021-46888
Related
< none >
References
[REPORT] https://github.com/simonmichael/hledger/issues/1525
[INTRODUCED] https://github.com/simonmichael/hledger/commit/ec51d28839b2910eea360b1b8c72904b51cf7821
[EVIDENCE] https://www.youtube.com/watch?v=QnRO-VkfIic
[FIX] https://github.com/simonmichael/hledger/pull/1663

Affected

hledger-web
CVSS
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
Versions
>=0.24 && <1.23
Declarations
< none >