Sdílet prostřednictvím


Auditování závislostí balíčků pro ohrožení zabezpečení

Audity zabezpečení

Audit zabezpečení pro správce balíčků, jako je NuGet, je proces, který zahrnuje analýzu zabezpečení balíčků, které jsou součástí softwarového projektu. To zahrnuje identifikaci ohrožení zabezpečení, vyhodnocení rizik a vytváření doporučení pro zlepšení zabezpečení. Audit může zahrnovat kontrolu samotných balíčků a také všechny závislosti a související rizika. Cílem auditu je identifikovat a zmírnit všechna ohrožení zabezpečení, která by mohli útočníci zneužít, například injektáž kódu nebo skriptování mezi weby.

Typ projektu NuGet .NET SDK Visual Studio
PackageReference 6.8 .NET 8 SDK (8.0.100) Visual Studio 2022 17.8
packages.config 6.10 Visual Studio 2022 17.10

Spuštění auditu zabezpečení s využitím restore

Příkaz restore se automaticky spustí při běžné operaci balíčku, jako je první načtení projektu, přidání nového balíčku, aktualizace verze balíčku nebo odebrání balíčku z projektu ve vašem oblíbeném integrovaném vývojovém prostředí (IDE). Popis závislostí se kontroluje v sestavě známých ohrožení zabezpečení v databázi poradce GitHubu.

Důležité

Pokud chcete zkontrolovat balíčky, musí se použít zdroj balíčku, který poskytuje databázi ohrožení zabezpečení. Adresa URL nuGet.org v3 je jedním z takových příkladů (https://api.nuget.org/v3/index.json), ale všimněte si, že koncový bod NuGet.org V2 ne.

  1. Na příkazovém řádku přejděte do adresáře projektu nebo řešení.
  2. Spusťte restore pomocí preferovaného nástroje (tj. dotnet, MSBuild, NuGet.exe, VisualStudio atd.).
  3. Projděte si upozornění a vyřešte známá ohrožení zabezpečení.

Zjištěná ohrožení zabezpečení s aktualizacemi

Pokud jsou nalezena ohrožení zabezpečení a jsou pro balíček k dispozici aktualizace, můžete:

  • .csproj Upravte umístění verze balíčku (Directory.Packages.props) s novější verzí obsahující opravu zabezpečení.
  • Pomocí uživatelského rozhraní správce balíčků NuGet v sadě Visual Studio aktualizujte jednotlivé balíčky.
  • Spuštěním dotnet add package příkazu s příslušným ID balíčku aktualizujte na nejnovější verzi.

Zjištěná ohrožení zabezpečení bez aktualizací

V případě, že v balíčku existuje známá chyba zabezpečení bez opravy zabezpečení, můžete provést následující kroky.

  • Zkontrolujte všechny faktory zmírnění rizika uvedené v sestavě rady.
  • Pokud je balíček označený jako zastaralý nebo opuštěný, použijte navrhovaný balíček.
  • Pokud je balíček opensourcový, zvažte přispívání na opravu.
  • Otevřete problém v sledování problémů balíčku.

Kontrola zmírňujících faktorů

Projděte si poradce pro zabezpečení a zkontrolujte všechny faktory, které by vám mohly umožnit pokračovat v používání balíčku s ohrožením zabezpečení. Ohrožení zabezpečení může existovat pouze v případě, že se kód používá v konkrétní rozhraní, operačním systému nebo speciální funkci.

Použití navrhovaného balíčku

V případě nahlášení poradce pro zabezpečení pro balíček, který používáte, a balíček je označený jako zastaralý nebo se zdá být opuštěný, zvažte použití jakéhokoli navrhovaného alternativního balíčku, který autor balíčku deklaroval, nebo balíček, který obsahuje podobné funkce, které jsou zachovány.

Přispívání opravy

Pokud pro poradce pro zabezpečení neexistuje oprava, můžete navrhnout změny, které řeší ohrožení zabezpečení v žádosti o přijetí změn v opensourcovém úložišti balíčku, nebo se obraťte na autora prostřednictvím Contact owners části na stránce podrobností balíčku NuGet.org.

Otevření problému

Pokud nechcete chybu zabezpečení opravit nebo nemůžete balíček aktualizovat nebo nahradit, otevřete problém v nástroji pro sledování problémů balíčku nebo upřednostňované metodě kontaktu. Na NuGet.org můžete přejít na stránku s podrobnostmi balíčku a kliknout, Report package která vás provede kontaktem s autorem.

Nenašly se žádná ohrožení zabezpečení.

Pokud se nenajde žádná ohrožení zabezpečení, znamená to, že balíčky se známými ohroženími zabezpečení nebyly v grafu balíčků v současné době, kdy jste zkontrolovali, nalezeny. Vzhledem k tomu, že poradní databázi je možné kdykoli aktualizovat, doporučujeme pravidelně kontrolovat dotnet restore výstup a zajistit to samé v procesu kontinuální integrace.

Konfigurace auditu NuGet

Audit lze nakonfigurovat prostřednictvím vlastností NÁSTROJE MSBuild v .csproj souboru MSBuild, který se vyhodnocuje jako součást projektu. Doporučujeme nakonfigurovat audit na úrovni úložiště.

MsBuild – vlastnost Výchozí Možné hodnoty Notes
NuGetAuditMode Direct direct a all Pokud chcete auditovat jak nejvyšší úroveň, tak tranzitivní závislosti, můžete nastavit hodnotu na allhodnotu . NuGetAuditMode se nevztahuje na projekty packages.config.
NuGetAuditLevel low low, moderate, higha critical Pokud chcete zobrazit moderate, higha critical rady, nastavte hodnotu na moderate
NuGetAudit true true a false Pokud nechcete dostávat sestavy auditu zabezpečení, můžete se úplně odhlásit nastavením hodnoty na false

Vyloučení informačních zpravodajů

V tuto chvíli není k dispozici žádná podpora pro vyloučení jednotlivých poradců. Můžete použít <NoWarn> k potlačeníNU1904NU1901-upozornění nebo použití <NuGetAuditLevel> funkcí k zajištění, aby sestavy auditu byly užitečné pro váš pracovní postup.

Kódy upozornění

Kód upozornění Důvod
NU1900 Při komunikaci se zdrojem balíčků došlo k chybě při získávání informací o ohrožení zabezpečení.
NU1901 Zjištěn balíček s nízkou závažností
NU1902 Balíček se střední závažností zjištěn
NU1903 Balíček se zjištěnou vysokou závažností
NU1904 Zjištěn balíček s kritickou závažností

Sestavení můžete přizpůsobit tak, aby s těmito upozorněními zacházeli jako s chybami , abyste mohli s upozorněními zacházet jako s chybami, nebo považovat upozornění za chyby. Pokud už například používáte <TreatWarningsAsErrors> k zacházení se všemi upozorněními (C#, NuGet, MSBuild atd.) jako s chybami, můžete zabránit <WarningsNotAsErrors>NU1901;NU1902;NU1903;NU1904</WarningsNotAsErrors> ohrožením zabezpečení zjištěných v budoucnu, aby nedošlo k narušení sestavení. Případně pokud chcete zachovat slabá a střední ohrožení zabezpečení jako upozornění, ale zacházet s velkými a kritickými chybami jako s chybami a nepoužíváte TreatWarningsAsErrors, můžete použít <WarningsAsErrors>NU1903;NU1904</WarningsAsErrors>.

Poznámka:

Vlastnosti nástroje MSBuild pro závažnost zprávy, například NoWarn a TreatWarningsAsErrors nejsou podporovány pro projekty packages.config.

Shrnutí

Funkce auditování zabezpečení jsou zásadní pro zachování zabezpečení a integrity softwarových projektů. Tyto funkce poskytují další vrstvu ochrany před ohroženími zabezpečení a zajišťují, že můžete používat opensourcové balíčky s jistotou.