By NHI Mgmt Group Editorial TeamDomain: Cyber SecuritySource: EquixlyPublished March 26, 2026

TL;DR: Code analysis can identify insecure patterns, but it cannot determine what attackers can actually do with a running application, according to Equixly. Runtime flaws such as broken object-level authorisation, business logic abuse, undocumented APIs, and multi-step exploit chains require continuous offensive testing because the decisive risk appears only in production.


At a glance

What this is: This analysis argues that SAST and SCA stop at code visibility, while exploitable risk often emerges only at runtime.

Why it matters: It matters because IAM-adjacent authorisation failures, API abuse, and workflow misuse can expose sensitive access paths that static controls never validate.

👉 Read Equixly's analysis of why runtime testing closes the AppSec gap


Context

Static analysis is useful, but it is not a complete application security model because it cannot observe how an application behaves once authentication, business logic, and APIs are exercised together. In practice, many of the highest-impact failures sit in runtime authorisation and workflow abuse rather than in code patterns that scanners can recognise.

For identity and access teams, that distinction matters because application risk often becomes identity risk at the point where a valid session is misused, a role is over-trusted, or an API exposes data outside its intended boundary. That is the same governance problem seen in broken authorisation and credential-led abuse, and it is why runtime validation belongs in the control stack.


Key questions

Q: How should security teams test authorisation in web applications?

A: Use role-aware test cases that vary object ownership, session state, and user privileges. The goal is to prove that access checks hold at runtime, especially for IDOR and BOLA scenarios where a user can reach an object they should not see or modify. Static input validation alone is not enough.

Q: Why do code scanners miss many API security issues?

A: Code scanners miss many API issues because the vulnerability appears only when requests are chained, sequenced, or executed under real application state. The code may look correct in isolation, but the live system can still expose business logic abuse, timing flaws, or undocumented endpoints that no static pattern reveals.

Q: What do teams get wrong about SAST and SCA?

A: They often treat SAST and SCA as a complete risk picture when they are really early signals. SAST tells you what looks dangerous in code, and SCA tells you what you shipped, but neither proves whether attackers can reach the flaw in production. Reachability still has to be tested separately.

Q: When should organisations add runtime testing to application security programmes?

A: Organisations should add runtime testing whenever applications depend on APIs, multiple services, partner integrations, or complex business workflows. Those environments create attack paths that only appear in execution. If an application can change behaviour between scans, it needs continuous validation rather than periodic confirmation.


Technical breakdown

Why SAST cannot see broken object-level authorisation

SAST works by analysing source code for insecure patterns, dangerous sinks, and known vulnerability signatures. Broken object-level authorisation is different: the code may authenticate the user correctly and still permit access to another user’s data if the application trusts a manipulable object identifier. There is no universal static pattern that proves the request is wrong, because the flaw depends on business context, data ownership, and runtime request handling. That is why this class of issue often survives code review and static scanning intact.

Practical implication: validate object access at runtime and test authorisation decisions against real identities and object references.

How business logic abuse emerges only during execution

Business logic abuse happens when an attacker uses the application exactly as designed, but in a sequence or combination that the developers did not intend. Examples include stacking discounts, bypassing approval steps, or submitting concurrent requests that exploit timing gaps. Static tools do not model user intent, workflow state, or adversarial sequencing, so they cannot determine whether a legitimate API chain becomes unsafe when used creatively. This is a design-level weakness that only appears when the application is live and interactive.

Practical implication: test workflow abuse paths with adversarial scenarios, not only with code rules and dependency checks.

Why undocumented APIs create a runtime exposure layer

Undocumented endpoints, legacy services, and internal APIs exposed beyond their intended boundary often do not appear in the code paths that SAST prioritises. They exist because applications evolve faster than their inventories, especially in microservice and partner-integration environments. Once exposed, these interfaces become real attack surfaces even if they were never part of the original security design. The issue is not just missing documentation. It is that runtime architecture can outgrow the visibility model used by code-centric tooling.

Practical implication: discover and continuously revalidate live APIs so inventory matches the deployed attack surface.


Threat narrative

Attacker objective: The attacker wants to turn legitimate application behaviour into unauthorised access, data exposure, or business process abuse without tripping code-level alerts.

  1. Entry occurs through a valid application interface, exposed API, or workflow path that accepts normal user traffic.
  2. Escalation follows when the attacker manipulates authorisation logic, request sequencing, or object identifiers to reach data or actions outside the intended boundary.
  3. Impact is achieved through data exposure, unauthorised transactions, or control of business workflows that the static toolchain never validated.

NHI Mgmt Group analysis

Runtime exposure is the real blind spot in code-centric AppSec. Static analysis can reduce code defects, but it does not model what an attacker can achieve once authentication, workflow state, and API sequencing come into play. The practical governance problem is not visibility into source code alone, but visibility into the behaviour that source code produces under pressure. Security leaders should treat runtime validation as a separate control plane, not an enhancement to static scanning.

Authorization failure is increasingly an identity problem, not just an application problem. When a valid session can access the wrong object, the failure is about trust in the authenticated context as much as it is about insecure code. That makes this topic relevant to IAM and identity governance teams because broken access assumptions in applications often bypass central identity controls. A mature programme needs to test whether identity decisions still hold after the request reaches the app.

Inside-out and outside-in testing are complementary because they answer different questions. Code analysis tells you what is wrong in the artefacts you shipped, while offensive runtime testing tells you what an attacker can do with the system you actually deployed. That distinction matters most in microservice and API-heavy environments where business logic lives across services and third-party integrations. Practitioners should align both approaches to the same risk model rather than treating one as a substitute for the other.

Runtime gap management is now a named security concept worth tracking. The gap between what the codebase contains and what production behaviour exposes is where exploitation increasingly concentrates. This is especially true when APIs, partner connections, and workflow state evolve faster than security review cycles. The implication for the field is clear: application security needs continuous behavioural assurance, not occasional confirmation that code patterns look safe.

What this signals

Runtime validation is becoming a necessary control layer for any programme that depends on APIs, microservices, and fast release cycles. Static security remains essential, but it no longer provides enough assurance on its own when the application’s behaviour changes after code review and before the next assessment.

Runtime gap management: the distance between what code analysis can prove and what production behaviour permits is now a durable risk category. Teams should expect more emphasis on behavioural testing, exploit validation, and API discovery as part of the normal control stack, especially where access decisions depend on live sessions and workflow state.

For identity-led programmes, the lesson is that application security and access governance increasingly overlap at the point of enforcement. If an app can let a valid identity do the wrong thing, then identity assurance has to extend beyond authentication into runtime authorisation and continuous verification.


For practitioners

  • Map runtime authorisation checks Trace where object ownership, role checks, and business permissions are enforced after login, then test those paths with valid but mismatched identities. Focus on endpoints that return user-specific data, because broken object-level authorisation is usually exposed there first.
  • Build abuse cases for business workflows Create tests for discount stacking, approval bypass, concurrent submission, and other request sequences that a normal scanner will not model. Use real application state and authenticated sessions so the test proves whether the workflow can be abused in production.
  • Continuously inventory exposed APIs Compare documented interfaces with live endpoints, legacy services, and partner-facing paths that appear in production traffic but not in the specification. Re-run discovery after each release so undocumented APIs do not become persistent exposure.
  • Correlate static findings with exploitability Prioritise code findings only after a runtime check shows they can be abused in the deployed environment. That prevents teams from over-investing in theoretical severity while missing issues that are actually exploitable.

Key takeaways

  • SAST and SCA are necessary, but they cannot see every exploitable condition in a running application.
  • Runtime weaknesses such as broken authorisation, workflow abuse, and undocumented APIs require continuous behavioural testing.
  • Security teams should connect code analysis with exploit validation so the risks that matter in production are not missed.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

MITRE ATT&CK address the attack and risk surface, while NIST CSF 2.0, NIST SP 800-53 Rev 5 and CIS Controls v8 set the governance and control requirements practitioners need to meet.

FrameworkControl / ReferenceRelevance
MITRE ATT&CKTA0001 , Initial Access; TA0004 , Privilege Escalation; TA0008 , Lateral Movement; TA0009 , CollectionRuntime abuse and API chaining map to attacker technique progression in live applications.
NIST CSF 2.0PR.AC-4Runtime authorisation failures directly challenge access control enforcement.
NIST SP 800-53 Rev 5AC-6Least privilege is central when workflows allow more access than intended.
CIS Controls v8CIS-6 , Access Control ManagementAccess control governance is the main defence against workflow and API misuse.

Test whether access decisions still hold in production and close gaps where valid sessions can overreach.


Key terms

  • 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.
  • Business Logic Abuse: Business logic abuse occurs when an attacker uses a valid API in a way the application designer did not intend, such as exceeding limits, chaining actions, or misusing workflow assumptions. The API is functioning technically, but governance and policy are failing at the intent layer.
  • Runtime Security: Runtime security is the practice of detecting and constraining malicious behavior while software is executing. It focuses on live workload activity, not just code quality or pre-deployment checks, so teams can contain abuse after a system is already running.
  • Undocumented API: An interface that is active in production but was not intended to be publicly exposed or included in the formal specification. These endpoints often arise from legacy builds, service sprawl, or partner integrations, and they create hidden attack surface that static code tools may not reveal.

What's in the full article

Equixly's full blog post covers the operational detail this analysis intentionally leaves for the source:

  • How its Agentic AI Hacker validates live application behaviour across API sequences and workflow states.
  • Which runtime findings it prioritises as exploitable rather than theoretical.
  • How the Checkmarx integration surfaces exploit-validated results inside an existing AppSec workflow.
  • Where continuous offensive testing fits between code scan cycles in a release pipeline.

👉 The full Equixly post covers the runtime cases, workflow abuse examples, and integration details behind the argument.

Deepen your knowledge

The NHI Foundation Level course, the industry's only accredited NHI security programme, covers NHI governance, IAM, secrets management, and workload identity. It helps security practitioners connect identity control design to the broader governance challenges their programmes face.
NHIMG Editorial Note
Published by the NHIMG editorial team on August 19, 2026.
NHI Mgmt Group — the independent authority on Non-Human Identity, IAM, and Agentic AI security. nhimg.org