Un gruppu di circadori di l'Università di Turku (Finlandia) hà publicatu i risultati di una analisi di pacchetti in u repository PyPI per l'usu di custruzzioni potenzalmentu periculosi chì puderanu purtà à vulnerabili. Durante l'analisi di 197 mila pacchetti, 749 mila pussibuli prublemi di sicurezza sò stati identificati. U 46% di i pacchetti anu almenu un tali prublema. Trà i prublemi più cumuni sò e mancanze ligati à a gestione di l'eccezzioni è l'usu di funzioni chì permettenu a sustituzione di codice.
Di i 749 mila prublemi identificati, 442 mila (41%) sò stati etichettati cum'è minori, 227 mila (30%) cum'è prublemi moderati è 80 mila (11%) cum'è periculosi. Certi pacchetti si distinguenu da a folla è cuntenenu millaie di prublemi: per esempiu, u pacchettu PyGGI hà identificatu 2589 prublemi, principarmenti ligati à l'usu di a custruzzione "try-except-pass", è u pacchettu appengine-sdk hà trovu 2356 prublemi. Un gran numaru di prublemi sò ancu prisenti in i pacchetti genie.libs.ops, pbcore è genie.libs.parser.
Hè da nutà chì i risultati sò stati ottenuti basatu annantu à l'analisi statica automatizata, chì ùn piglia micca in contu u cuntestu di l'applicazione di certe strutture. U sviluppatore di u banditu toolkit, chì hè stata utilizata per scansà u codice, hà spressu l'opinione chì, per via di u numeru abbastanza elevatu di falsi pusitivi, i risultati di scansione ùn ponu esse direttamente cunsiderati vulnerabili senza rivisione manuale supplementu di ogni prublema.
Per esempiu, l'analizzatore cunsidereghja l'usu di generatori di numeri aleatorii inaffidabili è algoritmi di hashing, cum'è MD5, per esse un prublema di sicurezza, mentre chì in u codice tali algoritmi pò esse usatu per scopi chì ùn anu micca a sicurità. L'analizzatore cunsidereghja ancu ogni trattamentu di dati esterni in funzioni insicure cum'è pickle, yaml.load, subprocess è eval un prublema, ma questu usu ùn implica micca necessariamente una vulnerabilità è in fattu l'usu di sti funzioni pò esse implementatu senza una minaccia di sicurità. .
Trà i testi utilizati in u studiu:
- Utilizà e funzioni potenzialmente insicure exec, mktemp, eval, mark_safe, etc.
- Impostazione insicura di i diritti d'accessu per i schedari.
- Attaccà un socket di rete à tutte l'interfaccia di rete.
- L'usu di password è chjave strettamente specificate in u codice.
- Utilizendu un repertoriu temporale predefinitu.
- Utilizà u pass è cuntinuà in i gestori di eccezzioni catch-all-style;
- Lanciazione di applicazioni web basate nantu à u framework web Flask cù u modu di debugging attivatu.
- Utilizà metudi di deserializazione di dati insicuri.
- Utilizà e funzioni hash MD2, MD4, MD5 è SHA1.
- Utilizazione di cifri DES insicuri è modi di criptografia.
- Utilizazione di una implementazione HTTPSConnection insegura in alcune versioni di Python.
- Specificà u schema file:// in urlopen.
- Utilizà i generatori di numeri pseudo-aleatoriu quandu eseguisce attività criptografiche.
- Utilizà u protocolu Telnet.
- Utilizà parsers XML insicuri.
Inoltre, si pò nutà chì 8 pacchetti maliziusi sò stati rilevati in u cartulare PyPI. Prima di sguassà, i pacchetti problematici sò stati scaricati più di 30 mila volte. Per ammuccià l'attività maliciosa è l'avvirtimenti di bypass da analizatori statici simplici in pacchetti, i blocchi di codice sò stati codificati cù Base64 è eseguiti dopu a decodificazione cù una chjama di eval.
I pacchetti noblesse, genesisbot, sò, soffrenu, noblesse2 è noblessev2 cuntenenu codice per interceptà i numeri di carte di creditu è e password almacenate in i navigatori Chrome è Edge, è ancu trasferisce tokens di contu da l'applicazione Discord è mandà dati di sistema, cumprese screenshots di cuntenutu di u screnu. I pacchetti pytagora è pytagora2 includenu a capacità di carica è eseguisce codice eseguibile di terzu.
Source: opennet.ru