Loading...
Skip to main content

CVE-2026-29183 — Vulnerability in...

CRITICAL

SiYuan: Unauthenticated Reflected XSS via SVG Injection in /api/icon/getDynamicIcon Endpoint

Published March 4, 2026Updated April 2, 2026Source: osv

Summary

### Summary An unauthenticated reflected XSS vulnerability exists in the dynamic icon API endpoint: - `GET /api/icon/getDynamicIcon` When `type=8`, attacker-controlled `content` is embedded into SVG output without escaping. Because the endpoint is unauthenticated and returns `image/svg+xml`, a crafted URL can inject executable SVG/HTML event handlers (for example `onerror`) and run JavaScript in the SiYuan web origin. This can be chained to perform authenticated API actions and exfiltrate sensitive data when a logged-in user opens the malicious link. ### Details The issue is caused by unsafe output construction and incomplete sanitization: 1. **Endpoint is exposed without auth middleware** - Source: https://github.com/siyuan-note/siyuan/blob/master/kernel/api/router.go#L27-L37 - `GET /api/icon/getDynamicIcon` is registered in the unauthenticated section. 2. **User input is inserted into SVG via string formatting** - Source: https://github.com/siyuan-note/siyuan/blob/master/kernel/api/icon.go#L115-L175 - Source: https://github.com/siyuan-note/siyuan/blob/master/kernel/api/icon.go#L537-L585 - In `generateTypeEightSVG`, `%s` directly injects `content` into `<text>...</text>` without XML/HTML escaping. 3. **Sanitizer only removes `<script>` tags** - Source: https://github.com/siyuan-note/siyuan/blob/master/kernel/util/misc.go#L235-L281 - `RemoveScriptsInSVG` removes `<script>` nodes, but does not remove dangerous attributes (`onerror`, `onload`, etc.) or unsafe elements. As a result, payloads such as `</text><image ... onerror=...><text>` survive and execute. ### PoC #### Minimal browser execution PoC Open this URL in a browser: ```http GET /api/icon/getDynamicIcon?type=8&content=%3C%2Ftext%3E%3Cimage%20href%3Dx%20onerror%3Dalert(document.domain)%3E%3C%2Fimage%3E%3Ctext%3E ``` Example full URL: ```text http://127.0.0.1:6806/api/icon/getDynamicIcon?type=8&content=%3C%2Ftext%3E%3Cimage%20href%3Dx%20onerror%3Dalert(document.domain)%3E%3C%2Fimage%3E%3Ctext%3E ``` Expected result: - JavaScript executes (`alert(document.domain)`), confirming reflected XSS. #### Authenticated impact demonstration If a victim is authenticated in the same browser session, JavaScript running in origin can call privileged APIs and exfiltrate returned data. ### Impact This is a reflected XSS in an unauthenticated endpoint, with realistic account/data compromise impact: - Arbitrary JavaScript execution in SiYuan web origin. - Authenticated action abuse via same-origin API calls. - Sensitive data exposure (notes/config/API responses) from victim context. - Potential chained server-impact actions depending on victim privileges and deployment mode.

Advisory Timeline

  • First published March 4, 2026 (222 days ago).
  • Last revised April 2, 2026 — 29 days after initial publication.

Remediation

Upgrade to the fixed version using your package manager.

Go
Update github.com/siyuan-note/siyuan/kernel to 0.0.0-20260304034809-d68bd5a79391 or later
go get github.com/siyuan-note/siyuan/kernel@v0.0.0-20260304034809-d68bd5a79391

After upgrading, run your dependency scanner again to confirm the vulnerability is resolved.

Affected Packages (1)

Affects 1 ecosystem: go (1).

PackageEcosystemAffectedFixed In
github.com/siyuan-note/siyuan/kernel
go
All versions0.0.0-20260304034809-d68bd5a79391

Vulnerability Classification

Common Weakness Enumeration (CWE) identifiers for this vulnerability type.

  • CWE-79
    Cross-site Scripting (XSS)MITRE

CVSS Score Breakdown

What the CVSS (Common Vulnerability Scoring System) 9.3 score means for each attack dimension.

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Changed
Confidentiality
High
Integrity
High
Availability
None

CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N

Frequently Asked Questions

What is CVE-2026-29183?
SiYuan: Unauthenticated Reflected XSS via SVG Injection in /api/icon/getDynamicIcon Endpoint This vulnerability has been assigned a severity rating of CRITICAL (CVSS score: 9.3/10).
How do I check if my project is affected by CVE-2026-29183?
CVE-2026-29183 affects github.com/siyuan-note/siyuan/kernel. Use GeekWala's free vulnerability scanner to check your dependencies against CVE-2026-29183 and 200,000+ other known vulnerabilities.

Severity & Exploitability

CVSS Score
9.3

Exploitation is straightforward and causes maximum impact. Patch immediately.

Also Known As

GHSA-6865-qjcf-286f
GO-2026-4596

Related CVEs

  • CVE-2026-32938
    CRITICAL

    SiYuan Vulnerable to Arbitrary File Read in Desktop Publish Service

  • CVE-2026-32767
    CRITICAL

    SiYuan: Authorization Bypass Allows Arbitrary SQL Execution via Search API

  • CVE-2026-54067
    CRITICAL

    SiYuan: Stored XSS to RCE via CSS-snippet <style> breakout in renderSnippet()

  • CVE-2026-39846
    CRITICAL

    SiYuan: Remote Code Execution in the Electron desktop client via stored XSS in synced table captions

  • CVE-2026-72793
    HIGH

    SiYuan: Non-administrator responses from /api/system/getConf omit three secrets that the configuration-export path explicitly strips, disclosing the session-cookie signing key and the OS username to anonymous readers

  • CVE-2026-72795
    HIGH

    SiYuan: Embedded (transclusion) block content is returned without publish-access filtering, leaking private and password-protected document content to anonymous readers

  • CVE-2026-72798
    HIGH

    SiYuan: Publish-access filter on renderAttributeView leaves related-database content unfiltered and fails open on non-block first columns

  • CVE-2026-72810
    HIGH

    SiYuan: Publish-boundary bypass via WebSocket broadcast: anonymous readers receive a live unfiltered feed of all edits including protected/forbidden documents (publish mode)

Check if you're affected

Scan your dependencies to see if this vulnerability affects your projects.

Scan Your Dependencies