I ricercatori della società JFrog hanno scoperto all'interno dell'immagine Docker «cabotage-app» un token che fornisce accesso con diritti di amministratore ai repository Python, PyPI e Python Software Foundation su GitHub. Il token è stato trovato nel file binario «__pycache__/build.cpython-311.pyc» contenente bytecode compilato in cache.

Secondo quanto riportato dai rappresentanti del repository PyPI, il token è stato creato nel 2023 per lo sviluppatore ewdurbin (Ee Durbin), che ricopre nella Python Software Foundation il ruolo di direttore dell'infrastruttura. Il token forniva accesso con diritti di amministratore a tutti i repository e alle organizzazioni del progetto, inclusi tutti i repository delle organizzazioni pypi, python, psf e pypa. L'immagine Docker problematica contenente il token è stata pubblicata nel catalogo Docker Hub il 3 marzo 2023 ed è stata rimossa l'11 giugno 2024, quindi è stata per 16 mesi accessibile pubblicamente. Il 28 giugno, il token è stato revocato.
È interessante notare che nei codici sorgente disponibili, su cui è stato generato il file problematico con bytecode, non è menzionato il token. L'autore del codice ha spiegato che, durante lo sviluppo dell'utility cabotage-app5, si è imbattuto nei limiti di frequenza di accesso all'API di GitHub mentre svolgeva la funzione di caricamento automatico di file da GitHub e, per aggirare i limiti imposti per le richieste anonime a GitHub, ha temporaneamente aggiunto il proprio token di lavoro nel codice. Prima della pubblicazione del codice, il token è stato rimosso, ma lo sviluppatore non ha tenuto conto del fatto che la menzione del token fosse stata memorizzata nella cache nel file precompilato di bytecode, che poi è finito nell'immagine 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”, ):
L'audit condotto dagli sviluppatori di Python sulle attività nei repository di GitHub non ha rivelato tentativi di accesso non autorizzati utilizzando il token esposto. Considerato che dal 2017 GitHub è la piattaforma principale per lo sviluppo di CPython, la cattura del token da parte di un malintenzionato potrebbe portare a una compromissione totale dell'infrastruttura utilizzata per lo sviluppo di Python e del repository PyPI, nonché a tentativi di integrazione di backdoor in CPython e nel gestore pacchetti PyPI.
L'incidente evidenzia l'importanza di analizzare le perdite non solo nel codice sorgente, nei file di configurazione e nelle variabili d'ambiente, ma anche nei file binari. Nel contesto di Python, si consiglia agli utenti di prestare attenzione alla presenza nei progetti caricati di file pyc con bytecode compilato, poiché questi file potrebbero contenere modifiche nascoste assenti nel codice sorgente.
Fonte: opennet.ru
