46% van Python-pakkette in die PyPI-bewaarplek bevat potensieel onveilige kode

'n Groep navorsers van die Universiteit van Turku (Finland) het die resultate van 'n ontleding van pakkette in die PyPI-bewaarplek gepubliseer vir die gebruik van potensieel gevaarlike konstrukte wat tot kwesbaarhede kan lei. Tydens die ontleding van 197 duisend pakkette is 749 duisend potensiële sekuriteitsprobleme geïdentifiseer. 46% van pakkette het ten minste een so 'n probleem. Van die mees algemene probleme is tekortkominge wat verband hou met uitsonderingshantering en die gebruik van kenmerke wat kodevervanging toelaat.

Van die 749 duisend probleme wat geïdentifiseer is, is 442 duisend (41%) as gering bestempel, 227 duisend (30%) as matige probleme en 80 duisend (11%) as gevaarlik. Sommige pakkette staan ​​uit die skare en bevat duisende probleme: byvoorbeeld, die PyGGI-pakket het 2589 probleme geïdentifiseer, hoofsaaklik verwant aan die gebruik van die "probeer-behalwe-slaag"-konstruksie, en die appengine-sdk-pakket het 2356 probleme gevind. 'n Groot aantal probleme is ook teenwoordig in die genie.libs.ops-, pbcore- en genie.libs.parser-pakkette.

Daar moet kennis geneem word dat die resultate verkry is op grond van outomatiese statiese analise, wat nie die konteks van toepassing van sekere strukture in ag neem nie. Die ontwikkelaar van die bandiet-gereedskapstel, wat gebruik is om die kode te skandeer, het die mening uitgespreek dat as gevolg van die redelike hoë aantal vals positiewes, die skanderingsresultate nie direk as kwesbaarhede beskou kan word sonder bykomende handmatige hersiening van elke kwessie nie.

Byvoorbeeld, die ontleder beskou die gebruik van onbetroubare ewekansige getalgenerators en hashing-algoritmes, soos MD5, as 'n sekuriteitsprobleem, terwyl sulke algoritmes in die kode gebruik kan word vir doeleindes wat nie sekuriteit beïnvloed nie. Die ontleder beskou ook enige verwerking van eksterne data in onveilige funksies soos pickle, yaml.load, subprocess en eval as 'n probleem, maar hierdie gebruik behels nie noodwendig 'n kwesbaarheid nie en in werklikheid kan die gebruik van hierdie funksies geïmplementeer word sonder 'n sekuriteitsbedreiging .

Van die toetse wat in die studie gebruik is:

  • Gebruik potensieel onveilige funksies exec, mktemp, eval, mark_safe, ens.
  • Onveilige instelling van toegangsregte vir lêers.
  • Koppel 'n netwerksok aan alle netwerkkoppelvlakke.
  • Gebruik van wagwoorde en sleutels wat streng in die kode gespesifiseer word.
  • Gebruik 'n voorafbepaalde tydelike gids.
  • Gebruik pas en gaan voort in catch-all-style uitsondering hanteerders;
  • Begin webtoepassings gebaseer op die Flask-webraamwerk met ontfoutingsmodus geaktiveer.
  • Gebruik onveilige data deserialisering metodes.
  • Gebruik MD2, MD4, MD5 en SHA1 hash funksies.
  • Gebruik van onveilige DES-syfers en enkripsiemodusse.
  • Gebruik van 'n onveilige HTTPSCConnection-implementering in sommige weergawes van Python.
  • Spesifikasie van die lêer: // skema in urlopen.
  • Gebruik pseudorandom-getalgenerators wanneer kriptografiese take uitgevoer word.
  • Gebruik die Telnet-protokol.
  • Die gebruik van onveilige XML-ontleders.

Daarbenewens kan opgemerk word dat 8 kwaadwillige pakkette in die PyPI-gids opgespoor is. Voor verwydering is problematiese pakkette meer as 30 duisend keer afgelaai. Om kwaadwillige aktiwiteit te verberg en waarskuwings van eenvoudige statiese ontleders in pakkette te omseil, is kodeblokke met Base64 geënkodeer en uitgevoer na dekodering met 'n eval-oproep.

Die noblesse, genesisbot, is, suffer, noblesse2 en noblessev2-pakkette bevat kode om kredietkaartnommers en wagwoorde wat in Chrome- en Edge-blaaiers gestoor is, te onderskep, asook om rekeningtokens van die Discord-toepassing oor te dra en stelseldata te stuur, insluitend skermkiekies van skerminhoud. Die pytagora- en pytagora2-pakkette het die vermoë ingesluit om derdeparty-uitvoerbare kode te laai en uit te voer.

Bron: opennet.ru

Voeg 'n opmerking