Condividi tramite


'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.

  • 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 oggetto PackageReference 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, dove url è 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>
    

Vedi anche