Sicherheitslücken in verwendenten NuGet-Paketen finden
Lesedauer: 2 Minuten

Beim Aufräumen oder beim Review von .NET-Projekten gehört ein schneller Check auf bekannte Sicherheitslücken in NuGet-Paketen unbedingt dazu. Glücklicherweise liefert das .NET-CLI-Tool bereits einen einfachen Befehl, der dir genau das zeigt — auch transitive Abhängigkeiten.

Der Befehl

PowerShell
dotnet list <solution.sln|project.csproj> package --include-transitive --vulnerable
PowerShell

Alle Projekte in einer Solution prüfen:

PowerShell
dotnet list .\OpenWeatherMapSharp.sln package --include-transitive --vulnerable
PowerShell

Nur ein einzelnes Projekt prüfen:

PowerShell
dotnet list .\src\MyApp\MyApp.csproj package --include-transitive --vulnerable
PowerShell

--include-transitive sorgt dafür, dass auch Abhängigkeiten, die nicht direkt in deinem Projekt stehen (also transitive Pakete), mit geprüft werden. --vulnerable filtert auf bekannte, gemeldete Schwachstellen.

Was die Ausgabe bedeutet

Projekt / Target Framework: Es wird pro Projekt und pro Ziel-Framework (z. B. net9.0 oder netstandard2.0) angezeigt.

Paket oberster Ebene vs. Transitives Paket: Steht ein > vor dem Paketnamen, ist es ein direkt referenziertes Paket (top-level). Wenn „Transitives Paket“ steht, kommt das Paket indirekt.

Angefordert vs. Aufgelöst: Angefordert = das in deiner Projektdatei angegebene (oder von einem anderen Paket gewünschte) Versionsthema; Aufgelöst = die tatsächlich vom Resolver verwendete Version.

Schweregrad: z. B. Low, Moderate, High, Critical. Konzentriere dich zuerst auf High/Critical.

URL zur Empfehlung: Link zu der Sicherheits-Advisory (z. B. GHSA), dort stehen Details und oft Fix-Hinweise.

Tipps & Best Practices

Regelmäßig prüfen — mindestens vor Releases und als Teil des CI-Pipelines. Sicherheits-Advisories können jederzeit erscheinen.

Include transitive immer verwenden — viele Probleme kommen von indirekten Abhängigkeiten.

Central Package Management (Directory.Packages.props) nutzen, wenn du mehrere Projekte hast — Updates so zentral steuern.

Monitoring: Nutze zusätzlich Sicherheits-Scanner, Dependabot (GitHub) oder andere Tools, um automatische PRs für Updates zu erhalten.

Dokumentation: Wenn kein Fix möglich ist, dokumentiere die eingeschätzte Risikoauswirkung und ggf. Workarounds im Issue Tracker.

Fazit

Mit dotnet list <sln|proj> package --include-transitive --vulnerable bekommst du schnell einen klaren Überblick über bekannte Sicherheitslücken in deinen NuGet-Abhängigkeiten — genau so wie im Screenshot. Kombiniert mit einem festen CI-Check und einem standardisierten Update-Workflow reduziert das deine Angriffsfläche erheblich und macht Dependency-Management planbar.

WordGuess – Wordle-Klon als Konsolen-App Nützliche Code-Snippets für Visual Studio Dr. Windows App nun für iOS und Android als Beta verfügbar
View Comments
There are currently no comments.