Description
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 `history_detail` action in `src/objects/api/v2/views.py` calls `self.get_queryset()` and `get_object_or_404` directly instead of `self.get_object()`, so `check_object_permissions` and the per-object check in `ObjectTypeBasedPermission.has_object_permission` are not invoked. The queryset's `filter_for_token` applies only to the list and search actions, while `ObjectTypeBasedPermission.has_permission` 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.
References9
- github.com/maykinmedia/open-object/commit/11c5b85ea5d1d80f94088…
- github.com/maykinmedia/open-object/commit/27e806eff04c52ebe1e78…
- github.com/maykinmedia/open-object/commit/6154d9c2ed8c162b61f2d…
- github.com/maykinmedia/open-object/commit/ce6b1820619c843748bc5…
- github.com/maykinmedia/open-object/security/advisories/GHSA-55w…
- github.com/maykinmedia/open-object/tree/2.5.1
- github.com/maykinmedia/open-object/tree/3.6.2
- github.com/maykinmedia/open-object/tree/4.0.2
- github.com/maykinmedia/open-object/tree/4.1.1
Metrics
- CVSS 3.1
-
6.5
MEDIUM
Score source: CNA
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N - EPSS — exploit probability
- 0% percentile: 24 · as of 7 November 2026
- CWE
- CWE-639
Could this be exploited in your environment?
A patch closes the known hole. A penetration test shows what an attacker can still reach — with proof.