A previous advisory (CVE-2026-49463 / GHSA-qpm9-h556-mwxm) reported that any logged-in user could download any document by its identifier, and stated this was fixed in 3.0.1. For the document-content part that fix was incomplete: documents remained downloadable by any authenticated user in 3.0.1 and 3.0.2, and the issue was only fully resolved in 3.0.3.
This advisory is a follow-up to CVE-2026-49463. That advisory described the problem on the GraphQL getDocumentContent query and listed nl.nl-portal:documenten-api as fixed in 3.0.1. In practice:
Both were removed in 3.0.3, which is the first release where the document-content issue is actually fixed.
A document's contents could be fetched in two ways, and neither verified the caller's relationship to the document:
GET /api/documentapi/{documentapi}/document/{documentId}/contentgetDocumentContentBeing logged in was required, but that was the only check — there was no per-document authorization. (A security rule meant to guard the REST endpoint also pointed at the wrong URL and never took effect; even if it had, it would only have required a login, not ownership.)
While logged in as any portal user, request a document that belongs to someone else:
GET /api/documentapi/openzaak/document/<another-users-document-id>/content
The server returns the document contents (HTTP 200), even though the caller has no relationship to that document. The getDocumentContent GraphQL query behaves the same way.
A logged-in user could read the contents of documents belonging to other people. In a citizen or business portal these documents can contain sensitive personal information. To exploit this, an attacker needs a valid login and a target document's identifier. Document identifiers are random and hard to guess, which limits — but does not prevent — abuse, since identifiers can leak through other channels.
Fixed in 3.0.3. Both the REST endpoint and the GraphQL query were removed entirely. Document contents can now only be downloaded through endpoints that first confirm the caller is allowed to see the document:
If your application relied on the removed endpoints, switch to one of these case- or message-scoped download endpoints.
If you cannot upgrade immediately, block the path GET /api/documentapi/*/document/*/content and the getDocumentContent GraphQL query at your gateway or reverse proxy, and remove any client code that calls them. There is no setting that adds the missing per-document check in affected versions; upgrading (or removing the endpoints) is the only complete fix.
nl.nl-portal:documenten-apiReported by Ray Sabee, https://whitehatsecurity.nl/ (independent security researcher). Github handle: raysabee
{
"github_reviewed": true,
"github_reviewed_at": "2026-06-18T17:20:14Z",
"nvd_published_at": null,
"severity": "MODERATE",
"cwe_ids": [
"CWE-285",
"CWE-639"
]
}