Një grup kërkuesish nga Universiteti i Turku (Finlandë) publikoi rezultatet e analizës së paketeve në repositorin PyPI për përdorimin e konstruktave potencialisht të rrezikshme, që mund të çojnë në shfaqjen e dobësive. Gjatë analizës së 197 mijë paketeve u identifikuan 749 mijë probleme të mundshme me sigurinë. Në 46% të paketeve ka të paktën një problem të tillë. Midis problemeve më të shpeshta janë mangësitë që lidhen me trajtimin e jashtësive dhe përdorimin e mundësive që lejojnë zëvendësimin e kodit.
Nga 749 mijë problemet e identifikuara, 442 mijë (41%) janë shënuar si të parëndësishme, 227 mijë (30%) si probleme me rrezik të moderuar dhe 80 mijë (11%) si të rrezikshme. Disa paketa dalin nga masa e përgjithshme dhe përmbajnë mijëra probleme: për shembull, në paketën PyGGI janë identifikuar 2589 probleme, kryesisht lidhur me aplikimin e konstruktës "try-except-pass", ndërsa në paketën appengine-sdk janë gjetur 2356 probleme. Një numër i madh problemesh gjithashtu ndodhet në paketat genie.libs.ops, pbcore dhe genie.libs.parser.
Duhet theksuar se rezultatet janë marrë në bazë të kryerjes së një analize statike automatike, e cila nuk merr parasysh kontekstin e përdorimit të konstruktave të caktuara. Zhvilluesi i instrumentit bandit, i cili u përdor për skanimin e kodit, shprehu mendimin se për shkak të numrit të konsiderueshëm të alarmeve false, rezultatet e kontrollit nuk mund të merren drejtpërdrejt si dobësi pa u kryer një rishikim manual të çdo problemi.
Për shembull, analizatori konsideron si një problem të sigurisë përdorimin e gjeneratorëve të rastësishëm të pasigurt dhe algoritmeve të hashing, siç është MD5, ndërsa në kod këto algoritme mund të përdoren për qëllime që nuk ndikojnë në siguri. Analizatori gjithashtu konsideron si problem çdo trajtim të të dhënave të jashtme në funksione të pasigurta, siç janë pickle, yaml.load, subprocess dhe eval, por ky përdorim nuk është domosdoshmërisht i lidhur me shfaqjen e dobësive dhe në të vërtetë përdorimi i funksioneve të përmendura mund të realizohet pa kërcënime të sigurisë.
Midis kontrolleve të përdorura në studim:
- Përdorimi i funksioneve potencialisht të pasigurta exec, mktemp, eval, mark_safe etj.
- Caktimi i pasigurt i të drejtave të aksesit për skedarët.
- Bashkimi i soketeve rrjetorë me të gjitha ndërfaqet rrjetore.
- Përdorimi i fjalëkalimeve dhe çelësave të hardkoduar në kod.
- Përdorimi i një katalogu të paracaktuar temporar.
- Përdorimi i pass dhe continue në trajtuesit e përjashtimeve të stilit catch-all;
- Ekzekutimi i aplikacioneve web mbi bazën e framework-ut web Flask me modalitetin e debukimit aktiv.
- Përdorimi i metodave të pasigurta të deserializimit të të dhënave.
- Përdorimi i funksioneve hash MD2, MD4, MD5 dhe SHA1.
- Përdorimi i algoritmeve të pasigurta të enkriptimit DES dhe modet e enkriptimit.
- Përdorimi i një implementimi të pasigurt të HTTPSConnection në disa versione të Python.
- Dëftimi i skemës file:// në urlopen.
- Përdorimi i gjeneratorëve të numrave pseudologjikë për ekzekutimin e detyrave kriptografike.
- Përdorimi i protokollit Telnet.
- Përdorimi i parserëve XML të pasigurt.
Për më tepër, mund të vërehet se janë zbuluar 8 paketa malinj në katalogun PyPI. Para heqjes, paketat problematike kishin arritur të shkarkoheshin më shumë se 30 mijë herë. Për të fshehur aktivitetin malinj dhe për të anashkaluar paralajmërimet e analistëve statikë të thjeshtë, në paketat ishte përdorur kodimi i blloqeve të kodit me ndihmën e Base64 dhe organizimi i ekzekutimit pas dekodimit përmes thirrjes eval.
Në paketat noblesse, genesisbot, are, suffer, noblesse2 dhe noblessev2 është zbuluar një kod për kapjen e numrave të kartave të kreditit dhe fjalëkalimeve të ruajtura në shfletuesit Chrome dhe Edge, si dhe për transmetimin e tokeneve të llogarive nga aplikacioni Discord dhe dërgimin e të dhënave të sistemit, duke përfshirë copje të përmbajtjes së ekranit. Në paketat pytagora dhe pytagora2 kishte mundësi për shkarkimin dhe ekzekutimin e kodit ekzekutiv të palëve të treta.
Burimi: opennet.ru
