Kërkuesit e GitGuardian publikuan rezultatet e analizës së të dhënave të ndjeshme, të harruara nga zhvilluesit në kodin e vendosur në repositorin e paketave Python PyPI (Python Package Index). Pas studimit të mbi 9.5 milion skedarëve dhe 5 milion lirimeve të paketave, të lidhura me 450 mijë projekte, janë zbuluar 56866 raste të rrjedhjes së të dhënave të ndjeshme. Duke marrë parasysh vetëm të dhënat unike, pa dyfishim në lirime të ndryshme, numri i rrjedhjeve të zbuluara arriti në 3938, dhe numri i projekteve që kanë pasur të paktën një rrjedhje është 2922.
Në total janë identifikuar më shumë se 150 lloje rrjedhjesh të informacionit të ndjeshëm, midis të cilave fjalëkalimet e zakonshme, çelësat e kriptografisë, tokenët e aksesit në shërbimet e cloud, sistemet e integrimit të vazhdueshëm dhe API-të. Të paktën 768 kredenciale mbetën aktive në momentin e zhvillimit të hulumtimit. Si shembuj të njohur të rrjedhjeve që ruajnë rëndësinë, përmenden çelësat e aksesit në Azure Active Directory, kredencialet për SSH, MongoDB, MySQL dhe PostgreSQL, çelësat për aplikacionet GitHub OAuth, Dropbox dhe Auth0, parametrat e hyrjes në Coinbase dhe Twilio.
Një nga tipet gjithnjë e më të njohura të shkarkimeve përmenden tokenët për akses në bota në Telegram, numri i të cilëve u dyfishua në fillim të vitit 2021 dhe pastaj u dyfishua përsëri në pranverën e vitit 2023. Rritja e vazhdueshme e shkarkimeve gjithashtu regjistrohet që nga viti 2020 për çelësat e aksesit në Google API, ndërsa që nga viti 2022 për informacionet e identifikimit në DBMS. Nga paketat që udhëheqin me numrin e shkarkimeve, përmenden paketat chatllm dhe safire, në të cilat u harruan 209 çelësa për OpenAI dhe 320 çelësa për Google Cloud.
Ndër llojet e skedarëve në të cilat janë identifikuar numri më i madh i rrjedhjeve, përveç skedarëve me zgjedhjen «.py», përmenden skedarët me zgjedhjen .json (610 rrjedhje), .md (270), PKG-INFO (240), METADATA (210), .txt (170), si dhe skedarët README (209) dhe skedarët nga katalogët me emrin test (675). Shumë rrjedhje janë gjithashtu të lidhura me neglizhencën dhe gabimet në konfigurim për përjashtimin e skedarëve gjatë formimit të paketave. Për shembull, skedarët me skedarë konfigurimi lokal (.cookiecutterrc, .env, .pypirc etj.) mund të përjashtohen nga depoja Git përmes skedarit «.gitignore», i cili nuk merret parasysh kur krijohet paketa. Në veçanti, në depo janë gjetur 43 skedarë .pypirc, që përmbajnë të dhëna identifikimi për akses në PyPI. Në 15 raste të rrjedhjeve, zhvilluesit nuk kishin planifikuar t'i publikojnë publikisht paketat, të krijuara fillimisht për përdorim të brendshëm, por i publikuan ato në PyPI nga gabimi.
Shtesë mund të përmenden edhe dy ngjarje të tjera lidhur me PyPI:
- Në depozitat PyPI janë identifikuar 8 paketa malinj, të paraqitura si utilitete për obfuskim, pra për të bërë kodin të paqartë, duke e vështirësuar rikonstrukimin e algoritmit të funksionimit. Paketat e identifikuara përmbanin në emrat e tyre fjalën "pyobf" (Pyobftoexe, Pyobfusfile, Pyobfexecute, Pyobfpremium, Pyobflight, Pyobfadvance, Pyobfuse dhe pyobfgood) dhe janë shkarkuar më shumë se 2000 herë.
Kodi malinj i integruar në paketat ishte specifik për platformën Windows dhe lejonte lidhjen me një menaxher të jashtëm. server, ekzekutimin e komandove të rastit në kompjuterin e zhvilluesit, gjetjen dhe dërgimin në një server të jashtëm të informacionit të ndjeshëm, siç janë çelësat e aksesit, si dhe transferimin e skedarëve të rastit nga sistemi. Për më tepër, kodi malinj mund të kryente funksione të keylogger, duke kapur fjalëkalimet e shkruara në Chrome, duke krijuar screenshot-e, regjistruar zë dhe madje menaxhuar web-kamerën.
- Të dhënat e një auditimi të pavarur të kodit për mjetet e përdorura për organizimin e punës në repositorin pypi.org dhe në kornizën "cabotage", e cila është angazhuar në infrastrukturën për orkestrimin e kontejnerëve, janë publikuar. Auditi u krye me mbështetje nga organizata jo fitimprurëse OTF (Open Technology Fund). Gjatë auditimit nuk u gjetën probleme me nivele të larta rreziku, dhe kodet burimore u vlerësuan si përputhëse me kërkesat themelore për shkrimin e sigurt të kodit. Megjithatë, u vërejt se mbulimi me teste i kodit të cabotage ishte i pamjaftueshëm dhe u gjetën 29 probleme, prej të cilave tetë u caktuan një nivel të moderuar rreziku, 6 një nivel të ulët, dhe 14 u etiketuan si shënime informative.
Problemet më të dukshme:
- Kontrolli i pamjaftueshëm i nënshkrimeve digjitale të përdorura për integrimin e PyPI me AWS SNS, duke lejuar dërgimin e njoftimeve në email të përdoruesve të veçantë.
- Shkaktimi i rrjedhjeve të informacionit në menaxherin e ngarkesave, duke i lejuar të përcaktohet ekzistenca e një llogarie pa gjenerimin e ngjarjeve për përpjekjet e login.
- Përdorimi i hash-eve kriptografike të pasigurta, të cilat nuk përjashtojnë sulmet për ndotjen e cache-it.
- Nëse ka të drejtat për të nisur procese ndërtimi përmes cabotage, sulmuesi potencialisht mund të arrijë të zëvendësojë komandat e tij.
- Nëse ka të drejtat e shpërndarjes (deployment) në cabotage, sulmuesi potencialisht mund të shpërndajë një imazh që duket legjitim.
Burimi: opennet.ru
