CVE-2026-49463: NL Portal: Missing per-user authorization on document and decision GraphQL queries in nl-portal-backend-libraries
In versions up to and including 3.0.0, two parts of the GraphQL API returned data without checking whether the data belonged to the logged-in user:
- Document content. A logged-in user could download the raw content of any document by its ID, regardless of who owned it. The resolver has lacked an authentication parameter since the initial commit of the project (2022-11-22) — so every version of
nl.nl-portal:documenten-apiever published is affected (the earliest one on Maven Central is0.2.2.RELEASE, published 2023-08-31). - Decisions (
besluiten). A logged-in user could list, search, and read decision records — including their audit trails and the documents attached to them — for any user. The list query also accepted filters (decision type, identification, responsible organisation, related case), which made it easy to enumerate decisions across the user base. Thebesluitenmodule was introduced in the1.5.xrelease line (commit9229460b, 2024-08-19), so versions ofnl.nl-portal:besluitenfrom1.5.0through3.0.0are affected.
Decisions and their attachments often contain sensitive personal data (decisions on benefits, permits, objections, and similar), so the confidentiality impact is high. The two endpoints also chain naturally: once an attacker has discovered another user’s document IDs by enumerating decisions, they can pull those documents’ contents through the document endpoint.
References
Code Behaviors & Features
Detect and mitigate CVE-2026-49463 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Learn more about Dependency Scanning →