Avvisi NuGet NU1901, NU1902, NU1903, NU1904

avviso NU1902: il pacchetto 'NuGet.Protocol' 5.11.2 presenta una vulnerabilità di gravità moderata nota, https://github.com/advisories/GHSA-g3q9-xf95-8hp5

Il codice di avviso cambia a seconda del livello di gravità della vulnerabilità noto:

Codice di avviso Gravità
NU1901 low
NU1902 moderato
NU1903 high
NU1904 critical

Problema

Un pacchetto ripristinato per il progetto presenta una vulnerabilità nota.

Per altre informazioni, vedere la documentazione sui pacchetti di controllo.

Soluzione

È disponibile un post di blog con altre informazioni sulle azioni consigliate quando il progetto usa un pacchetto con una vulnerabilità nota e strumenti utili.

È probabile che l'aggiornamento a una versione più recente del pacchetto risolva l'avviso. Se il progetto non fa riferimento direttamente al pacchetto (si tratta di un pacchetto transitivo), dotnet nuget why può essere usato per comprendere quale pacchetto ha causato l'inserimento nel progetto. È possibile controllare l'URL fornito dall'avviso sulla vulnerabilità per verificare quali versioni del pacchetto sono state corrette o controllare le origini dei pacchetti configurate per vedere quali versioni del pacchetto sono disponibili. L'interfaccia utente di Gestione pacchetti di Visual Studio può mostrare quali versioni del pacchetto sono interessate e quali non presentano vulnerabilità note.

Se questi avvisi causano un errore di ripristino perché si usa TreatWarningsAsErrors, è possibile aggiungere <WarningsNotAsErrors>NU1901;NU1902;NU1903;NU1904</WarningsNotAsErrors> per consentire a questi codici di rimanere come avvisi.

Se non si vuole ricevere una notifica delle vulnerabilità meno gravi di un livello con cui si ha familiarità, è possibile modificare il file di progetto e aggiungere una proprietà NuGetAuditLevelMSBuild , con valore impostato su low, moderatehigh, o critical. Ad esempio: <NuGetAuditLevel>high</NuGetAuditLevel>.

Se si vuole eliminare un avviso specifico, aggiungere un elemento NuGetAuditSuppress di MSBuild. Ad esempio, <NuGetAuditSuppress Include="https://github.com/advisories/GHSA-g3q9-xf95-8hp5" />. NuGetAuditSuppressè disponibile in VS 17.11 e .NET 8.0.400 SDK per i progetti che usano e da VS 17.12 per i progetti che usano PackageReferencepackages.config.

Se non si vuole che NuGet verifichi la presenza di pacchetti con vulnerabilità note durante il ripristino, aggiungere <NuGetAudit>false</NuGetAudit> all'interno di un <PropertyGroup> nel file di progetto o un Directory.Build.props file. Se si vuole eseguire Il controllo NuGet nei computer di sviluppo, ma disabilitarlo nelle pipeline di integrazione continua, è possibile sfruttare le variabili di ambiente di importazione di MSBuild e creare una variabile di ambiente NuGetAudit impostata su false nella definizione della pipeline.