CVE-2026-82411: Objects API: Cross-object-type authorization bypass on the object history-detail endpoint
Open Object provides an API and admin interface to manage objects and object types. From 2.4.3 until 2.5.1, 3.6.2, 4.0.2, and 4.1.1, a token scoped to read one ObjectType can read the full versioned record of an object of any other ObjectType via the history-detail endpoint GET /api/v2/objects/{uuid}/{index}. The historydetail action in src/objects/api/v2/views.py calls self.getqueryset() and getobjector404 directly instead of self.getobject(), so checkobjectpermissions and the per-object check in ObjectTypeBasedPermission.hasobjectpermission are not invoked. The queryset's filterfortoken applies only to the list and search actions, while ObjectTypeBasedPermission.haspermission allows non-create actions, leaving neither check to constrain history-detail records to the token's permitted ObjectType. The normal retrieve endpoint returns 403 for the same unauthorized object, and the sibling history action enforces the grant. Any valid non-superuser API token with a read grant on at least one ObjectType can therefore disclose another ObjectType's complete versioned object data, which can include citizen or case records and sensitive identifiers in government deployments. This issue is fixed in versions 2.5.1, 3.6.2, 4.0.2, and 4.1.1.
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 2.5.1 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 3.6.2 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 4.0.2 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 4.1.1