Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAccess local web UI as low-priv user
-
DeliveryStore bookmark with attribute-breaking URL payload
-
ExploitVictim opens bookmarks page
-
ExecutionUnescaped URL/DisplayURL renders in browser
-
ImpactInjected JavaScript executes in victim context
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires that an attacker-controlled bookmark (specifically a crafted URL or DisplayURL value containing an HTML attribute-breaking payload) be stored in gosuki and then rendered by the vulnerable internal/webui/templates/bookmarks.html page, which uses Go's text/template (no context-aware auto-escaping) instead of html/template. LIMITING FACTORS: the attacker needs the ability to inject/store a bookmark (CVSS PR:L implies low-privilege authenticated access to the local interface), the victim must actually view the bookmarks page in a browser (UI:R), and the impact is confined to the victim's browser session (S:C, C:L/I:L, no availability impact). Because gosuki is a locally hosted, typically single-user bookmark/sync tool, realistic risk depends on whether untrusted bookmark data (e.g., synced or shared bookmarks) can reach the interface rendered to another user. |
| Impact | This is a moderate-severity stored XSS (CVSS 5.4, CWE-79) with signals that collectively point to LOW real-world urgency. The CVSS vector CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N indicates network-reachable, low-complexity exploitation but requires some privilege (PR:L - authentication requirements per the vector are authenticated/low-privilege) and victim interaction (UI:R), with a scope change (S:C) reflecting that injected script executes in the victim's browser context rather than the server's. EPSS is low at 0.23% (13th percentile), the CVE is NOT on CISA KEV, and no vendor-confirmed exploit flag was supplied. Per precision rules with no KEV and no explicit POC flag in the input, exploitation status is 'no public exploit identified at time of analysis'; HOWEVER, a dedicated researcher repository (github.com/AmalJafarzade/CVE-2026-104587) is referenced and very likely contains a proof-of-concept or write-up - this should be verified, as it may raise effective POC availability. No SSVC decision data was provided. Overall: signals are internally consistent (low EPSS, no KEV, moderate CVSS, privilege+interaction gating), so this is a genuine-but-low-priority defect, not a high-urgency threat - characteristic of a self-hosted, single-user local tool rather than mass-exploitable infrastructure. |
| Exploit ScenarioDerived | An attacker crafts a bookmark whose URL or DisplayURL field embeds an HTML attribute-breaking payload (e.g., breaking out of an href attribute to inject an event handler). When this malicious bookmark is stored and later rendered in gosuki's local web interface, the text/template engine emits it without context-aware escaping, and the victim's browser executes the attacker's JavaScript in the session context of the local UI. A likely proof-of-concept exists in the referenced researcher GitHub repository, though it is not independently confirmed here. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 15, 2026
Stored cross-site scripting in blob42 gosuki (all versions up to and including commit 6e2bf34) allows an authenticated attacker (low-privilege, PR:L per the CVSS vector) to inject a crafted bookmark URL or DisplayURL value that executes arbitrary JavaScript in a victim's browser when the local bookmark list page is rendered. The vulnerability is rated CVSS 3.1 5.4 (AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N, CWE-79), with EPSS at 0.23% (13th percentile), no CISA KEV entry, and no public exploit identified at time of analysis. Impact is confined to the victim's browser session (low confidentiality and integrity, no availability effect), and exploitation depends on malicious bookmark data being stored and then viewed by a user in the affected web interface.
RemediationAI
No vendor-released patch identified at time of analysis - the upstream project reference (https://github.com/blob42/gosuki) points to the repository rather than a tagged fix, and the advisory reference in the feed is the NVD entry (https://nvd.nist.gov/vuln/detail/CVE-2026-104587) rather than a patched release. The definitive code-level fix is to render internal/webui/templates/bookmarks.html with Go's html/template instead of text/template so URL and DisplayURL values receive context-aware HTML attribute escaping; until an upstream release includes that change, upgrade only to a build confirmed to carry the template swap. Compensating controls, with their trade-offs: restrict network reachability of the gosuki web UI so it binds only to localhost and is reachable solely through an SSH tunnel or local reverse proxy (reduces remote attack surface but does not stop a local or synced malicious bookmark from firing); do not import, sync, or accept bookmarks from untrusted or shared sources into the instance, and audit existing bookmarks for suspicious quote/scheme fragments such as javascript: URLs or unescaped double/single quotes in the URL or DisplayURL fields (prevents the stored payload from existing, but requires manual curation and may break legitimate sync workflows); and view the bookmarks page only in a dedicated, cookie-isolated browser profile that holds no authenticated sessions to other services (contains the blast radius of the scope change, at the cost of inconvenience). No public proof-of-concept exploitation has been confirmed in the provided intelligence, and EPSS remains low (0.23%), so remediation can be prioritized as moderate rather than emergency.
Affected VersionsENISA
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The root cause is a template-escaping failure classed as CWE-79 (Improper Neutralization of Input During Web Page Generation, i.e., cross-site scripting). gosuki's internal web UI renders the bookmark list via internal/webui/templates/bookmarks.html using Go's text/template package, which performs no context-aware auto-escaping; the Go standard library's html/template package is the context-sensitive equivalent that would HTML-escape URL and DisplayURL values and neutralize attribute-breaking sequences. Because the bookmark URL and DisplayURL fields are interpolated into an HTML attribute context without escaping, a payload containing quote characters can break out of the attribute and inject arbitrary script into the rendered page - a stored XSS condition (the malicious value persists as bookmark data and fires for any user who loads the bookmarks view). The CVSS scope change (S:C) reflects that the injected script executes in the victim's browser security context rather than merely affecting the vulnerable component. No CPE identifiers were supplied in the intelligence feed and EUVD lists affected version data as 'n/a n/a'; however, the description pins the affected code state to commit 6e2bf34 of the blob42/gosuki repository, and a reference list entry points to a GitHub repository named for this CVE alongside the upstream project at https://github.com/blob42/gosuki.
Know when the next one hits your stack
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
Stored XSS requires storing a bookmark (PR:L) and a victim viewing the page (UI:R); script runs cross-context in the browser (S:C) with limited C/I and no availability impact.
Primary rating from Vendor (mitre).
CVSS VectorVendor: mitre
Lifecycle Timeline
2DescriptionCVE.org
blob42 gosuki through commit 6e2bf34 contains a Stored Cross-Site Scripting (XSS) vulnerability. The application uses text/template instead of html/template, failing to perform context-aware auto-escaping on the URL and DisplayURL fields of bookmarks in internal/webui/templates/bookmarks.html. An attacker can craft a malicious bookmark URL containing HTML attribute-breaking payloads that execute arbitrary JavaScript in the victim's browser context when rendered in the local web interface.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
EUVD-2026-100713
GHSA-vfxj-r6f4-qcvw
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB