Forskere fra GitGuardian har offentliggjort resultaterne af analysen af fortrolige data, der er blevet glemt af udviklere i koden, der er placeret i Python-pakke-repositoryet PyPI (Python Package Index). Efter at have undersøgt over 9,5 millioner filer og 5 millioner udgivelser af pakker relateret til 450.000 projekter, blev der identificeret 56.866 tilfælde af lækage af fortrolige data. Hvis man kun ser på unikke data, uden duplikater i forskellige udgivelser, udgjorde antallet af identificerede lækager 3.938, og antallet af projekter, der indeholder mindst én lækage, var 2.922.
I alt er der identificeret over 150 typer lækager af fortrolige oplysninger, herunder almindelige adgangskoder, kryptografiske nøgler, tokens til adgang til cloud-tjenester, systemer til kontinuerlig integration og API'er. Mindst 768 legitimationsoplysninger forblev aktive på tidspunktet for undersøgelsen. Som eksempler på populære, relevante lækager nævnes adgangsnøgler til Azure Active Directory, legitimationsoplysninger til SSH, MongoDB, MySQL og PostgreSQL, nøgler til GitHub OAuth App, Dropbox og Auth0, samt loginoplysninger til Coinbase og Twilio.
Blandt de stigende typer af lækager nævnes tokens til adgang til bots i Telegram, hvis antal er fordoblet i begyndelsen af 2021 og derefter endnu en gang fordoblet i foråret 2023. En konstant stigning i lækager er også blevet registreret siden 2020 for adgangsnøgler til Google API, mens der siden 2022 har været en stigning i legitimationsoplysninger til databaser. Af pakker, der fører listen over antallet af lækager, nævnes pakkerne chatllm og safire, hvor 209 nøgler til OpenAI og 320 nøgler til Google Cloud blev glemt.
Bland de filtyper, hvor der er konstateret det højeste antal lækager, udover filer med filtypen «.py», bemærkes filer med filtypen .json (610 lækager), .md (270), PKG-INFO (240), METADATA (210), .txt (170), samt README-filer (209) og filer fra mapper med navnet test (675). Mange lækager er også relateret til forsømmelser og fejl i konfigurationen af undtagelsesfiler ved pakkeoprettelse. For eksempel kan filer med lokale konfigurationsfiler (.cookiecutterrc, .env, .pypirc osv.) udelukkes fra Git-repositoriet via filen «.gitignore», som ikke tages i betragtning ved oprettelse af pakken. Specifikt blev der fundet 43 .pypirc-filer i repositoriet, der indeholdt legitimationsoplysninger til adgang til PyPI. I 15 tilfælde var lækagerne forårsaget af, at udviklerne ikke havde til hensigt at offentliggøre pakker, der oprindeligt var skabt til intern brug, men fejlagtigt offentliggjorde dem på PyPI.
Der kan også nævnes to yderligere hændelser relateret til PyPI:
- Der er identificeret 8 ondsindede pakker i PyPI-repositoriet, der præsenteres som værktøjer til obfuskering, dvs. at gøre koden uleselig, hvilket gør det sværere at gendanne algoritmen. De identificerede pakker havde i navnet strengen «pyobf» (Pyobftoexe, Pyobfusfile, Pyobfexecute, Pyobfpremium, Pyobflight, Pyobfadvance, Pyobfuse og pyobfgood) og blev downloadet mere end 2000 gange.
Den integrerede ondsindede kode var specifik for Windows-platformen og gjorde det muligt at oprette forbindelse til en ekstern controller. serverDen kunne udføre vilkårlige kommandoer på udviklerens computer, finde og sende fortrolige oplysninger såsom adgangsnøgler til en ekstern server samt overføre vilkårlige filer fra systemet. Desuden kunne den ondsindede kode fungere som en keylogger, opsnappe passwords indtastet i Chrome, tage skærmbilleder, optage lyd og endda styre webkameraet.
- Resultaterne af den uafhængige revision af kodebasen for værktøjet, der anvendes til at organisere arbejdet med repository pypi.org, og rammeværket "cabotage", der er involveret i infrastrukturen til orkestrering af containere, er offentliggjort. Revisionen blev udført med støtte fra den non-profit organisation OTF (Open Technology Fund). Under revisionen blev der ikke fundet problemer med høj faregrad, og kildekoden blev anerkendt for at opfylde de grundlæggende krav til sikker kodning. Dog blev der påpeget utilstrækkelig testdækning af kodebasen cabotage og identificeret 29 problemer, hvoraf otte blev tildelt en moderat faregrad, 6 en lav faregrad, og 14 blev kategoriseret som informerende bemærkninger.
De mest markante problemer:
- Utilstrækkelig validering af digitale signaturer, der bruges til integration af PyPI med AWS SNS, tillod at sende meddelelser til email-adresser på enkelte brugere.
- Informationslækage i uploaderen, der muliggør bestemmelse af eksisterende konti uden at generere loginforsøgsevents.
- Anvendelse af usikre kryptografiske hashfunktioner, der ikke udelukker cache poisoning-angreb.
- Hvis der er rettigheder til at starte byggeprocesser via cabotage, kunne angriberen potentielt substituere sine egne kommandoer.
- Hvis der er deploymentsrettigheder i cabotage, kunne angriberen potentielt udvikle et legitimt udseende image.
Kilde: opennet.ru
