TL;DR: Two newly disclosed Spree IDORs show that autonomous traces can move beyond parameter fuzzing and surface object-level authorization failures hidden in business logic, according to Xbow Security Research. The real shift is that access-control assumptions built for static scanners are now being tested by systems that can reason across objects, states, and fallback paths.
At a glance
What this is: XBOW shows how autonomous testing can uncover IDORs by reasoning through object relationships, authentication state, and fallback paths instead of brute-force guessing.
Why it matters: For IAM and security teams, the lesson is that object-level authorization failures can persist in mature applications until a test system can follow the same access paths a human attacker would.
By the numbers:
- 91% of former employee tokens remain active after offboarding, leaving organisations vulnerable to potential security breaches.
- 85% of organisations lack full visibility into third-party vendors connected via OAuth apps , 38% have no or low visibility, and a further 47% have only partial visibility.
👉 Read Xbow’s security research on autonomous reasoning and Spree IDOR findings
Context
Insecure Direct Object References remain an identity and authorisation problem as much as an application bug. The failure appears when the system exposes an object, but does not prove that the authenticated subject, session, or token is entitled to that specific record, address, or order. That gap sits directly inside IAM boundaries because object access is still access control.
Autonomous testing changes the discovery model because it can traverse the same object lifecycle, role, and state assumptions that produce IDORs in the first place. In this article, XBOW is not the subject of the analysis so much as the method: reasoning across authenticated and unauthenticated states, enumerating object relationships, and validating whether the backend actually enforces object-level authorisation. That is a useful lens for teams that rely on policy intent but have weak runtime validation.
The article’s Spree findings are a reminder that mature frameworks can still ship with access-control flaws when object ownership, session state, and checkout logic are not tied together cleanly. For identity teams, the practical question is whether application security testing is able to prove entitlement at the object layer, not just whether the login flow works.
Key questions
Q: What breaks when object-level authorisation is missing in web applications?
A: The application may let a valid session read or modify records that belong to someone else. This usually happens when the backend trusts object IDs, address IDs, or order IDs without rechecking ownership. The result is cross-account data exposure even when login, role checks, and UI permissions appear to work.
Q: Why do IDOR flaws persist in modern applications?
A: They persist because they are design and business-logic failures, not obvious syntax errors. Developers often trust identifiers that arrive from the client, and scanners usually cannot infer ownership rules or workflow state. The result is a gap between what the application accepts and what it should allow.
Q: How do security teams test for IDOR effectively?
A: They should create multiple identities, generate separate objects for each one, and replay the same requests across roles, sessions, and workflow stages. Effective testing checks whether the returned object truly belongs to the requesting principal. That requires stateful reasoning, not just parameter fuzzing.
Q: Who is accountable when object references expose another user’s data?
A: Accountability is shared across application owners, IAM teams, and security engineering because the failure sits at the join between identity, workflow design, and data access. Controls like access review, secure code review, and runtime authorisation testing all matter, but the owning team must prove object-level entitlement.
Technical breakdown
Why IDOR is an authorisation failure, not just an input flaw
Insecure Direct Object References happen when a user can supply or infer an identifier for an object and the application fails to verify ownership or entitlement before returning that object. The bug is often mistaken for simple parameter tampering, but the deeper issue is broken object-level authorisation. In Spree, the exposed address and cart references show how business objects, not just URLs, need access checks. If the backend trusts the identifier alone, the visible interface can look correct while the policy layer silently fails.
Practical implication: test object ownership checks at every read and write path, not only at login and role assignment.
How autonomous reasoning changes vulnerability discovery
Traditional scanners look for known patterns in responses, but autonomous traces can model the application as a system of related objects. XBOW’s analysis shows a more human-like process: inspect the page, identify likely object stores, test alternate paths, then pivot when a request fails. That matters because IDORs often hide in fallback endpoints, nested resources, and workflow-specific state transitions. The technical advantage is not speed alone, but the ability to preserve context across multiple steps of exploration.
Practical implication: include test cases that simulate multi-step object discovery, not just single-request fuzzing.
Why multi-object checkout flows are fertile ground for IDOR
Checkout and profile workflows often mix session state, object identifiers, and cross-object references such as address IDs, order tokens, and bill-to links. If the API authorises one object in isolation but does not verify that the linked object belongs to the same principal, cross-account leakage becomes possible. The Spree example demonstrates this clearly: one cart token could reference another cart’s address object. That is a control failure at the join point between session authority and object authority.
Practical implication: validate linked identifiers as a set, especially where APIs stitch together cart, order, and address objects.
Threat narrative
Attacker objective: The objective is to read or manipulate another user’s object-linked data, such as addresses or checkout records, by abusing missing object-level authorisation.
- Entry occurs when a tester or attacker reaches authenticated or unauthenticated application endpoints that expose object identifiers in profile, address, or checkout flows.
- Escalation happens when the backend accepts an identifier for an object that belongs to another session or account without checking object ownership or entitlement.
- Impact follows when the application returns another user’s address or order-linked personal data, creating cross-account exposure of sensitive records.
Breaches seen in the wild
- Salesloft OAuth token breach — hackers stole OAuth tokens to access Salesforce data via Salesloft.
- Meta AI Instagram Account Takeover — 20,225 Instagram accounts hijacked via compromised Meta AI support chatbot with overprivileged access.
Read our 52 NHI Breaches Analysis report for a comprehensive view of breaches impacting Non-Human Identities including AI Agents.
NHI Mgmt Group analysis
Object-level authorisation is the real control boundary in modern web applications. Login success does not prove entitlement to a record, and role membership alone does not protect nested objects. The Spree findings show that APIs can still leak personal data when session authority is not revalidated at the object layer. Practitioners should treat every linked identifier as a separate access decision.
Autonomous testing is changing how IDORs are found, but not why they exist. The method is different because the tester can enumerate object graphs, follow fallback paths, and recover from false starts. The root cause remains the same: applications assume the right object will only ever be reached through the intended flow. That assumption fails when an endpoint accepts a foreign identifier and trusts it as proof of access. Security teams should assume their scanners are still missing entire classes of entitlement logic.
Identity blast radius expands when object ownership is weakly enforced. A single session token can become a bridge into unrelated records if the backend does not bind object references to principal context. That is a governance problem, not just a code defect, because access reviews and application approvals rarely validate object-link integrity. Teams should reframe IDOR as a lifecycle and entitlement issue that crosses IAM, appsec, and data protection.
Runtime validation must replace static trust in workflow state. The article’s multi-step traces show that business workflows create their own trust assumptions, especially in checkout and address management. Those assumptions are rarely rechecked after state changes, retries, or error handling. The result is a gap between what the interface suggests and what the backend authorises. Practitioners should treat stateful workflows as access-control surfaces, not just user experience paths.
Autonomous reasoning raises the bar for defensive testing, and that is the right direction. If a test system can reason about object relationships the way a human attacker would, hidden authorisation faults become visible sooner. That does not make the bug class new, but it does make exposure harder to ignore. The practitioner conclusion is straightforward: the standard for proving object security now has to include intelligent, state-aware testing.
From our research:
- 91% of former employee tokens remain active after offboarding, leaving organisations vulnerable to potential security breaches, according to The 2025 State of NHIs and Secrets in Cybersecurity.
- 62% of all secrets are duplicated and stored in multiple locations, causing unnecessary redundancy and increasing the risk of accidental exposure, according to NHI Mgmt Group research.
- For lifecycle controls, the NHI Lifecycle Management Guide shows why provisioning, rotation, and offboarding need to be tied to entitlement validation.
What this signals
Object entitlement drift: When application workflows allow one session to reference another object without a fresh ownership check, identity governance stops at the login layer and never reaches the data layer. That is why object-level authorisation needs to be treated as part of identity architecture, not just application hardening.
Teams that are building stronger IAM programmes should expect autonomous and human-like testing to uncover hidden joins between session state and object authority. The practical signal is simple: if your QA and DAST stack cannot prove that a foreign object ID fails under the right conditions, your entitlement model is still incomplete.
The next maturity step is to align application testing with lifecycle controls already recognised in identity programmes. When a session, token, or checkout object can outlive the assumptions behind it, the issue is no longer only secure coding. It becomes a governance problem across access review, workflow design, and data exposure boundaries.
For practitioners
- Map every object reference to an entitlement check Inventory APIs and UI flows where one object points to another, such as address IDs, order IDs, and profile records. Verify that each reference is authorised against the same principal and session context before read or write access is granted.
- Test authenticated and unauthenticated states separately Run the same object access tests with and without session cookies, then compare response codes, returned fields, and prefilled values. A 200 response in one state and a 403 in another can still indicate a broken unauthenticated path if the object remains readable.
- Add cross-object access cases to DAST and QA Build test cases that try foreign object IDs inside legitimate sessions, especially where checkout, billing, and profile data are linked. Include negative tests for cart tokens, address ownership, and nested resources so missing joins are caught before release.
- Review error handling for hidden fallback paths Check whether 502s, redirects, or partial failures expose alternate routes to the same object. Many IDORs surface when the application falls back to a different endpoint or view that was not covered by the primary access policy.
Key takeaways
- The article shows that IDOR is fundamentally an authorisation failure, not just a weak-input bug.
- Autonomous, state-aware testing can expose object-level flaws that conventional scanners miss because it follows workflow logic instead of single-request patterns.
- The control that matters most is binding every object reference to verified entitlement across the full request lifecycle.
Standards & Framework Alignment
This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.
OWASP Non-Human Identity Top 10 and MITRE ATT&CK address the attack and risk surface, while NIST CSF 2.0, NIST SP 800-53 Rev 5 and NIST Zero Trust (SP 800-207) set the governance and control requirements practitioners need to meet.
| Framework | Control / Reference | Relevance |
|---|---|---|
| OWASP Non-Human Identity Top 10 | NHI-01 | The article exposes missing object-level authorisation around sensitive references. |
| MITRE ATT&CK | TA0006 , Credential Access; TA0007 , Discovery | The trace uses discovery of object paths and access boundaries to reach sensitive data. |
| NIST CSF 2.0 | PR.AC-4 | Identity permissions must limit access to only authorised objects and records. |
| NIST SP 800-53 Rev 5 | AC-6 | Least privilege applies to object-level data access, not just login roles. |
| NIST Zero Trust (SP 800-207) | Zero Trust requires continuous verification of access, including object references. |
Use ATT&CK mapping to test discovery paths that reveal hidden object relationships and data access.
Key terms
- Insecure Direct Object Reference: Insecure direct object reference is an access control flaw where an application exposes an identifier that allows callers to reach records or objects they should not be able to access. In practice, it means the system trusts the request too much and fails to verify object-level permission on each access.
- Broken Object-Level Authorization: A failure to check whether an authenticated identity may access a specific object, record, or device. The request succeeds because the credential is valid, but the application does not enforce per-object entitlement. In NHI environments, this turns a legitimate token into cross-resource exposure.
- State-aware Testing: State-aware testing evaluates how an application behaves across session states, roles, retries, and alternate paths instead of checking one request in isolation. For access-control flaws, it is the difference between confirming that an endpoint responds and proving that the right identity can reach the right object.
- Identity Blast Radius: The amount of damage a compromised identity can cause across systems, data, and infrastructure. In NHI environments, it is shaped by permissions, network reach, and administrative capability rather than by the credential alone. Reducing blast radius is a containment strategy that limits lateral movement and data exposure.
What's in the full article
Xbow’s full security research covers the operational detail this post intentionally leaves for the source:
- Trace-by-trace breakdown of how the autonomous tester reasoned through each Spree endpoint
- Raw request and response evidence showing the address and checkout object joins that failed
- Step-by-step disclosure context for the two newly patched vulnerabilities in Spree v5.2.5
- The exact object references and payload structure used during the multi-cart validation
Deepen your knowledge
NHI governance, agentic AI identity, and machine identity lifecycle are core topics in our NHI Foundation Level course, the industry's only accredited NHI security programme. If you are building or maturing an IAM programme, it is worth exploring.
Published by the NHIMG editorial team on August 11, 2026.
NHI Mgmt Group — the independent authority on Non-Human Identity, IAM, and Agentic AI security. nhimg.org