Quali sono i controlli semplici per identificare il malware nel codice Python?

3

È ben noto che PyPI non impedisce il caricamento di codice dannoso.

Sfortunatamente, gli strumenti automatici spesso non sono in grado di distinguere tra le funzionalità di un programma e il codice dannoso.

Nel caso di distribuzioni Linux , c'è almeno il manutentore del pacchetto che potrebbe guardare il codice sorgente di tanto in tanto.

Fondamentalmente la sicurezza dei repository software come PyPI si riduce all'idea che qualcuno potrebbe notare un codice dannoso, se un numero sufficiente di persone guarda il codice sorgente . Quindi, se mi piace essere una delle persone che occasionalmente guarda il codice sorgente, che cosa dovrei cercare?

Leggere ogni riga di codice prima di installare un pacchetto python non è possibile.

Per un programmatore (non un ricercatore di sicurezza), quali sono i semplici controlli / le migliori pratiche per identificare evidenti frammenti di codice dannoso?

Alcune cose ovvie da fare sono:

  • grep per import e controlla se qualsiasi modulo importa qualcosa che non dovrebbe. In particolare, cerca sys , os , http ecc ... Questi moduli hanno molti usi legittimi, ma un sacco di potere per fare cose non sicure.
  • grep per eval e simili.
  • apri un file casuale e verifica se sembra ragionevole.
  • Presta particolare attenzione a setup.py

Qual è il modo più rapido per avere una maggiore possibilità di rilevare codice dannoso negli script Python?

    
posta TheEspinosa 08.11.2017 - 13:08
fonte

1 risposta

1

A corto di rivedere l'intero codice sorgente / binario che non si può mai sapere con certezza senza eseguire il codice - a quel punto quando capisci che potrebbe essere troppo tardi. Certo, una libreria di manipolazione delle stringhe che chiama "import http" potrebbe essere facile da usare, ma ci sono infinite possibilità per uno sviluppatore malintenzionato di oscurarlo.

Se sei preoccupato, l'approccio migliore è provare a sandbox l'ambiente di esecuzione per limitare il pacchetto solo per avere accesso ai dati / API che ci si aspetterebbe che usassero.

Per quanto riguarda i pacchetti PyPI generali, è necessario eseguire una valutazione dei rischi quando si utilizza un pacchetto. Se si tratta di un pacchetto importante da uno sviluppatore ben considerato, il rischio è basso e la possibilità che qualcuno lo abbia rilevato se ci fosse qualcosa di malvagio è alta. Se sei una delle 10 persone che installano l'unico pacchetto pubblicato da uno sviluppatore, potresti voler dare un'occhiata più da vicino.

    
risposta data 09.11.2017 - 09:10
fonte

Leggi altre domande sui tag