Teams often assume production defenses will catch problems introduced earlier, but the article shows that is too late for logic flaws and malicious dependencies. By the time code is deployed, the vulnerable path may already be merged, packaged, and ready to run. The better approach is to detect exploitable issues in pull requests and dependency checks.
Why Runtime Security Is the Wrong Place to Expect First Detection
Runtime security can still be valuable, but it is a late control plane for application risk. It observes behaviour after code, dependencies, and configuration have already crossed into deployable form. That means it may help with blocking suspicious execution, but it does not reliably surface logic flaws, unsafe library choices, or risky changes that were already introduced upstream in the delivery pipeline. The control gap is often one of timing, not intent.
Teams get into trouble when they treat runtime monitoring as proof that build-time review, dependency scrutiny, and pull request analysis can be relaxed. A problem that is already merged, packaged, and deployed is far harder to unwind than one caught before release. For application risk, the real failure is assuming production is the earliest safe place to discover a defect. In practice, many teams learn that lesson only after an exploitable path has already been shipped.
How It Works in Practice
Runtime controls are best understood as last-mile detection and containment. They can flag suspicious process activity, abnormal requests, unexpected file access, container escapes, or other signs that an application is being misused. That makes them useful for confirmation, response, and blast-radius reduction. They are much less effective at proving that the application itself is safe to deploy, because many of the highest-impact issues are static or semantic problems that do not announce themselves cleanly at runtime.
That distinction matters in modern delivery pipelines. A malicious or risky dependency can be introduced through a package update, transitive library, or build artifact long before production sees anything unusual. Likewise, application logic can be wrong even when the code executes exactly as written. Runtime telemetry may never tell you that an authorisation check is missing, a dependency was tampered with, or a control was bypassed in a rarely used branch.
- Use pull request review to catch risky code paths before merge.
- Use dependency checks to identify untrusted, vulnerable, or changed packages before they reach release.
- Use runtime security to detect exploitation attempts, unexpected behaviour, and containment opportunities after deployment.
- Treat runtime signals as evidence of exposure, not as a substitute for release-time assurance.
Runtime security therefore works best as part of a layered process, where earlier gates remove preventable defects and runtime tools handle residual risk. NIST SP 800-190 Container Security is a useful reference point here because it separates image, registry, orchestrator, and runtime concerns rather than collapsing all risk into the running workload. These controls tend to break down when teams assume that a healthy runtime view means the code and dependencies were safe to ship.
Common Variations and Edge Cases
Tighter runtime enforcement often increases operational overhead, so organisations have to balance containment against false positives and performance cost. That tradeoff becomes sharper in fast-moving delivery environments, where teams may be tempted to rely on runtime tools because they are visible in production and easier to centralise than review discipline.
One common edge case is treating observability as prevention. A tool can detect abnormal behaviour and still miss the underlying cause if the application’s trust assumptions were already broken in the build. Another is assuming container policy or workload protection will catch every dependency problem. It will not, because a dependency can be technically valid, operationally reachable, and still unsafe from a business or security perspective.
For that reason, the better operational question is not whether runtime security is useful, but what class of risk it can actually answer. If the concern is exploit detection, containment, or incident triage, runtime controls are appropriate. If the concern is whether a change should be allowed to ship at all, the decision belongs earlier in the lifecycle, before production has to absorb the failure.
Standards & Framework Alignment
This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.
NIST CSF 2.0 and CIS Controls v8 set the governance and control requirements practitioners need to meet.
| Framework | Control / Reference | Relevance |
|---|---|---|
| NIST CSF 2.0 | PR.DS — Data Security | Controls delivery-path risk before runtime exposure. |
| DE.CM — Continuous Monitoring | Supports runtime detection of abnormal behaviour after deployment. | |
| PR.IP — Information Protection Processes and Procedures | Covers disciplined change and dependency handling in the delivery process. | |
| Recommendation — Shift assurance earlier in the lifecycle and protect code and dependency integrity before release. Use runtime monitoring to detect exploitation and containment needs, not as the first line of assurance. Enforce secure change and dependency procedures so risky code does not reach production unnoticed. | ||
| CIS Controls v8 | 16 — Application Software Security | Addresses testing and secure release of application changes before deployment. |
| 2 — Inventory and Control of Software Assets | Helps manage approved software and dependency exposure across the pipeline. | |
| Recommendation — Embed pre-release testing and review to catch exploitable defects before production. Maintain authoritative software inventories and block unapproved or risky components from release. | ||
Practitioner Guidance
What to prioritise: Put the strongest assurance at the earliest point where the issue is still cheap to fix. If the defect could be introduced in code review or dependency selection, require a pre-merge control rather than hoping runtime monitoring will discover it later.
What to verify: Check whether your runtime stack is being asked to do jobs it cannot do well, especially semantic validation, dependency trust decisions, and release approval. It should confirm and contain, not certify that a deployable path is safe.
Decision rule: If a control only sees the problem after deployment, do not count it as the primary prevention layer for application risk. Use it as compensating detection, and keep release gating focused on source, build, and dependency hygiene.
Practitioner takeaway: The most common mistake is confusing “we can see it in production” with “we would have prevented it in time”; those are different security outcomes, and only the second one reduces shipped risk.
Related resources from NHI Mgmt Group
- What do security teams get wrong about static scanning for modern application risk?
- What do security teams get wrong about measuring application risk maturity?
- What do security teams get wrong about relying on manual code review for modern application security?
- What do security teams get wrong about using out-of-the-box detections for cloud and application risk?