{"id":"GHSA-3jpj-v3xr-5h6g","summary":"zrok: Broken ownership check in DELETE /api/v2/unaccess allows non-admin to delete global frontend records","details":"Summary\nThe unaccess handler (controller/unaccess.go) contains a logical error in its ownership guard: when a frontend record has environment_id = NULL (the marker for admin-created global frontends), the condition short-circuits to false and allows the deletion to proceed without any ownership verification. A non-admin user who knows a global frontend token can call DELETE /api/v2/unaccess with any of their own environment IDs and permanently delete the global frontend, taking down all public shares routed through it.\n\nAttack Vector: Network — the endpoint is a standard HTTP API call.\n\nAttack Complexity: High — successful exploitation requires prior knowledge of a global frontend token. These tokens are not returned to non-admin users by any standard API endpoint; obtaining one requires an out-of-band step (e.g., leaked server logs, admin documentation for a self-hosted instance, or social engineering).\n\nPrivileges Required: Low — a valid user account with at least one registered environment is required; no admin privileges needed.\n\nUser Interaction: None.\n\nScope: Unchanged — the impact stays within the same server instance.\n\nConfidentiality Impact: None — no data is disclosed.\n\nIntegrity Impact: None — no data is improperly modified; the record is deleted (not corrupted).\n\nAvailability Impact: High — deleting a global frontend disrupts every public share routed through it on the instance, constituting a platform-wide availability impact.\n\nAffected Component\ncontroller/unaccess.go — unaccessHandler.Handle (line 56)","aliases":["CVE-2026-40304","GO-2026-5090"],"modified":"2026-06-25T18:56:36.803353971Z","published":"2026-04-16T21:09:23Z","database_specific":{"severity":"MODERATE","github_reviewed":true,"github_reviewed_at":"2026-04-16T21:09:23Z","nvd_published_at":"2026-04-17T22:16:32Z","cwe_ids":["CWE-284","CWE-863"]},"references":[{"type":"WEB","url":"https://github.com/openziti/zrok/security/advisories/GHSA-3jpj-v3xr-5h6g"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-40304"},{"type":"PACKAGE","url":"https://github.com/openziti/zrok"},{"type":"WEB","url":"https://github.com/openziti/zrok/releases/tag/v2.0.1"}],"affected":[{"package":{"name":"github.com/openziti/zrok","ecosystem":"Go","purl":"pkg:golang/github.com/openziti/zrok"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"last_affected":"1.1.11"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/04/GHSA-3jpj-v3xr-5h6g/GHSA-3jpj-v3xr-5h6g.json"}},{"package":{"name":"github.com/openziti/zrok/v2","ecosystem":"Go","purl":"pkg:golang/github.com/openziti/zrok/v2"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"2.0.1"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/04/GHSA-3jpj-v3xr-5h6g/GHSA-3jpj-v3xr-5h6g.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H"}]}