# Broken ownership check in DELETE /api/v2/unaccess allows non-admin to delete global frontend records

**URL:** <https://openziti.discourse.group/t/broken-ownership-check-in-delete-api-v2-unaccess-allows-non-admin-to-delete-global-frontend-records/5778>\
**Category:** Security Adivsories\
**Created:** [April 16, 2026, 2:53pm UTC](https://openziti.discourse.group/t/broken-ownership-check-in-delete-api-v2-unaccess-allows-non-admin-to-delete-global-frontend-records/5778 "2026-04-16T14:53:19Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![mike.gorman](https://yyz2.discourse-cdn.com/free1/user_avatar/openziti.discourse.group/mike.gorman/32/7_2.png) [@mike.gorman](https://openziti.discourse.group/u/mike.gorman)\
**Post date:** [April 16, 2026, 2:53pm UTC](https://openziti.discourse.group/t/broken-ownership-check-in-delete-api-v2-unaccess-allows-non-admin-to-delete-global-frontend-records/5778/1 "2026-04-16T14:53:19Z")

</div>

## CVE-2026-40304

Summary  
The 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.

Attack Vector: Network — the endpoint is a standard HTTP API call.

Attack 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).

Privileges Required: Low — a valid user account with at least one registered environment is required; no admin privileges needed.

User Interaction: None.

Scope: Unchanged — the impact stays within the same server instance.

Confidentiality Impact: None — no data is disclosed.

Integrity Impact: None — no data is improperly modified; the record is deleted (not corrupted).

Availability Impact: High — deleting a global frontend disrupts every public share routed through it on the instance, constituting a platform-wide availability impact.

Affected Component  
controller/unaccess.go — unaccessHandler.Handle (line 56)

Affected Versions \> 0.3.0 \< 2.0.1  
CVSS 3.1 Score 5.3 Moderate  
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H
