Sep 4, 2026·6 min read·22 visits
Unauthenticated endpoints in SiYuan before version v3.7.4 disclose Argon2id salts, cost parameters, password verifiers, and wrapped AES keys when Publish Mode is enabled. Attackers can leverage this material to execute high-speed, offline brute-force attacks to decrypt local notebook files.
An access control vulnerability in the SiYuan personal knowledge management platform before version v3.7.4 exposes notebook encryption parameters to unauthenticated remote attackers. When the platform is configured in Publish Mode, specific API endpoints fail to enforce authorization checks. This access failure leaks key-derivation materials, password verifiers, and wrapped database keys to anonymous network clients.
SiYuan is a local-first personal knowledge management platform that supports end-to-end encrypted notebooks to ensure data privacy. Users rely on a zero-trust model where data remains encrypted on disk and during synchronization. To facilitate collaboration, the application provides a Publish Mode, which lets users expose specific notebooks as public-facing websites directly from their instances.
When Publish Mode is active, the application exposes a public web server and web routing layer to anonymous clients over the network. This architecture changes the authorization rules for content-rendering endpoints. However, it also exposes administrative configuration interfaces if the routing engine does not strictly separate public rendering logic from private data structures.
This vulnerability lies in the exposure of endpoints handling notebook configuration and cryptographic structures. Because the access control middleware does not properly segment these endpoints, unauthenticated remote attackers can query administrative APIs. This creates a significant information disclosure attack surface, yielding the precise parameters required to target the user's master cryptographic key.
The root cause of CVE-2026-72801 is a logical access control flaw in the web routing configuration of the SiYuan platform. In versions prior to v3.7.4, the application uses an authentication middleware layer, commonly designated as CheckAuth, to validate requests. Under normal operating conditions, this middleware blocks unauthenticated requests to the /api/ routing tree.
When Publish Mode is toggled on, the application dynamically reconfigures route access rules to allow anonymous visitors to view published pages. The application's router fails to maintain a strict allowlist for public routes, instead permitting broader access to administrative endpoints. Specifically, the endpoints /api/notebook/getNotebookConf and /api/notebook/getNotebooks are left accessible to unauthenticated HTTP requests.
Furthermore, the serialization logic of the notebook configuration handler does not filter or sanitize output fields based on the caller's authorization level. When these endpoints are queried, they serialize the entire internal notebook configuration struct into a JSON payload. This struct contains highly sensitive fields that define the cryptographic container's access controls, returning them directly to the anonymous client.
To understand the severity of the disclosure, one must examine SiYuan's underlying key-derivation and data-protection design. SiYuan protects notebooks using a derived master key and a wrapped Data Encryption Key (DEK). The master key is derived from a user-supplied master password using the Argon2id key derivation function.
The system configuration stores the specific parameters used during this derivation process. The leaked JSON payload includes the salt (the unique salt bytes utilized to prevent precomputation attacks), timeCost (iteration count), memoryCost (RAM usage parameter), and parallelism (thread allocation). These parameters are required to reconstruct the exact Argon2id hash space.
In addition to Argon2id parameters, the disclosure leaks the verifier and the wrappedKey. The verifier is a cryptographic hash used to confirm locally whether a user has entered the correct master password. The wrappedKey is the AES-encrypted DEK, which was wrapped using the derived master key. Armed with these components, an attacker possesses every piece of metadata required to perform an offline brute-force attack against the master password.
Exploitation of this vulnerability is straightforward and requires only basic web requests. An attacker targets an active SiYuan instance running in Publish Mode by sending an HTTP POST request to /api/notebook/getNotebooks to discover available notebook identifiers. No session cookies, API tokens, or headers are required to obtain this list.
Once the notebook identifier is retrieved, the attacker queries /api/notebook/getNotebookConf with the target notebook ID. The server responds with a 200 OK status and a JSON payload containing the cryptographic parameters. The attacker extracts the base64-encoded salt, the integer cost metrics, the hex-encoded verifier, and the wrappedKey payload.
Because the attacker performs the brute-force calculations locally on high-throughput GPU hardware, they bypass all network-level rate limits, logging mechanisms, and account lockout protections. The attacker executes a dictionary attack, hashing candidate passwords through Argon2id with the disclosed parameters and comparing the output to the extracted verifier. Once a match is found, the attacker derives the master key, decrypts the wrappedKey to recover the plaintext DEK, and decrypts the entire notebook database offline.
The impact of CVE-2026-72801 is a complete compromise of confidentiality for all encrypted data stored within the affected SiYuan notebooks. Since personal knowledge management systems are often used to store credentials, private encryption keys, intellectual property, and personal identification records, the downstream impact of this leakage is severe.
The attack vector is classified as Network (AV:N) with Low Attack Complexity (AC:L) and requires zero Privileges (PR:N) or User Interaction (UI:N). The CVSS v4.0 score of 8.7 reflects that while the attack itself only discloses information (VC:H, VI:N, VA:N), the disclosed information is of a cryptographic nature that directly facilitates the complete exposure of the encrypted filesystem.
Traditional online defenses such as Web Application Firewalls (WAFs) and IP-based rate limiting are ineffective once the metadata is stolen. Because the computationally intensive cracking process occurs entirely on systems controlled by the adversary, the time to compromise is limited only by the strength and complexity of the user's master password.
The definitive remediation for this vulnerability is to upgrade the SiYuan installation to version v3.7.4 or later. In version v3.7.4, the development team updated the routing configurations to ensure that the CheckAuth middleware is strictly applied to the endpoints /api/notebook/getNotebookConf and /api/notebook/getNotebooks, blocking anonymous access even when Publish Mode is enabled.
If upgrading immediately is not possible, system administrators must implement external mitigation controls. The most effective workaround is to disable the Publish Mode feature entirely within the application settings. Alternatively, administrators can configure a reverse proxy such as Nginx, Apache HTTP Server, or Caddy to intercept and block all external requests targeting the /api/ path.
Because cryptographic parameters may have been scraped prior to patch application, upgrading the software is only the first step. If an instance was exposed to the public Internet while vulnerable, users should assume their cryptographic metadata has been compromised. After upgrading to v3.7.4, users must rotate their notebook master passwords to generate a new Argon2id salt, verifier, and wrapped database key.
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N| Product | Affected Versions | Fixed Version |
|---|---|---|
SiYuan siyuan-note | < v3.7.4 | v3.7.4 |
| Attribute | Detail |
|---|---|
| CWE ID | CWE-522 |
| Attack Vector | Network |
| CVSS v4.0 Score | 8.7 |
| EPSS Score | 0.00241 (Percentile: 15.12%) |
| Impact | Complete Cryptographic Information Disclosure |
| Exploit Status | No known public exploit |
| KEV Status | Not listed |
The product transmits or stores credentials using an insufficiently secure mechanism, exposing cryptographic metadata over unauthenticated network channels.
A path traversal vulnerability (CWE-22) in Contao CMS allows unauthenticated remote attackers to bypass directory boundary restrictions in ImagesController and access files within the project directory.
Contao Open Source CMS versions 4.0.0 through 5.3.49 and 5.4.0-RC1 through 5.7.11 contain a Cross-Site Request Forgery (CSRF) vulnerability in backend parameter handling. The `RequestTokenListener` component validates anti-CSRF tokens solely for HTTP POST requests, while GET-based declarative guards run only when an `act` parameter is present in the query string. Consequently, custom backend actions dispatched via alternative parameters such as `key=` can execute without CSRF token verification when triggered by an authenticated user.
Contao CMS versions 4.1.0 through 5.3.49 and 5.4.0-RC1 through 5.7.11 fail to validate form submission tokens and enforce rate limiting when processing activation email resend requests via HTTP POST, enabling resource exhaustion and account state enumeration.
An information disclosure vulnerability in Contao CMS allows unauthenticated site visitors to view protected page titles, URLs, and text excerpts through search queries when protected page indexing is disabled after previously being enabled.
In Vikunja prior to version 2.6.0, relation creation via the CalDAV endpoint fails to invoke the TaskRelation.CanCreate authorization check. This missing access control allows an authenticated user to establish unauthorized relationships and perform write operations against any task, provided its unique identifier (UID) is known.
A cross-project information disclosure vulnerability in Vikunja allows authenticated users with read access to one project to view private task details from unauthorized projects via subtask expansion parameters.