NuGet è vulnerabile a questo attacco di typosquatting?

5

Un articolo pubblicato di recente dimostra un modo per fare attacchi "typo-squatting" sul popolare pacchetto di programmazione manager. Individua i pip di Python, i gem di Ruby e i sistemi npm del nodo e mostra che hanno due cose in comune:

  1. I pacchetti possono essere inviati e accettati automaticamente, senza revisione manuale o supervisione umana
  2. I pacchetti possono far sì che il gestore pacchetti esegua un codice "di installazione" arbitrario sul sistema client al momento dell'installazione.

Ciò significa che è possibile registrare un pacchetto con un nome molto simile a quello di un pacchetto popolare , e ottenere il pacchetto (completo di uno script di installazione dannoso) installato ogni volta che qualcuno digita il nome del pacchetto.

Questo mi fa meravigliare, NuGet ha le stesse due caratteristiche? Ha qualche meccanismo in atto per mitigare gli attacchi di questo tipo?

    
posta Mason Wheeler 14.06.2016 - 17:32
fonte

1 risposta

4

Packages can be submitted and accepted automatically, with no manual review or human oversight

Sì.

Packages can cause the package manager to execute arbitrary "setup" code on the client system at install-time.

Il "vecchio" modello di progetto consente l'esecuzione di script PowerShell, quindi sì, direi che questo è anche un problema per NuGet. Anche i nuovi sono vulnerabili in quanto non appena "eseguono" il loro progetto importando il pacchetto, l'assembly può solo fare qualcosa di malvagio.

Does it have any mechanism in place to mitigate attacks of this type?

Ho visto alcune organizzazioni adottare la pratica di vietare il repository Microsoft NuGet e configurare un server locale con pacchetti controllati.

Vale anche la pena sottolineare che mentre appare il messaggio di iscrizione ai pacchetti con # 2577 , una sua annotazione sul blog di Nuget indica chiaramente che la firma dei pacchetti non risolverà completamente questo aspetto:

This signing system is not trying to tell you that NuGet can verify that a package is the right version of Newtonsoft.Json, from James Newton-King. Instead, we can say that it’s Newtonsoft.Json from someone in control of the private key for some certificate X. Actually verifying that James Newton-King is in control of that certificate is a secondary process that we are not providing here.

Presumibilmente questa firma sarà disponibile per tutti e un abusivo potrebbe semplicemente firmare il suo pacco.

link

    
risposta data 14.06.2016 - 19:12
fonte

Leggi altre domande sui tag