Cercetătorii de la JFrog au descoperit în imaginea Docker «cabotage-app» un token care oferă acces cu drepturi de administrator la repozitoarele Python, PyPI și Python Software Foundation pe GitHub. Tokenul a fost găsit în fișierul binar «__pycache__/build.cpython-311.pyc» cu bytecode compilat în cache.

Potrivit reprezentanților repozitorului PyPI, tokenul a fost creat în 2023 pentru dezvoltatorul ewdurbin (Ee Durbin), care ocupă funcția de director de infrastructură în cadrul Python Software Foundation. Tokenul oferea acces cu drepturi de administrator la toate repozitoarele și organizațiile proiectului, inclusiv toate repozitoarele organizațiilor pypi, python, psf și pypa. Imaginea Docker problematică cu tokenul a fost publicată în catalogul Docker Hub pe 3 martie 2023 și a fost eliminată pe 11 iunie 2024, adică a fost disponibilă public timp de 16 luni. Tokenul a fost revocat pe 28 iunie.
Este remarcabil că în codul sursă disponibil pe baza căruia a fost generat fișierul problematic cu bytecode nu există mențiuni despre token. Autorul codului a explicat că, în timpul dezvoltării uneltelor cabotage-app5 pe sistemul său local, s-a confruntat cu limitări ale intensității accesului la API-ul GitHub atunci când a realizat funcția de încărcare automată a fișierelor din GitHub, iar pentru a ocoli limitele stabilite pentru accesările anonime, a adăugat temporar tokenul său de lucru în cod. Înainte de publicarea codului scris, tokenul a fost eliminat, dar dezvoltatorul nu a anticipat că mențiunea tokenului a fost stocată în fișierul precompilat cu bytecode, care a ajuns apoi în imaginea docker. def _fetch_github_file( — github_repository=»owner/repo», ref=»main», access_token=None, filename=»Dockerfile» + github_repository=»owner/repo», + ref=»main», + access_token=»0d6a9bb5af126f73350a2afc058492765446aaad», + filename=»Dockerfile», ):
Auditul activității în repozitoarele de pe GitHub efectuat de dezvoltatorii Python nu a evidențiat încercări externe de acces folosind tokenul expus. Având în vedere că, din 2017, GitHub este platforma principală pentru dezvoltarea CPython, obținerea tokenului de către un actor rău intenționat ar fi putut duce la compromiterea completă a infrastructurii utilizate pentru dezvoltarea Python și a repozitorului PyPI, precum și la încercări de integrare a backdoor-urilor în CPython și managerul de pachete PyPI.
Incidentul evidențiază importanța analizei scurgerilor nu doar în codul sursă, fișierele de configurare și variabilele de mediu, ci și în fișierele binare. În contextul Python, utilizatorilor li se recomandă să acorde atenție existenței fișierelor pyc, care conțin cod byte compilat, în proiectele descărcate, deoarece aceste fișiere pot conține modificări ascunse care nu sunt prezente în codul sursă.
Sursa: opennet.ro
