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 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.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- Low
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- None
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
6.5
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 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.
- Record
CVE-2026-82411- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-639
- Updated
- 2026-11-02
EUVDEUVD-2026-112551
6.5
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.
- Record
EUVD-2026-112551- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N - Updated
- 2026-11-02
NVD
6.5
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.
- Record
CVE-2026-82411- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-639
- Updated
- 2026-11-02
OSV
6.5
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 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.
- Record
CVE-2026-82411- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-639
- Updated
- 2026-11-02
Affected products
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | CVE List, EUVD, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-82411 is a medium vulnerability (CVSS 6.5) in Maykinmedia Open-object, published October 28, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.31%, the 23rd percentile. No source names a fixed version.
References
github.com/maykinmedia/open-object/security/advisories/GHSA-55w6-rqp5-j5wx
github.com/maykinmedia/open-object/commit/11c5b85ea5d1d80f940883f01b8b8ea80ccdd47c
github.com/maykinmedia/open-object/commit/27e806eff04c52ebe1e78126c288b63fc0308b52
github.com/maykinmedia/open-object/commit/6154d9c2ed8c162b61f2d42db2de4eda5081347f
github.com/maykinmedia/open-object/commit/ce6b1820619c843748bc5231597aa7fc060d95fe
github.com/maykinmedia/open-object/tree/2.5.1