46 % PyPI-tietovaraston Python-paketeista sisältää mahdollisesti vaarallista koodia

Turun yliopiston tutkijaryhmä julkaisi PyPI-arkiston pakettien analyysin tulokset haavoittuvuuksiin mahdollisesti johtavien mahdollisesti vaarallisten rakenteiden käytöstä. 197 tuhannen paketin analysoinnin aikana tunnistettiin 749 tuhatta mahdollista tietoturvaongelmaa. 46 prosentissa paketeista on ainakin yksi tällainen ongelma. Yleisimpiä ongelmia ovat poikkeusten käsittelyyn liittyvät puutteet ja koodin korvaamisen mahdollistavien ominaisuuksien käyttö.

Tunnistetuista 749 tuhannesta ongelmasta 442 tuhatta (41 %) leimattiin vähäisiksi, 227 tuhatta (30 %) kohtalaisiksi ja 80 tuhatta (11 %) vaarallisiksi. Jotkut paketit erottuvat joukosta ja sisältävät tuhansia ongelmia: esimerkiksi PyGGI-paketti tunnisti 2589 ongelmaa, jotka liittyivät pääasiassa "try-except-pass" -rakenteen käyttöön ja appengine-sdk-paketti 2356 ongelmaa. Suuri joukko ongelmia on myös genie.libs.ops-, pbcore- ja genie.libs.parser-paketeissa.

On huomattava, että tulokset on saatu automatisoidun staattisen analyysin perusteella, jossa ei oteta huomioon tiettyjen rakenteiden käyttökontekstia. Koodin skannaamiseen käytetyn bandit-työkalupakin kehittäjä ilmaisi näkemyksen, että väärien positiivisten tulosten melko suuren määrän vuoksi skannaustuloksia ei voida pitää suoraan haavoittuvuuksina ilman jokaisen ongelman manuaalista lisätarkistusta.

Analysaattori pitää esimerkiksi epäluotettavien satunnaislukugeneraattoreiden ja hajautusalgoritmien, kuten MD5, käyttöä turvallisuusongelmana, kun taas koodissa tällaisia ​​algoritmeja voidaan käyttää tarkoituksiin, jotka eivät vaikuta turvallisuuteen. Analysaattori pitää ongelmana myös ulkoisten tietojen käsittelyä vaarallisissa toiminnoissa, kuten pickle, yaml.load, aliprosessi ja eval, mutta tähän käyttöön ei välttämättä liity haavoittuvuutta ja itse asiassa näiden toimintojen käyttö voidaan toteuttaa ilman turvallisuusuhkaa. .

Tutkimuksessa käytetyistä testeistä:

  • Käyttäen mahdollisesti vaarallisia toimintoja exec, mktemp, eval, mark_safe jne.
  • Epäturvallinen tiedostojen käyttöoikeuksien asetus.
  • Verkkopistokkeen liittäminen kaikkiin verkkoliitäntöihin.
  • Käytä koodissa tarkasti määriteltyjä salasanoja ja avaimia.
  • Käyttämällä ennalta määritettyä väliaikaista hakemistoa.
  • Passin ja jatkamisen käyttäminen catch-all-tyylin poikkeuskäsittelijöissä;
  • Flask-verkkokehykseen perustuvien verkkosovellusten käynnistäminen virheenkorjaustilan ollessa käytössä.
  • Käyttää vaarallisia datan serialisointimenetelmiä.
  • Käyttää MD2-, MD4-, MD5- ja SHA1-hajautustoimintoja.
  • Turvattomien DES-salausten ja salaustilojen käyttö.
  • Turvattoman HTTPSConnection-toteutuksen käyttö joissakin Python-versioissa.
  • File://-mallin määrittäminen urlopenissa.
  • Näennäissatunnaisten lukugeneraattoreiden käyttö salaustehtäviä suoritettaessa.
  • Telnet-protokollan käyttäminen.
  • Turvattomien XML-jäsentimien käyttö.

Lisäksi voidaan huomata, että PyPI-hakemistosta havaittiin 8 haitallista pakettia. Ennen poistamista ongelmalliset paketit ladattiin yli 30 tuhatta kertaa. Haitallisen toiminnan piilottamiseksi ja varoitusten ohittamiseksi yksinkertaisista staattisista analysaattoreista paketeissa koodilohkot koodattiin Base64:llä ja suoritettiin dekoodauksen jälkeen eval-kutsulla.

Noblesse-, genesisbot-, are, kärsi-, noblesse2- ja noblessev2-paketit sisältävät koodin Chrome- ja Edge-selaimiin tallennettujen luottokorttien numeroiden ja salasanojen sieppaamiseen sekä tilitunnuksien siirtämiseen Discord-sovelluksesta ja järjestelmätietojen lähettämiseen, mukaan lukien kuvakaappaukset näytön sisällöstä. Pytagora- ja pytagora2-paketit sisälsivät mahdollisuuden ladata ja suorittaa kolmannen osapuolen suoritettavaa koodia.

Lähde: opennet.ru

Lisää kommentti