6.1 MEDIUM
- CVSS version: 3.1
- Attack vector (AV): NETWORK
- Attack complexity (AC): LOW
- Privileges required (PR): NONE
- User interaction (UI): REQUIRED
- Scope (S): CHANGED
- Confidentiality impact (C): LOW
- Integrity impact (I): LOW
- Availability impact (A): NONE
Activity log
- Created suggestion
Isso: Stored XSS via comment website field
Isso is a lightweight commenting server written in Python and JavaScript. In commits before 0afbfe0691ee237963e8fb0b2ee01c9e55ca2144, there is a stored Cross-Site Scripting (XSS) vulnerability affecting the website and author comment fields. The website field was HTML-escaped using quote=False, which left single and double quotes unescaped. Since the frontend inserts the website value directly into a single-quoted href attribute via string concatenation, a single quote in the URL breaks out of the attribute context, allowing injection of arbitrary event handlers (e.g. onmouseover, onclick). The same escaping is missing entirely from the user-facing comment edit endpoint (PUT /id/) and the moderation edit endpoint (POST /id//edit/). This issue has been patched in commit 0afbfe0691ee237963e8fb0b2ee01c9e55ca2144. To workaround, nabling comment moderation (moderation = enabled = true in isso.cfg) prevents unauthenticated users from publishing comments, raising the bar for exploitation, but it does not fully mitigate the issue since a moderator activating a malicious comment would still expose visitors.
References
-
https://github.com/isso-comments/isso/security/advisories/GHSA-9fww-8cpr-q66r x_refsource_CONFIRM
-
https://docs.python.org/3/library/html.html#html.escape x_refsource_MISC
Affected products
- ==< 0afbfe0691ee237963e8fb0b2ee01c9e55ca2144
Matching in nixpkgs
pkgs.isso
Commenting server similar to Disqus
pkgs.python312Packages.dissononce
Python implementation for Noise Protocol Framework
pkgs.python313Packages.dissononce
Python implementation for Noise Protocol Framework
pkgs.python314Packages.dissononce
Python implementation for Noise Protocol Framework
Package maintainers
-
@fgaz Francesco Gazzetta <fgaz@fgaz.me>