CVE: This vulnerability corresponds to CVE-2026-72794.
Summary
/api/system/getConf returns Conf.CookieKey, the key used to sign the server's session cookies in its response body. The endpoint is registered with CheckAuth only, so the field reaches the publish RoleReader token and the anonymous account when Publish.Auth.Enable is false.
The configuration-export endpoint in the same file strips this exact field before returning config, so the project already treats it as secret. The reader-facing masking path does not.
Details
| Item | Detail |
|---|---|
| Route | kernel/api/router.go:70 POST /api/system/getConf → model.CheckAuth → getConf |
| Middleware | CheckAuth only — no CheckReadonly, no CheckAdminRole |
| Leaked field | AppConf.CookieKey, serialized as cookieKey |
| Purpose of the field | Signing key for the siyuan session cookie |
The field survives every stage of the masking chain. getConf masks through GetMaskedConf() → HideConfSecret() (non-administrators) → FilterConfByPublishIgnore() (readers) → the browser-side System-path strip. CookieKey is removed by none of them:
GetMaskedConf masks UserData, MCPOAuth and AccessAuthCode only.
HideConfSecret nulls AI, Api, Flashcard, ServerAddrs, Publish, Repo, Sync, Secrets, and the System paths. It contains no reference to .