# 19. DevSecOps, Application Security, Software Supply Chain

Share
# 19. DevSecOps, Application Security, Software Supply Chain

We arrive at the topic that organizations most commonly skip until something goes very wrong. Application security and software supply chain risk sit at the intersection of development, operations, and security, and that intersection is where some of the largest, most consequential breaches of the last decade originated.


Context: Three incidents that defined why this topic belongs at the table:

  • SolarWinds (2020), attackers compromised the build pipeline of a trusted software vendor and inserted a backdoor into signed, legitimate software updates delivered to 18,000 organizations. The attack surface wasn't a vulnerability in your environment, it was in code you trusted implicitly.
  • Log4Shell (2021), a critical vulnerability in Log4j, a logging library embedded in thousands of applications, often without anyone knowing it was there. The attack surface was invisible because nobody had tracked their software dependencies.
  • XZ Utils (2024), a multi-year social engineering campaign targeting an open-source project maintainer, inserting a sophisticated backdoor into a component deployed across Linux infrastructure worldwide. The attack surface was a person trusted by the community.

The pattern: the software your organization runs, whether you wrote it, bought it, or inherited it, is an attack surface. The supply chain of that software extends to every library, dependency, build tool, and development platform involved in creating it. Most organizations have limited visibility into any of this.

This topic covers two related disciplines:

  • Application Security (AppSec), securing the software your organization develops or deploys: finding and fixing vulnerabilities in code, ensuring secure development practices, testing applications before deployment.
  • Software Supply Chain Security, understanding and securing the provenance and integrity of software components: dependencies, open-source libraries, build pipelines, code signing, and the software you receive from third parties.

The market spans:

  • SAST (Static Application Security Testing), analysis of source code for vulnerabilities before runtime. Semgrep, Checkmarx, Veracode, Snyk Code.
  • DAST (Dynamic Application Security Testing), testing running applications for vulnerabilities. Burp Suite, OWASP ZAP, Qualys WAS, StackHawk.
  • SCA (Software Composition Analysis), identifying open-source and third-party components and their known vulnerabilities. Snyk, Black Duck, OWASP Dependency-Track, Mend.
  • SBOM (Software Bill of Materials), a structured inventory of all components in a software product. Required by US Executive Order 14028 for federal suppliers; increasingly mandated or expected across regulated industries.
  • Secrets scanning, detecting credentials, API keys, and sensitive data accidentally committed to code repositories. GitGuardian, TruffleHog, GitHub Advanced Security.
  • Pipeline security, securing CI/CD infrastructure itself, code signing, build reproducibility, artifact integrity.

The core question for any AppSec or supply chain security investment: "Do we actually know what's in our software, where it came from, whether it's been tampered with, and are we finding problems before attackers do?"


14 Questions to Ask AppSec and Software Supply Chain Vendors

1. "What specifically do you test or monitor, source code, dependencies, running applications, build pipelines, containers, or all of the above? And what are you not designed for?"
Why: The AppSec vendor market is fragmented, and the coverage of different tools is often non-obvious from marketing materials. SAST doesn't catch what DAST catches; SCA doesn't catch what secrets scanning catches. Force the vendor to be precise about their scope and explicit about the gaps you own.
Good answer: Clear capability map with honest scope boundaries, recommended complementary tools for coverage gaps. Red flag: "We provide comprehensive application security" without a capability breakdown.

2. "How do you integrate into our development workflow, where in the pipeline do findings appear, and is the developer experience good enough that teams will actually use it?"
Why: Application security tools fail not because they don't find things but because developers don't use them, ignore their output, or work around them. A tool that runs at the end of the pipeline and produces a 500-finding report that lands in a JIRA queue nobody manages is security theater. Developer-native integration, IDE plugins, PR checks, meaningful triage, determines whether the tool actually changes behavior.
Good answer: IDE integration, PR/merge request blocking or alerting, developer-friendly remediation guidance, false positive suppression that respects developer time. Red flag: "We provide API access so you can integrate it wherever you want" (= you build the integration yourself).

3. "What's your false positive rate by finding type, and what controls do developers have to suppress findings they've reviewed and accepted?"
Why: Application security tools are notorious for high false positive rates that cause alert fatigue and developer resentment. A SAST tool that surfaces 400 findings per scan, most of which are false positives or accepted risks, gets turned off or ignored. The suppression and triage model matters as much as the detection capability.
Good answer: Published FP rates by language and finding type, analyst/developer-driven suppression with audit trail, ML-assisted triage, risk acceptance workflows. Red flag: "Our accuracy is industry-leading" without published data.

4. "How do you handle the full dependency graph, not just direct dependencies but transitive ones, and not just npm/pip but containers, OS packages, and infrastructure-as-code?"
Why: Log4j was a transitive dependency for most of the applications it affected, nobody had directly included it, but something they included had included it. Modern applications have dependency trees hundreds of levels deep. A tool that only scans direct dependencies is missing most of the exposure.
Good answer: Full dependency graph analysis including transitive dependencies, multi-ecosystem support (npm, PyPI, Maven, NuGet, Alpine, Debian, container layers), IaC scanning. Red flag: "We scan your package manifest files" (direct dependencies only).

5. "Can you produce an SBOM, Software Bill of Materials, for our applications? What format, how complete, and how does it stay current as code changes?"
Why: SBOM requirements are expanding rapidly. US Executive Order 14028 mandated SBOMs for federal software suppliers. EU Cyber Resilience Act introduces similar requirements. Even outside regulatory mandates, an SBOM is the foundation of supply chain visibility, you can't manage risk in components you haven't inventoried.
Good answer: SBOM generation in CycloneDX or SPDX format, continuous updating as code changes, integration with vulnerability databases, export for customer consumption. Red flag: "SBOM is on our roadmap" for any vendor positioned in the supply chain space.

6. "How do you handle secrets in code, credentials, API keys, connection strings, private keys accidentally committed to repositories?"
Why: Secrets in source code are one of the most common and costly security mistakes. A developer commits an AWS access key to a GitHub repository; automated scanners find it in seconds; the account is compromised before the team even knows it happened. This requires dedicated scanning, real-time alerting, and historical repository scanning, not just checking new commits.
Good answer: Real-time pre-commit scanning, historical repository analysis, alert on public exposure within minutes, validity checking to confirm secrets are still active. Red flag: "We detect secrets in code" without specifying real-time vs. periodic scanning and historical coverage.

7. "How do you secure the CI/CD pipeline itself, build servers, artifact registries, deployment automation, and the credentials that make them work?"
Why: The SolarWinds attack targeted the build pipeline, not the application code. A compromised build server can insert malicious code into otherwise-legitimate artifacts; a compromised artifact registry can serve malicious packages; a stolen deployment credential can push anything to production. The pipeline is a crown jewel that most organizations under-protect.
Good answer: Pipeline security scanning (Semgrep supply chain rules, Scorecard, StepSecurity), artifact signing and verification (Sigstore, Cosign), secrets management for pipeline credentials, pipeline-as-code security review. Red flag: "We scan the code in the pipeline" (not the pipeline infrastructure itself).

8. "What's your approach to open-source component vetting, before a developer adopts a new library, what controls exist?"
Why: XZ Utils demonstrated that even long-trusted open-source components can be compromised over time through maintainer social engineering. But the more common problem is developers adopting new, poorly-maintained, or malicious packages without review. A dependency firewall or package approval workflow is a preventive control that most organizations lack entirely.
Good answer: Package reputation scoring, malicious package detection, transitive maintainer risk analysis, policy enforcement on allowed package sources, alerts on new dependency adoption. Red flag: "We scan what's already in your code" without addressing what gets added to the code.

9. "How do you prioritize findings, by CVSS score alone, or by actual reachability, exploitability, and business context?"
Why: SCA tools routinely surface thousands of CVEs across application dependencies. The vast majority are not exploitable in practice, either the vulnerable code path is never reached, the vulnerability requires conditions that don't exist in your environment, or it's theoretical rather than practically exploitable. CVSS-only prioritization sends developers chasing theoretical risks while real ones wait.
Good answer: Reachability analysis, EPSS (Exploit Prediction Scoring System) integration, KEV (Known Exploited Vulnerabilities) highlighting, business context overlay. Red flag: Ranking by CVSS score alone, or "we show you all critical and high findings."

10. "For DAST, how do you test APIs, authenticated sessions, and modern application architectures including microservices and GraphQL?"
Why: Traditional DAST was built for monolithic web applications with form-based login. Modern applications are API-first, often authenticated via OAuth/JWT, and built as collections of microservices. Many DAST tools handle traditional web apps well and modern API architectures poorly.
Good answer: Native API testing with OpenAPI/Swagger/Postman import, authenticated session support, microservices architecture support, GraphQL introspection and testing. Red flag: "We support all application types" tested against a traditional form-login demo only.

11. "How do you handle the developer security skills gap, not just finding vulnerabilities but helping developers understand what they are and how to fix them?"
Why: The most effective application security programs don't just detect and report, they educate. A finding with a technical description and a CVE number is only useful if the developer knows what to do with it. Contextual remediation guidance, in-IDE explanations, and just-in-time training dramatically improve fix rates.
Good answer: In-context remediation guidance in the IDE, specific fix recommendations, links to relevant secure coding guidance, optional training integration. Red flag: "We provide findings; remediation is the developer's responsibility."

12. "How does your tool scale with our development velocity, if we have hundreds of developers committing code continuously, what's the performance impact on pipeline speed?"
Why: Application security tools that slow the build pipeline get bypassed. If a SAST scan adds 20 minutes to every build, developers will find ways to skip it or run it only on release branches. Performance under load, incremental scanning (only scan what changed), and async scan modes are operationally critical.
Good answer: Incremental/differential scanning, async modes for non-blocking feedback, published pipeline performance impact data. Red flag: "Security is worth the wait" (true in principle; catastrophic for adoption in practice).

13. "What's your integration with our vulnerability management and GRC programs, do your findings flow into the same risk prioritization and tracking workflow as everything else?"
Why: Application security findings often exist in a silo, a separate dashboard, a separate tracking system, a separate team. For mature programs, AppSec findings should flow into the same risk register, the same remediation SLA framework, and the same executive reporting as infrastructure vulnerabilities. Integration depth reveals whether the tool is designed for operational maturity or just discovery.
Good answer: Native integrations with Jira, GitHub Issues, Azure DevOps, and SIEM/SOAR, SARIF format support, SBOM output compatible with VM platform. Red flag: "Our dashboard is where you manage findings" (silo by design).

14. "If we find a zero-day or supply chain compromise in one of your own dependencies or build tools, how do we find out, and how fast?"
Why: The vendor you're buying to protect your supply chain also has a supply chain. The question is whether they're eating their own cooking, running SCA on their own products, maintaining their own SBOM, and notifying customers rapidly when a vulnerability affects their software. A vendor with poor supply chain hygiene in their own products is a weak link in yours.
Good answer: Published SBOM for their own products, documented vulnerability disclosure policy, customer notification SLA (hours for critical vulnerabilities), history of transparent disclosure. Red flag: "Our security team monitors for these issues" without a documented disclosure process or published SBOM.


The Meta-Test

  • Q1, Q4, and Q5 are the supply chain visibility test. If a vendor can't map their full dependency scope and produce an SBOM, they don't have the supply chain visibility they're selling you.
  • Q2, Q3, and Q12 are the adoption test. Application security tools that developers bypass are security theater. Developer experience and pipeline performance determine whether the investment actually changes security outcomes.
  • Q7 and Q8 are the proactive supply chain test. Most tools are reactive, they find problems in what's already there. The pipeline and package vetting questions reveal whether the vendor is helping you prevent the next SolarWinds or just detect the last one.

Honest Observations

1. Most organizations are significantly more exposed to software supply chain risk than they realize, and it's not because of sophistication gaps.

You almost certainly have applications running dependencies with known vulnerabilities. You almost certainly have credentials committed to code somewhere in your repository history. You almost certainly have no idea what open-source components underlie the third-party software your critical business processes depend on.

This isn't a failure of security maturity, it's a visibility gap that didn't matter much when supply chain attacks were rare. They're no longer rare.

2. SBOM is becoming a baseline requirement, and it's actually useful, not just a compliance checkbox.

Software Bill of Materials requirements are expanding: US federal suppliers, EU Cyber Resilience Act, medical device regulations (FDA), automotive (ISO/SAE 21434), the regulatory momentum is clear. But beyond compliance, an SBOM is how you answer "are we affected?" in the first hours of the next Log4j-style event.

Organizations with current SBOMs for their critical applications answered that question in hours. Organizations without them spent days manually searching through code and contacting vendors. The next time there's a major vulnerability in a widely used library, and there will be, the organizations with SBOMs will have a significant advantage.

3. The developer vs. security team tension is the main reason AppSec programs fail.

Application security tools have a long history of being purchased by security teams, deployed onto development pipelines, resisted by developers, and quietly worked around or turned off. The tools were designed for security analysts, not for developers. The findings were reported in security language, not developer language. The developer experience was an afterthought.

The programs that work embed security natively into developer workflows, IDE plugins that flag issues as code is written, PR checks that comment on findings in the developer's native environment, prioritization that focuses developer attention on genuinely exploitable risks rather than theoretical CVEs. The security team becomes an enabler and escalation path, not a gatekeeper and auditor.

4. The build pipeline is a crown jewel that almost no organization adequately protects.

The CI/CD pipeline has access to your source code, your artifact registries, your cloud environments, your production deployment credentials, and your signing keys. A compromised build server can produce malicious software that's signed with your legitimate certificate and trusted by everything downstream.

The typical security investment in CI/CD: some credentials stored in GitHub Actions secrets, maybe a SAST scan in the pipeline. The typical attacker's evaluation of CI/CD: the most valuable lateral movement path in the environment, often under-monitored and over-privileged.

Hardening the pipeline, runner isolation, ephemeral build environments, signed builds and provenance attestation (Sigstore/SLSA framework), minimal pipeline credentials, audit logging of all pipeline operations, is high-ROI work that rarely makes the security roadmap because it doesn't fit neatly into traditional security frameworks.

5. For "regular" organizations that don't develop software, this still matters.

The temptation is to read "application security" and conclude it's only relevant for software companies or engineering-heavy organizations. That's increasingly wrong.

Even if you don't write code:

  • The SaaS products you run are built on software supply chains you can now ask about (SBOM requirements in vendor contracts).
  • The packaged software you deploy internally has supply chain risk (see SolarWinds, every affected organization was a customer, not a software company).
  • The custom integrations, automation scripts, and low-code/no-code platforms your teams build increasingly create code-like attack surfaces.

At minimum, "regular" organizations should be asking their software vendors for SBOMs, including software supply chain security requirements in vendor contracts (see Topic 16), and understanding what internal automation and integration code exists and who's responsible for its security.

6. Application security is where the series ends, and where most programs haven't started yet.

Of all the topics in this series, application security and software supply chain security are the areas where the gap between "we have a tool" and "we have a program" is widest. The tooling is mature. The practice is not. Most organizations have a SAST scanner that runs somewhere in a pipeline that nobody looks at, and no idea what open-source components underlie the software their business depends on.

If this topic leaves you with one thing: get an SBOM for your most critical applications, and start asking your software vendors for theirs. That single step puts you ahead of the majority of organizations, and it's the foundation everything else in this topic builds on.

Topic 20 wraps up the series (for now) with the question everyone's asking right now: what do we actually do with frontier AI models?


Read more