ZAC: Missing per-zaaktype authorization on by-ID decision and process reads
Impact
ZAC is an open-source, workflow-based Common Ground component for Dutch municipal case management. Prior to 5.2.0, by-id read endpoints in src/main/kotlin/nl/info/zac/app/zaak/ZaakRestService.kt omit assertPolicy(policyService.readZaakRechten(zaak).lezen) authorization. RequestAuthorizationFilter and hasAnyApplicationRole require only an application role on any zaaktype, not the target case's type, while zaak-rechten.rego enforces the actual zaaktype_allowed boundary only when invoked. An authenticated low-privileged municipal user who knows a case or decision UUID can use GET…
Source excerpt · GitHub_MRequestAuthorizationFilter and hasAnyApplicationRole require only an application role on any zaaktype, not the target case's type, while zaak-rechten.rego enforces the actual zaaktype_allowed boundary only when invoked.
Affected packages
Affected products
Vendor version evidence. Product records are separate from automatic dependency matching.
infonl · GitHub_M
dimpact-zaakafhandelcomponent
1 range
infonl · GitHub_M
dimpact-zaakafhandelcomponent
Compare with this publisher’s ranges. This does not inspect your installation.
affected
< 5.2.0
Other versions: unknown
Original source description
ZAC is an open-source, workflow-based Common Ground component for Dutch municipal case management. Prior to 5.2.0, by-id read endpoints in src/main/kotlin/nl/info/zac/app/zaak/ZaakRestService.kt omit assertPolicy(policyService.readZaakRechten(zaak).lezen) authorization. RequestAuthorizationFilter and hasAnyApplicationRole require only an application role on any zaaktype, not the target case's type, while zaak-rechten.rego enforces the actual zaaktype_allowed boundary only when invoked. An authenticated low-privileged municipal user who knows a case or decision UUID can use GET /rest/zaken/besluit/zaakUuid/{uuid} (listBesluitenForZaakUUID) to read decisions including types, dates, and free-text toelichting; GET /rest/zaken/besluit/{uuid}/historie (listBesluitHistorie) to read audit old/new values; and GET /rest/zaken/{uuid}/process-diagram (downloadProcessDiagram) to read BPMN workflow state across unauthorized zaaktypes. The advisory also identifies zaak/{uuid}/afzender (listAfzendersVoorZaak) as exposing zaaktype mailbox configuration without a policy check. The search/_zoek path is correctly authorization-filtered and is not part of this by-id read cluster. This issue is fixed in version 5.2.0.
Inside the record
Evidence available
Describes the evidence in this view, not whether the product is safe.
Original records
CVE-2026-55551View the latest unmodified CVE JSON from the official source. It may be newer than this imported page.
cve.new JSON →Underlying weaknesses
The source’s classification of what caused the vulnerability.
Contributing organizations · 1
Assigning organization
What changed
Follow changesLarge field values are marked as truncated previews. Original source snapshots remain retained.