46% e paketave Python në depo PyPI përmbajnë kod potencialisht të pasigurt

Një grup studiuesish nga Universiteti i Turkut (Finlandë) publikuan rezultatet e një analize të paketave në depon e PyPI për përdorimin e konstrukteve potencialisht të rrezikshme që mund të çojnë në dobësi. Gjatë analizës së 197 mijë paketave, janë evidentuar 749 mijë probleme të mundshme sigurie. 46% e paketave kanë të paktën një problem të tillë. Ndër problemet më të zakonshme janë mangësitë që lidhen me trajtimin e përjashtimeve dhe përdorimin e veçorive që lejojnë zëvendësimin e kodit.

Nga 749 mijë probleme të evidentuara, 442 mijë (41%) janë etiketuar si të vogla, 227 mijë (30%) si probleme mesatare dhe 80 mijë (11%) si të rrezikshme. Disa paketa dallohen nga turma dhe përmbajnë mijëra probleme: për shembull, paketa PyGGI identifikoi 2589 probleme, kryesisht të lidhura me përdorimin e konstruksionit "provo-përveç-kalimit" dhe paketa appengine-sdk gjeti 2356 probleme. Një numër i madh problemesh janë gjithashtu të pranishëm në paketat genie.libs.ops, pbcore dhe genie.libs.parser.

Duhet të theksohet se rezultatet janë marrë në bazë të analizës statike të automatizuar, e cila nuk merr parasysh kontekstin e aplikimit të strukturave të caktuara. Zhvilluesi i paketës së veglave bandit, i cili u përdor për të skanuar kodin, shprehu mendimin se për shkak të numrit mjaft të lartë të pozitivëve të rremë, rezultatet e skanimit nuk mund të konsiderohen drejtpërdrejt dobësi pa rishikim manual shtesë të secilës çështje.

Për shembull, analizuesi e konsideron përdorimin e gjeneratorëve të numrave të rastësishëm jo të besueshëm dhe algoritmeve hash, të tilla si MD5, si një problem sigurie, ndërsa në kod algoritme të tilla mund të përdoren për qëllime që nuk ndikojnë në siguri. Analizuesi gjithashtu konsideron një problem çdo përpunim të të dhënave të jashtme në funksione të pasigurta si pickle, yaml.load, subprocess dhe eval, por ky përdorim nuk përfshin domosdoshmërisht një cenueshmëri dhe në fakt përdorimi i këtyre funksioneve mund të zbatohet pa një kërcënim sigurie. .

Ndër testet e përdorura në studim:

  • Përdorimi i funksioneve potencialisht të pasigurta exec, mktemp, eval, mark_safe, etj.
  • Cilësim i pasigurt i të drejtave të aksesit për skedarët.
  • Lidhja e një prize rrjeti në të gjitha ndërfaqet e rrjetit.
  • Përdorimi i fjalëkalimeve dhe çelësave të specifikuar rreptësisht në kod.
  • Përdorimi i një drejtorie të përkohshme të paracaktuar.
  • Përdorimi i kalimit dhe vazhdimit në mbajtësit e përjashtimeve të stilit të kapjes;
  • Nisja e aplikacioneve në ueb bazuar në kornizën ueb Flask me modalitetin e korrigjimit të aktivizuar.
  • Përdorimi i metodave të pasigurta të deserializimit të të dhënave.
  • Përdor funksionet hash MD2, MD4, MD5 dhe SHA1.
  • Përdorimi i shifrave të pasigurta DES dhe mënyrave të kriptimit.
  • Përdorimi i një zbatimi të pasigurt HTTPSConnection në disa versione të Python.
  • Specifikimi i skemës file:// në urlopen.
  • Përdorimi i gjeneratorëve të numrave pseudorandom gjatë kryerjes së detyrave kriptografike.
  • Duke përdorur protokollin Telnet.
  • Përdorimi i analizuesve të pasigurt XML.

Për më tepër, mund të vërehet se 8 paketa me qëllim të keq u zbuluan në drejtorinë PyPI. Para heqjes, paketat problematike u shkarkuan më shumë se 30 mijë herë. Për të fshehur aktivitetin keqdashës dhe për të anashkaluar paralajmërimet nga analizuesit e thjeshtë statikë në paketa, blloqet e kodit u koduan duke përdorur Base64 dhe u ekzekutuan pas dekodimit duke përdorur një thirrje eval.

Paketat noblesse, genesisbot, janë, vuajnë, noblesse2 dhe noblessev2 përmbajnë kod për të përgjuar numrat dhe fjalëkalimet e kartës së kreditit të ruajtur në shfletuesit Chrome dhe Edge, si dhe për të transferuar argumentet e llogarisë nga aplikacioni Discord dhe për të dërguar të dhëna të sistemit, duke përfshirë pamjet e ekranit të përmbajtjes së ekranit. Paketat pytagora dhe pytagora2 përfshinin aftësinë për të ngarkuar dhe ekzekutuar kodin e ekzekutueshëm të palëve të treta.

Burimi: opennet.ru

Shto një koment