Një grup studiuesish nga Universiteti i Turku (Finlandë) publikoi rezultatet e analizës së paketave në repositorin PyPI për përdorimin e konstruktimeve potencialisht të rrezikshme që mund të çojnë në shfaqjen e dobësive. Gjatë analizës së 197 mijë paketave, u zbuluan 749 mijë probleme potenciale me sigurinë. Në 46% të paketave, ka të paktën një problem të tillë. Midis problemeve më të zakonshme janë dobësitë e lidhura me menaxhimin e përjashtimeve dhe përdorimin e mundësive që lejojnë mbivendosjen e kodit.
Nga 749 mijë probleme të zbuluara, 442 mijë (41%) janë shënuar si të vogla, 227 mijë (30%) si probleme me rrezik të moderuar dhe 80 mijë (11%) si të rrezikshme. Disa paketa dalin nga masa dhe përmbajnë mijëra probleme: për shembull, paketa PyGGI pati 2589 probleme, kryesisht të lidhura me përdorimin e konstruktimeve "try-except-pass", ndërsa në paketën appengine-sdk u gjetën 2356 probleme. Një numër i madh problemesh gjithashtu është i pranishëm në paketat genie.libs.ops, pbcore dhe genie.libs.parser.
Duhet theksuar se rezultatet janë marrë në bazë të realizimit të një analize statike automatizimi, e cila nuk merr parasysh kontekstin e përdorimit të konstruktimeve të caktuara. Zhvilluesi i mjetit bandit, i cili u përdor për skanimin e kodit, shprehu mendimin se për shkak të një numri të lartë të sinjaleve false, rezultatet e kontrollit nuk mund të merren drejtpërdrejt si dobësi pa u realizuar një rishikim manual të çdo problemi.
Për shembull, analizuesi e konsideron si një problem sigurie përdorimin e gjeneruesve të rastësishëm të pasigurt dhe algoritmeve të hashing, si MD5, ndërsa në kod këto algoritme mund të përdoren për qëllime që nuk ndikojnë në siguri. Analizuesi gjithashtu e konsideron si problem çdo trajtim të të dhënave të jashtme në funksione të pasigurta, si pickle, yaml.load, subprocess dhe eval, por ky përdorim nuk është domosdoshmërisht i lidhur me shfaqjen e dobësive dhe mund të implementohet pa rrezik nga siguria.
Ndër kontrollet e përdorura në hulumtim:
- Përdorimi i funksioneve potencialisht të pasigurta exec, mktemp, eval, mark_safe etj.
- Vendosja e pasigurt e të drejtave të aksesit për skedarët.
- Kjornimi i një soketi rrjeti në të gjithë ndërfaqet rrjetë.
- Përdorimi i password-eve dhe çelësave të koduar ngushtë në kod.
- Përdorimi i një katalogu të përkohshëm të paracaktuar.
- Përdorimi i pass dhe continue në menaxherët e përjashtimeve në stilin catch-all;
- ĂelĂ«si i aplikacioneve web tĂ« bazuara nĂ« çarjen e web-it Flask me modin debug tĂ« aktivizuar.
- Përdorimi i metodave të pasigurta të deserializimit të të dhënave.
- Përdorimi i funksioneve të hashing MD2, MD4, MD5 dhe SHA1.
- Përdorimi i enkripcioneve të pasigura DES dhe mënyrat e enkriptimit.
- Përdorimi i implementimit të pasigurt të HTTPSConnection në disa versione të Python.
- Specifikimi i skemës file:// në urlopen.
- Përdorimi i gjeneruesve të numrave pseudo-rastësor për realizimin e detyrave kriptografike.
- Përdorimi i protokollit Telnet.
- Përdorimi i parserëve të pasigurt XML.
Së fundmi, duhet të theksoj se, në katalogun PyPI janë zbuluar 8 paketa keqbërëse. Para se të fshiheshin, paketa problematike kishin realizuar më shumë se 30 mijë shkarkime. Për të fshehur aktivitetet e dëmshme dhe për të anashkaluar paralajmërimet e analizatorëve staticë të thjeshtë, në paketa u përdor kodimi i blloqeve me kod duke përdorur Base64 dhe organizimi i ekzekutimit pas dekodimit përmes thirrjes eval.
Në paketat noblesse, genesisbot, are, suffer, noblesse2 dhe noblessev2 u zbulua 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ë screenshotet e përmbajtjes së ekranit. Në paketat pytagora dhe pytagora2 kishte mundësi për të shkarkuar dhe ekzekutuar kodin e tretë.
Burimi: opennet.ru
