{"id":"CVE-2026-82411","state":"PUBLISHED","title":"Objects API: Cross-object-type authorization bypass on the object history-detail endpoint","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.","publishedAt":"2026-10-28T22:40:13.728Z","updatedAt":"2026-10-29T17:20:57.039Z","severity":{"score":6.5,"label":"Medium","version":"3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N","source":"GitHub_M"},"assigner":"GitHub_M","products":["maykinmedia open-object"],"affected":[{"vendor":"maykinmedia","product":"open-object","versions":[{"version":">= 2.4.3, < 2.5.1","status":"affected"},{"version":">= 3.0.0, < 3.6.2","status":"affected"},{"version":">= 4.0.0-rc.1, < 4.0.2","status":"affected"},{"version":">= 4.1.0, < 4.1.1","status":"affected"}]}],"references":["https://github.com/maykinmedia/open-object/security/advisories/GHSA-55w6-rqp5-j5wx","https://github.com/maykinmedia/open-object/commit/11c5b85ea5d1d80f940883f01b8b8ea80ccdd47c","https://github.com/maykinmedia/open-object/commit/27e806eff04c52ebe1e78126c288b63fc0308b52","https://github.com/maykinmedia/open-object/commit/6154d9c2ed8c162b61f2d42db2de4eda5081347f","https://github.com/maykinmedia/open-object/commit/ce6b1820619c843748bc5231597aa7fc060d95fe","https://github.com/maykinmedia/open-object/tree/2.5.1","https://github.com/maykinmedia/open-object/tree/3.6.2","https://github.com/maykinmedia/open-object/tree/4.0.2","https://github.com/maykinmedia/open-object/tree/4.1.1"],"weaknesses":["CWE-639"],"ingestedAt":"2026-10-29T20:13:15.269Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/82xxx/CVE-2026-82411.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-82411","state":"PUBLISHED","datePublished":"2026-10-28T22:40:13.728Z","dateUpdated":"2026-10-29T17:20:57.039Z","assignerShortName":"GitHub_M","assignerOrgId":"a0819718-46f1-4df5-94e2-005712e83aaa","dateReserved":"2026-08-28T22:00:43.514Z"},"containers":{"cna":{"title":"Objects API: Cross-object-type authorization bypass on the object history-detail endpoint","descriptions":[{"lang":"en","value":"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."}],"affected":[{"vendor":"maykinmedia","product":"open-object","versions":[{"version":">= 2.4.3, < 2.5.1","status":"affected"},{"version":">= 3.0.0, < 3.6.2","status":"affected"},{"version":">= 4.0.0-rc.1, < 4.0.2","status":"affected"},{"version":">= 4.1.0, < 4.1.1","status":"affected"}]}],"references":[{"url":"https://github.com/maykinmedia/open-object/security/advisories/GHSA-55w6-rqp5-j5wx","name":"https://github.com/maykinmedia/open-object/security/advisories/GHSA-55w6-rqp5-j5wx","tags":["x_refsource_CONFIRM"]},{"url":"https://github.com/maykinmedia/open-object/commit/11c5b85ea5d1d80f940883f01b8b8ea80ccdd47c","name":"https://github.com/maykinmedia/open-object/commit/11c5b85ea5d1d80f940883f01b8b8ea80ccdd47c","tags":["x_refsource_MISC"]},{"url":"https://github.com/maykinmedia/open-object/commit/27e806eff04c52ebe1e78126c288b63fc0308b52","name":"https://github.com/maykinmedia/open-object/commit/27e806eff04c52ebe1e78126c288b63fc0308b52","tags":["x_refsource_MISC"]},{"url":"https://github.com/maykinmedia/open-object/commit/6154d9c2ed8c162b61f2d42db2de4eda5081347f","name":"https://github.com/maykinmedia/open-object/commit/6154d9c2ed8c162b61f2d42db2de4eda5081347f","tags":["x_refsource_MISC"]},{"url":"https://github.com/maykinmedia/open-object/commit/ce6b1820619c843748bc5231597aa7fc060d95fe","name":"https://github.com/maykinmedia/open-object/commit/ce6b1820619c843748bc5231597aa7fc060d95fe","tags":["x_refsource_MISC"]},{"url":"https://github.com/maykinmedia/open-object/tree/2.5.1","name":"https://github.com/maykinmedia/open-object/tree/2.5.1","tags":["x_refsource_MISC"]},{"url":"https://github.com/maykinmedia/open-object/tree/3.6.2","name":"https://github.com/maykinmedia/open-object/tree/3.6.2","tags":["x_refsource_MISC"]},{"url":"https://github.com/maykinmedia/open-object/tree/4.0.2","name":"https://github.com/maykinmedia/open-object/tree/4.0.2","tags":["x_refsource_MISC"]},{"url":"https://github.com/maykinmedia/open-object/tree/4.1.1","name":"https://github.com/maykinmedia/open-object/tree/4.1.1","tags":["x_refsource_MISC"]}],"metrics":[{"cvssV3_1":{"attackComplexity":"LOW","attackVector":"NETWORK","availabilityImpact":"NONE","baseScore":6.5,"baseSeverity":"MEDIUM","confidentialityImpact":"HIGH","integrityImpact":"NONE","privilegesRequired":"LOW","scope":"UNCHANGED","userInteraction":"NONE","vectorString":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N","version":"3.1"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-639","lang":"en","description":"CWE-639: Authorization Bypass Through User-Controlled Key","type":"CWE"}]}],"providerMetadata":{"shortName":"GitHub_M","orgId":"a0819718-46f1-4df5-94e2-005712e83aaa","dateUpdated":"2026-10-28T22:40:13.728Z"},"source":{"advisory":"GHSA-55w6-rqp5-j5wx","discovery":"UNKNOWN"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2026-10-29T15:30:00.984556Z","id":"CVE-2026-82411","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-10-29T17:20:57.039Z"}}]}}}