Skip to main content

A03 — Software Supply Chain Failures

OWASP's 2025 definition of this category spans the whole software supply chain — dependencies, build systems, and distribution infrastructure. Today, Owasp.Analyzers covers the dependency slice of that: these rules use MSBuild targets to detect known-vulnerable or deprecated NuGet packages at build time. Build-system and distribution-infrastructure compromise (e.g. CI/CD tampering, unsigned artifacts, dependency confusion) are not yet covered.

OWASPA03001 — Known-vulnerable NuGet package​

PropertyValue
SeverityWarning
CategoryA03 Software Supply Chain Failures
TechniqueMSBuild target

What it detects​

NuGet package references to packages with known CVEs that are commonly found in .NET projects. The rule checks package IDs and version ranges against a built-in list of vulnerable versions.

Examples of detected packages:

  • Newtonsoft.Json versions prior to 13.0.1 (CVE-2024-21907)
  • System.Text.RegularExpressions versions prior to 4.3.1 (CVE-2019-0820, ReDoS)
  • log4net versions prior to 2.0.15

❌ Non-compliant​

<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />

✅ Compliant​

<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />

How to check for vulnerabilities​

dotnet list package --vulnerable

This command queries the NuGet advisory database and lists all packages in your solution with known vulnerabilities.


OWASPA03002 — Deprecated or end-of-life NuGet package​

PropertyValue
SeverityWarning
CategoryA03 Software Supply Chain Failures
TechniqueMSBuild target

What it detects​

References to NuGet packages that have been deprecated by their authors or have reached end-of-life. These packages no longer receive security patches.

Examples:

  • Microsoft.AspNetCore.All (deprecated, use Microsoft.AspNetCore.App)
  • Newtonsoft.Json.Bson (deprecated)
  • System.Net.Http (deprecated, use the built-in HttpClient)

❌ Non-compliant​

<PackageReference Include="Microsoft.AspNetCore.All" Version="2.2.8" />

✅ Compliant​

<PackageReference Include="Microsoft.AspNetCore.App" />

How to check for deprecations​

dotnet list package --deprecated

Or in Visual Studio / Rider — deprecated packages are shown with a deprecation warning in the NuGet package manager UI.