# CVE-2026-34448: SiYuan: Stored XSS in Attribute View Gallery/Kanban Cover Rendering Allows Arbitrary Command Execution in Desktop Client

> Stored XSS in SiYuan desktop client allows arbitrary command execution when viewing malicious asset fields in Gallery or Kanban views.

- **Severity:** Critical 9.1 (`CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H`)
- **Exploited in the wild:** Not known
- **Login needed:** Any signed-in user
- **Attackable:** Over the internet
- **Victim action needed:** A user has to click or open something
- **Fix available:** Yes
- **Published:** 31 Mar 2026
- **Updated:** 3 Apr 2026
- **Also known as:** GHSA-rx4h-526q-4458, GO-2026-5644

## What is CVE-2026-34448?

CVE-2026-34448 is a critical cross-site scripting vulnerability in B3log Siyuan, published on 31 Mar 2026. Any signed-in user can exploit it over the network, and only if a user opens a file or follows a link.

### Official description

SiYuan is a personal knowledge management system. Prior to version 3.6.2, an attacker who can place a malicious URL in an Attribute View mAsse field can trigger stored XSS when a victim opens the Gallery or Kanban view with “Cover From -> Asset Field” enabled. The vulnerable code accepts arbitrary http(s) URLs without extensions as images, stores the attacker-controlled string in coverURL, and injects it directly into an <img src="..."> attribute without escaping. In the Electron desktop client, the injected JavaScript executes with nodeIntegration enabled and contextIsolation disabled, so the XSS reaches arbitrary OS command execution under the victim’s account. This issue has been patched in version 3.6.2.

Weakness: CWE-94 (Improper Control of Generation of Code), CWE-79 (Improper Neutralization of Input During Web Page Generation)

## Which versions are affected by CVE-2026-34448?

3 open source packages ship an affected version, including github.com/siyuan-note/siyuan/kernel. It affects 1 product.


| Package | Ecosystem | Affected | Fixed in |
| --- | --- | --- | --- |
| `github.com/siyuan-note/siyuan/kernel` | Go | All versions | None |
| `github.com/siyuan-note/siyuan/kernel` | Go | All versions | 3.6.2 |
| `github.com/siyuan-note/siyuan/kernel` | Go | All versions | 3.6.2 |

Products: B3log Siyuan.

## How do I fix CVE-2026-34448?

Upgrade github.com/siyuan-note/siyuan/kernel to 3.6.2 or later.

## Is CVE-2026-34448 being exploited?

It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-34448 exists.

## Other vulnerabilities in B3log Siyuan

- [CVE-2026-32938](https://insights.sbomify.com/CVE-2026-32938/): SiYuan has an Arbitrary File Read in its Desktop Publish Service (critical 9.9)
- [CVE-2026-33669](https://insights.sbomify.com/CVE-2026-33669/): SiYuan has Arbitrary Document Reading within the Publishing Service (critical 9.8)
- [CVE-2026-33670](https://insights.sbomify.com/CVE-2026-33670/): SiYuan has directory traversal within its publishing service (critical 9.8)
- [CVE-2026-32767](https://insights.sbomify.com/CVE-2026-32767/): SiYuan: Authorization Bypass Allows Arbitrary SQL Execution via Search API (critical 9.8)
- [CVE-2024-53504](https://insights.sbomify.com/CVE-2024-53504/): SQL injection in n/a (critical 9.8)

## Fix prompt for AI coding agents

```text
Check this codebase for CVE-2026-34448 and fix it if it is affected.

What it is: CVE-2026-34448 is a critical cross-site scripting vulnerability in B3log Siyuan, published on 31 Mar 2026. Any signed-in user can exploit it over the network, and only if a user opens a file or follows a link.
Exploitation: It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-34448 exists.

Affected packages and fixed versions:
- github.com/siyuan-note/siyuan/kernel (Go): affected all versions; no fix listed
- github.com/siyuan-note/siyuan/kernel (Go): affected all versions; fixed in 3.6.2
- github.com/siyuan-note/siyuan/kernel (Go): affected all versions; fixed in 3.6.2

Task:
1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.
2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.
3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.
4. Run the tests and summarise what changed and why.
5. If nothing in the project is affected, say so and change nothing.

Reference: https://insights.sbomify.com/CVE-2026-34448/ (Markdown: https://insights.sbomify.com/CVE-2026-34448/index.md)
```

## Sources

- CVE record: https://www.cve.org/CVERecord?id=CVE-2026-34448
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-34448
- OSV: https://osv.dev/vulnerability/CVE-2026-34448

---
From sbomify Insights: https://insights.sbomify.com/CVE-2026-34448/
Summaries are generated and may contain mistakes; the official description above is the record.
