'dotnet restore' controlla i pacchetti transitivi
Il dotnet restore
comando , che ripristina le dipendenze e gli strumenti di un progetto, genera ora avvisi di vulnerabilità di sicurezza per i pacchetti transitivi per impostazione predefinita.
Comportamento precedente
In .NET 8, NuGetAudit è stato introdotto per generare avvisi per i pacchetti con vulnerabilità di sicurezza note. Per impostazione predefinita, sono stati controllati solo i riferimenti diretti ai pacchetti, ma è stato possibile modificare la NuGetAuditMode
proprietà in modo da includere tutti i pacchetti.
Nuovo comportamento
A partire da .NET 9, NuGetAuditMode
l'impostazione predefinita è all
se non è stata impostata in modo esplicito. Questa impostazione indica che i pacchetti transitivi (dipendenze dei pacchetti a cui fa riferimento direttamente il progetto) con vulnerabilità note ora causano la segnalazione degli avvisi.
Se il progetto considera gli errori come avvisi, questo comportamento può causare errori di ripristino.
Versione introdotta
.NET 9 Anteprima 6
Tipo di modifica che causa un'interruzione
Questa è una modifica funzionale.
Motivo della modifica
I pacchetti con vulnerabilità note potrebbero causare l'exploit dell'app, anche se il progetto non fa riferimento direttamente o usa il pacchetto vulnerabile. Le nuove funzionalità di .NET 9 semplificano anche l'analisi del grafico del pacchetto e l'eliminazione di avvisi non rilevanti per il modo in cui l'app usa il pacchetto vulnerabile.
Azione consigliata
Per ridurre in modo esplicito la probabilità che questa modifica causa la compilazione venga interrotta a causa di avvisi, è possibile prendere in considerazione l'utilizzo e
<TreatWarningsAsErrors>
l'uso<WarningsNotAsErrors>NU1901;NU1902;NU1903;NU1904</WarningsNotAsErrors>
per garantire che nell'ambiente siano ancora consentite vulnerabilità di sicurezza note.Usare strumenti come
dotnet nuget why
per trovare il pacchetto di primo livello che ha causato l'inserimento del pacchetto transitivo con la vulnerabilità nota e provare ad aggiornarlo per verificare se la vulnerabilità transitiva va via. In caso contrario, alzare di livello il pacchetto transitivo a un pacchetto di primo livello aggiungendo un oggettoPackageReference
e aggiornandolo a una versione più recente.Se si vuole eliminare un avviso specifico, è possibile aggiungere
<NuGetAuditSuppress Include="url" />
un elemento al file di progetto, doveurl
è l'URL segnalato nel messaggio di avviso di NuGet.<ItemGroup> <NuGetAuditSuppress Include="url" /> </ItemGroup>
Se si desidera essere avvisati solo di riferimenti diretti al pacchetto con vulnerabilità note, è possibile impostare su
<NuGetAuditMode>
direct
nel file di progetto.<PropertyGroup> <NuGetAuditMode>direct</NuGetAuditMode> </PropertyGroup>