CVE-2026-45147 SiYuan: Broken access control in SiYuan `/api/tag/getTag` — Reader role can mutate `Conf.Tag.Sort` and persist to disk
Authenticated users with reader or editor roles can modify workspace configuration settings due to missing authorization checks in the tag API.
- Exploited in the wild
- Not known
- Login needed
- Any signed-in user
- Attackable
- Over the internet
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2026-45147?
CVE-2026-45147 is a medium-severity missing authorization vulnerability in siyuan-note siyuan, published on 14 May 2026. Any signed-in user can exploit it over the network, with no action from the victim.
Official description
SiYuan is an open-source personal knowledge management system. Prior to 3.7.0, POST /api/tag/getTag is registered with model.CheckAuth only, omitting both model.CheckAdminRole and model.CheckReadonly, despite the handler performing a configuration write that is normally guarded by both. Any authenticated user — including publish-service RoleReader accounts and RoleEditor accounts on a read-only workspace — can call this endpoint with a sort argument to mutate model.Conf.Tag.Sort and trigger model.Conf.Save(), which atomically rewrites the entire workspace conf.json. This vulnerability is fixed in 3.7.0.
Which versions are affected by CVE-2026-45147?
3 open source packages ship an affected version, including github.com/siyuan-note/siyuan/kernel.
| Package | Affected | Fixed in |
|---|---|---|
github.com/siyuan-note/siyuan/kernel Go | All versions | 0.0.0-20260512140701-d7b77d945e0d |
github.com/siyuan-note/siyuan/kernel Go | All versions | 0.0.0-20260512140701-d7b77d945e0d |
github.com/siyuan-note/siyuan/kernel Go | All versions | 0.0.0-20260512140701-d7b77d945e0d |
How do I fix CVE-2026-45147?
Upgrade github.com/siyuan-note/siyuan/kernel to 0.0.0-20260512140701-d7b77d945e0d or later.
Upgrade, and check permissions on every request on the server, not only in the interface. More about Missing authorization.
Is CVE-2026-45147 being exploited?
It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-45147 exists.
Sources
Also known as GHSA-6r88-8v7q-q4p2, GO-2026-5188.