PyPI biltegiko Python paketeen % 46k segurua ez den kode du

Turkuko (Finlandia) Unibertsitateko ikertzaile talde batek PyPI biltegian dauden paketeen analisiaren emaitzak argitaratu zituen ahultasunak sor ditzaketen eraikuntza arriskutsuak erabiltzeko. 197 mila paketeren azterketan, 749 mila balizko segurtasun-arazo identifikatu ziren. Paketeen % 46k horrelako arazo bat dute gutxienez. Arazo ohikoenen artean salbuespenen kudeaketarekin eta kodea ordezkatzea ahalbidetzen duten funtzioen erabilerarekin lotutako gabeziak daude.

Identifikatutako 749 mila arazoetatik, 442 mila (%41) arintzat jo zituzten, 227 mila (%30) arazo moderatuak eta 80 mila (%11) arriskutsu gisa. Pakete batzuk jendetzaren artean nabarmentzen dira eta milaka arazo dituzte: adibidez, PyGGI paketeak 2589 arazo identifikatu zituen, batez ere β€œtry-except-pass” eraikuntzaren erabilerari lotutakoak, eta appengine-sdk paketeak 2356 arazo aurkitu zituen. Genie.libs.ops, pbcore eta genie.libs.parser paketeetan ere arazo ugari daude.

Kontuan izan behar da emaitzak analisi estatiko automatizatuan oinarrituta lortu direla, eta horrek ez du kontuan hartzen zenbait egituraren aplikazio testuingurua. Kodea eskaneatzeko erabili zen Bandit toolkit-aren garatzaileak iritzia adierazi zuen positibo faltsuen kopuru nahiko altua dela eta, eskanearen emaitzak ezin direla zuzenean ahultasuntzat hartu arazo bakoitzaren eskuzko berrikuspen gehigarririk gabe.

Esate baterako, analizatzaileak ausazko zenbaki-sorgailu eta hashing algoritmo fidagarriak erabiltzea segurtasun arazotzat hartzen du, adibidez, MD5, eta kodean algoritmo horiek segurtasunari eragiten ez dioten helburuetarako erabil daitezkeen bitartean. Analizatzaileak, halaber, pickle, yaml.load, subprocess eta eval bezalako funtzio ez-seguruetan kanpoko datuak prozesatzea arazotzat hartzen du, baina erabilera horrek ez du zertan ahultasunik ekarri behar eta, hain zuzen ere, funtzio horien erabilera segurtasun mehatxurik gabe inplementa daiteke. .

Ikerketan erabilitako proben artean:

  • Exec, mktemp, eval, mark_safe, etab.
  • Fitxategietarako sarbide-eskubideen ezarpen segurua.
  • Sareko socket bat sareko interfaze guztietan eranstea.
  • Kodean zorrozki zehaztutako pasahitzak eta gakoak erabiltzea.
  • Aurrez zehaztutako behin-behineko direktorio bat erabiliz.
  • Pass and continue catch-all-style salbuespen-kudeatzaileetan erabiltzea;
  • Flask web esparruan oinarritutako web aplikazioak abiaraztea arazketa modua gaituta.
  • Datu seguruak deserializatzeko metodoak erabiltzea.
  • MD2, MD4, MD5 eta SHA1 hash funtzioak erabiltzen ditu.
  • DES zifraketa eta zifratze modu seguruak erabiltzea.
  • HTTPSConnection inplementazio segurua erabiltzea Python-en bertsio batzuetan.
  • File:// eskema zehaztea urlopen-en.
  • Zeregin kriptografikoak egiterakoan pseudoausazko zenbaki-sorgailuak erabiltzea.
  • Telnet protokoloa erabiliz.
  • XML analizatzaile seguruak erabiltzea.

Gainera, PyPI direktorioan 8 pakete gaizto detektatu zirela esan daiteke. Kendu aurretik, pakete arazotsuak 30 mila aldiz baino gehiago deskargatu ziren. Paketeetako analizatzaile estatiko sinpleen jarduera asmo txarreko jarduerak ezkutatzeko eta kode-blokeak Base64 erabiliz kodetu ziren eta eval dei baten bidez deskodetu ondoren exekutatu ziren.

Noblesse, genesisbot, are, suffer, noblesse2 eta noblessev2 paketeek Chrome eta Edge arakatzaileetan gordetako kreditu-txartelen zenbakiak eta pasahitzak atzemateko kodea dute, baita Discord aplikaziotik kontu-tokenak transferitzeko eta sistemaren datuak bidaltzeko, pantailako edukien pantaila-argazkiak barne. Pytagora eta pytagora2 paketeek hirugarrenen kode exekutagarria kargatzeko eta exekutatzeko gaitasuna zuten.

Iturria: opennet.ru

Gehitu iruzkin berria