Our AI strategy for preemptive security
A runtime SBOM is a software bill of materials enriched with runtime evidence about which components, libraries, packages, and code paths are actually loaded or executed by an application.
NIST defines an SBOM (software bill of materials) as a formal record containing the details and supply chain relationships of the components used in building software, since developers typically assemble products from existing open-source and commercial components rather than building everything from scratch. That inventory is essential, but it’s static: it describes what could be present, not what actually runs. A runtime SBOM closes that gap by observing the application in motion and correlating what’s actually loaded and exercised against the static inventory.
Bugcrowd’s take: A static SBOM tells teams what software may be present. A runtime SBOM helps reveal what code is actually used, reachable, and relevant to exploitability. That makes it a bridge between supply-chain inventory and offensive validation.
Definition: A runtime SBOM takes the standard component inventory a static SBOM or software composition analysis (SCA) tool produces and augments it with dynamic evidence, observed from the running application, about which of those components are actually loaded, called, or exercised in practice.
How it extends a traditional SBOM: A traditional SBOM answers “what’s in this build.” A runtime SBOM answers a follow-up question static tooling can’t: “of everything in this build, what’s actually used when the application runs.” It doesn’t replace the static inventory, it ingests it and adds a layer of behavioral evidence on top.
Why runtime evidence matters: Not every component listed in an SBOM is equally relevant to risk. A vulnerable library that’s present in a container image but never loaded, or a code path that exists but is never reachable in practice, poses a fundamentally different level of risk than a vulnerable component that’s actively running in production. Runtime evidence is what lets teams tell those two situations apart.
A standard SBOM typically documents:
These terms describe different points in a component’s lifecycle, and it’s worth being precise about each:
Reachable vulnerabilities are higher priority. A vulnerability in a component that’s confirmed loaded and actively exercised at runtime represents a materially higher-priority risk than the same vulnerability sitting in a component that’s present but never invoked.
Non-executed vulnerable components may still matter, but should be ranked differently. A component that isn’t currently reachable can still become reachable later, through a configuration change, a new feature, or a code path that starts getting exercised, so it shouldn’t be dismissed outright. It should simply be triaged with a different urgency than something confirmed active in production today.
Runtime evidence improves remediation decisions. Knowing not just that a vulnerability exists but where and how the affected component is actually used gives a remediation team a running start: which code path to investigate, whether the exposure is realistic, and how urgently it needs to be patched.
Runtime visibility depends on exercised paths. A runtime SBOM can only observe what actually executes during the observation window. Code paths that never run during that window won’t be reflected, even if they’d be exercised under different conditions.
Test coverage matters. The quality of runtime SBOM data is tied to how thoroughly the application has been exercised, whether through real production traffic, realistic test scenarios, or both. Thin coverage produces a thin, potentially misleading runtime picture.
Runtime SBOMs should complement, not replace, static SBOMs and SCA. A runtime SBOM has no way to describe a component that’s present in a build but has literally never been observed running. Static inventory remains the ground truth for what could theoretically be exposed; runtime evidence narrows and prioritizes that ground truth rather than substituting for it.
Bugcrowd positions runtime SBOM data as an input to adversarial validation, feeding a single underlying question: is the vulnerable component present, loaded, reachable, and exploitable? Each of those four words describes a distinct, increasingly rigorous level of confidence, and a runtime SBOM is what moves a finding from “present” toward “loaded” and “reachable.”
Savant Runtime (formerly Mayhem Dynamic SBOM) is built by Bugcrowd’s Mayhem team to do exactly this. It deploys an observability service in userland, alongside the container engine running an application, with no kernel modules or code changes required. That service watches containers behave in the real world and builds a historical record of what’s actually loaded and used. It then ingests SBOM and SCA reports from existing tools (supporting formats like SPDX, CycloneDX, and SARIF, and integrations including Anchore, Docker Scout, and Trivy) and annotates each reported finding with runtime evidence: whether the vulnerable component was observed in use, and where. Bugcrowd reports this correlation cuts roughly 80% of the false positives that come from static analysis alone, by pinpointing the issues that only emerge, or only matter, at runtime, while also generating the attestations, VEX, and SARIF exports needed for compliance reporting.
Is a runtime SBOM required for compliance? Not on its own, but it increasingly supports compliance obligations. Frameworks tied to Executive Order 14028, NIST guidance, and the Secure Software Development Framework (SSDF) require organizations to maintain a detailed SBOM; a runtime SBOM isn’t a separate mandate but a way to generate stronger evidence and justifications (including VEX reports) in support of those existing requirements.
How is a runtime SBOM different from SCA? Software composition analysis (SCA) typically identifies known vulnerabilities in the components listed in a static SBOM, based on what’s present in the code or build. A runtime SBOM adds a behavioral layer on top: it observes the actual running application to determine whether those same components are loaded and exercised in practice, not just present.
Can a runtime SBOM prove exploitability? Not by itself. A runtime SBOM confirms that a component is loaded and reachable, which is a necessary condition for exploitability but not sufficient proof of it. Confirming genuine exploitability typically requires pairing runtime evidence with active validation, such as fuzzing or adversarial testing, that actually attempts to trigger the vulnerable behavior.
Does a runtime SBOM reduce vulnerability noise? Yes, substantially. By distinguishing components that are merely present from those confirmed active at runtime, a runtime SBOM lets teams filter out a large share of theoretical findings and focus triage effort on the smaller set of vulnerabilities with real, observed exposure.
How often should runtime SBOM data be updated? As continuously as the application runs. Because runtime behavior can shift with new deployments, configuration changes, or usage patterns, runtime SBOM observation is most useful as an ongoing, continuous process rather than a periodic snapshot, so the data reflects how the application is behaving now, not how it behaved at some earlier point in time.
Sources:
NIST Computer Security Resource Center: SBOM Glossary Mayhem Documentation: Dynamic SBOM with Mayhem Bugcrowd: Bugcrowd Acquires Mayhem Security
Hackers aren’t waiting, so why should you? See how Bugcrowd can quickly improve your security posture.