Les chercheurs de JFrog ont découvert dans l'image Docker « cabotage-app » un jeton permettant un accès administrateur aux dépôts Python, PyPI et Python Software Foundation sur GitHub. Ce jeton a été trouvé dans le fichier binaire « __pycache__/build.cpython-311.pyc » contenant des bytecode compilé mis en cache.

Selon les représentants du dépôt PyPI, le jeton a été créé en 2023 pour le développeur ewdurbin (Ee Durbin), qui occupe le poste de directeur de l'infrastructure au sein de l'organisation Python Software Foundation. Ce jeton offrait un accès administrateur à tous les dépôts et organisations du projet, incluant tous les dépôts des organisations pypi, python, psf et pypa. L'image Docker problématique contenant le jeton a été publiée dans le répertoire Docker Hub le 3 mars 2023 et a été retirée le 11 juin 2024, soit 16 mois d'accès public. Le 28 juin, le jeton a été révoqué.
Il est remarquable que dans les textes sources disponibles, sur la base desquels le fichier bytecode problématique a été généré, il n'y a aucune mention du jeton. L'auteur du code a expliqué qu'en développant l'outil cabotage-app5 sur son système local, il a rencontré des limitations d'intensité d'accès à l'API GitHub lors de l'exécution de la fonction de téléchargement automatisé de fichiers depuis GitHub, et pour contourner les limites imposées aux requêtes anonymes, il a temporairement ajouté son jeton de travail dans le code. Avant la publication du code, le jeton a été retiré, mais le développeur n'a pas pris en compte le fait que la mention du jeton avait été mise en cache dans le fichier précompilé de bytecode, qui a ensuite été inclus dans l'image 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 de l'activité dans les dépôts GitHub, réalisé par les développeurs de Python, n'a révélé aucune tentative d'accès non autorisé utilisant le jeton divulgué. Étant donné que GitHub est la principale plateforme pour le développement de CPython depuis 2017, une compromission du jeton par un attaquant aurait pu entraîner une compromission totale de l'infrastructure utilisée pour le développement de Python et du dépôt PyPI, ainsi que des tentatives d'intégration de portes dérobées dans CPython et le gestionnaire de paquets PyPI.
L'incident souligne l'importance d'analyser les fuites non seulement dans le code source, les fichiers de configuration et les variables d'environnement, mais aussi dans les fichiers binaires. Dans le contexte de Python, il est également recommandé aux utilisateurs d'être attentifs à la présence de fichiers pyc contenant du code byte compilé dans les projets téléchargés, car ces fichiers peuvent contenir des modifications cachées absentes dans le code source.
Source : opennet.ru
