46% af Python pakka í PyPI geymslunni innihalda hugsanlega óöruggan kóða

Hópur vísindamanna frá háskólanum í Turku (Finnlandi) birti niðurstöður greiningar á pökkum í PyPI geymslunni fyrir notkun á hugsanlega hættulegum smíðum sem gætu leitt til varnarleysis. Við greiningu á 197 þúsund pökkum komu í ljós 749 þúsund hugsanleg öryggisvandamál. 46% pakka hafa að minnsta kosti eitt slíkt vandamál. Meðal algengustu vandamála eru annmarkar sem tengjast meðhöndlun undantekninga og notkun eiginleika sem leyfa skiptingu kóða.

Af 749 þúsund vandamálum sem greint var frá voru 442 þúsund (41%) merkt sem minniháttar, 227 þúsund (30%) sem miðlungs vandamál og 80 þúsund (11%) hættuleg. Sumir pakkar skera sig úr hópnum og innihalda þúsundir vandamála: til dæmis greindi PyGGI pakkinn 2589 vandamál, aðallega tengd notkun „try-except-pass“ smíðina, og appengine-sdk pakkinn fann 2356 vandamál. Mikill fjöldi vandamála er einnig til staðar í genie.libs.ops, pbcore og genie.libs.parser pökkunum.

Tekið skal fram að niðurstöður voru fengnar út frá sjálfvirkri stöðugreiningu, sem tekur ekki tillit til samhengis við beitingu ákveðinna mannvirkja. Hönnuður ræningjaverkfærakistunnar, sem notaður var til að skanna kóðann, lýsti þeirri skoðun sinni að vegna tiltölulega mikils fjölda falskra jákvæðra greina, geti niðurstöður skanna ekki beint talist veikleikar án frekari handvirkrar skoðunar á hverju atriði.

Til dæmis telur greiningartækið notkun óáreiðanlegra slembitölugjafa og hashing reiknirit, eins og MD5, vera öryggisvandamál, en í kóðanum má nota slík reiknirit í tilgangi sem hefur ekki áhrif á öryggi. Greiningartækið telur einnig hvers kyns vinnslu utanaðkomandi gagna í óöruggum aðgerðum eins og súrum gúrkum, yaml.load, undirferli og eval vandamál, en sú notkun felur ekki endilega í sér veikleika og í raun er hægt að útfæra notkun þessara aðgerða án öryggisógnar .

Meðal prófanna sem notuð voru í rannsókninni:

  • Að nota hugsanlega óöruggar aðgerðir exec, mktemp, eval, mark_safe o.s.frv.
  • Óörugg stilling á aðgangsrétti fyrir skrár.
  • Að tengja nettengi við öll netviðmót.
  • Notkun lykilorða og lykla sem eru stranglega tilgreind í kóðanum.
  • Að nota fyrirfram skilgreinda tímabundna skrá.
  • Að nota pass og halda áfram í catch-all-stíl undantekningarstjórnunar;
  • Ræsa vefforrit byggð á Flask veframma með kembiforrit virkt.
  • Notar óöruggar aðferðir við afseríðun gagna.
  • Notar MD2, MD4, MD5 og SHA1 kjötkássaaðgerðir.
  • Notkun óöruggra DES dulmáls og dulkóðunarhama.
  • Notkun óöruggrar HTTPSCConnection útfærslu í sumum útgáfum af Python.
  • Að tilgreina file:// kerfið í urlopen.
  • Notkun gervihandahófsnúmeragjafa þegar dulmálsverkefni eru framkvæmd.
  • Með því að nota Telnet samskiptareglur.
  • Notkun óöruggra XML-þátta.

Að auki má benda á að 8 skaðlegir pakkar fundust í PyPI skránni. Áður en þeim var fjarlægt var vandræðalegum pakka hlaðið niður meira en 30 þúsund sinnum. Til að fela illgjarn virkni og framhjá viðvörunum frá einföldum kyrrstöðugreiningartækjum í pökkum voru kóðablokkir kóðaðir með Base64 og keyrðir eftir afkóðun með eval-símtali.

Noblesse, genesisbot, are, suffer, noblesse2 og noblessev2 pakkarnir innihalda kóða til að stöðva kreditkortanúmer og lykilorð sem eru geymd í Chrome og Edge vöfrum, auk þess að flytja reikningsauðkenni úr Discord forritinu og senda kerfisgögn, þar á meðal skjámyndir af innihaldi skjásins. Pytagora og pytagora2 pakkarnir innihéldu getu til að hlaða og keyra keyranlegan kóða frá þriðja aðila.

Heimild: opennet.ru

Bæta við athugasemd