46% Python paketov v repozitoriju PyPI vsebuje potencialno nevarno kodo

Grupa raziskovalcev z Univerze Turku (Finska) je objavila rezultate analize paketov v repozitoriju PyPI glede uporabe potencialno nevarnih konstrukcij, ki lahko privedejo do ranljivosti. Med analizo 197 tisoč paketov je bilo odkritih 749 tisoč potencialnih varnostnih težav. V 46% paketov je prisotna vsaj ena takšna težava. Med najpogostejšimi težavami so pomanjkljivosti, povezane z obravnavo izjem in uporabo konstrukcij, ki omogočajo injektiranje kode.

Od odkritih 749 tisoč težav je 442 tisoč (41%) označenih kot manj pomembne, 227 tisoč (30%) kot težave z zmerno nevarnostjo in 80 tisoč (11%) kot nevarne. Nekaj paketov izstopa iz povprečja in vsebuje tisoče težav: na primer, v paketu PyGGI je bilo odkritih 2589 težav, predvsem povezanih z uporabo konstrukcije «try-except-pass», v paketu appengine-sdk pa 2356 težav. Veliko težav je prisotnih tudi v paketih genie.libs.ops, pbcore in genie.libs.parser.

Treba je opozoriti, da so rezultati pridobljeni na podlagi avtomatizirane statične analize, ki ne upošteva konteksta uporabe določenih konstrukcij. Razvijalec orodja bandit, ki je bilo uporabljeno za skeniranje kode, je izrazil mnenje, da zaradi precejšnjega števila napačnih pozitivnih rezultatov rezultati pregleda ne morejo biti neposredno razumljeni kot ranljivosti brez dodatnega ročnega pregleda vsake težave.

Na primer, analitska orodja smatrajo uporabo nezanesljivih generatorjev naključnih števil in algoritmov za heširanje, kot je MD5, za varnostno težavo, medtem ko se v kodi lahko uporabljajo za namene, ki ne vplivajo na varnost. Analizator prav tako šteje za težavo kakršno koli obravnavo zunanjih podatkov v nevarnih funkcijah, kot so pickle, yaml.load, subprocess in eval, vendar ta uporaba ne pomeni nujno nastanka ranljivosti, in v praksi se lahko omenjene funkcije uporabljajo brez varnostnih groženj.

Med preverjanji, uporabljenimi v študiji:

  • Uporaba potencialno nevarnih funkcij exec, mktemp, eval, mark_safe itd.
  • Nevarno dodeljevanje dostopnih pravic datotekam.
  • Priključitev omrežnih soketov na vse omrežne vmesnike.
  • Uporaba trdo kodiranih gesel in ključev v kodi.
  • Uporaba vnaprej določenega začasnega imenika.
  • Uporaba pass in continue v obdelovalcih izjem catch-all-style;
  • Zagon spletnih aplikacij na podlagi spletnega ogrodja Flask z vklopljenim načinom odpravljanja napak.
  • Uporaba nevarnih metod deserializacije podatkov.
  • Uporaba hash funkcij MD2, MD4, MD5 in SHA1.
  • Uporaba nevarnih šifrirnih metod DES in načinov šifriranja.
  • Uporaba nevarne implementacije HTTPSConnection v nekaterih različicah Pythona.
  • Navedba sheme file:// v urlopen.
  • Uporaba generatorjev psevdonasljučnih števil pri izvajanju kriptografskih nalog.
  • Uporaba protokola Telnet.
  • Uporaba nevarnih XML parserjev.

Dodatno lahko omenimo, da je bilo v imeniku PyPI odkrito 8 zlonamernih paketov. Pred izbrisom so problematični paketi uspeli prenesti več kot 30 tisoč krat. Za prikrivanje zlonamerne aktivnosti in obvladovanje opozoril preprostih statičnih analizatorjev je bilo v paketih uporabljeno kodiranje blokov s kodo z uporabo Base64 in organizacija izvajanja po dekodiranju preko klica eval.

V paketih noblesse, genesisbot, are, suffer, noblesse2 in noblessev2 je bil odkrit koda za prestrezanje številk kreditnih kartic in gesel, shranjenih v brskalnikih Chrome in Edge, prav tako za prenos računovskih žetonov iz aplikacije Discord in pošiljanje podatkov o sistemu, vključno s posnetki zaslona. V paketih pytagora in pytagora2 je bila prisotna možnost prenašanja in izvajanja tretje stranske izvršljive kode.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster