Les chercheurs de GitGuardian ont publié les résultats d'une analyse des données confidentielles oubliées par les développeurs dans le code hébergé sur le dépôt de paquets Python PyPI (Python Package Index). Après avoir examiné plus de 9,5 millions de fichiers et 5 millions de versions de paquets liés à 450 000 projets, 56866 fuites de données confidentielles ont été détectées. Si l'on ne considère que les données uniques, sans doublons dans différentes versions, le nombre de fuites détectées s'élevait à 3938, et le nombre de projets comportant au moins une fuite était de 2922.
Plus de 150 types de fuites d'informations confidentielles ont été identifiés, parmi lesquels des mots de passe courants, des clés cryptographiques, des jetons d'accès à des services cloud, à des systèmes d'intégration continue et à des API. Au moins 768 identifiants étaient encore actifs au moment de l'étude. En exemple de fuites populaires qui restent d'actualité, on trouve des clés d'accès à Azure Active Directory, des identifiants SSH, MongoDB, MySQL et PostgreSQL, des clés pour l'application OAuth de GitHub, Dropbox et Auth0, ainsi que des identifiants pour Coinbase et Twilio.
Parmi les types de fuites qui gagnent en popularité, les jetons d'accès aux bots sur Telegram sont mentionnés, leur nombre ayant doublé au début de 2021 puis à nouveau doublé au printemps 2023. Une augmentation constante des fuites a également été observée depuis 2020 concernant les clés d'accès à l'API Google, et depuis 2022, pour les identifiants de bases de données. Les paquets qui se distinguent par le nombre de fuites comprennent les paquets chatllm et safire, dans lesquels 209 clés pour OpenAI et 320 clés pour Google Cloud ont été oubliées.
Parmi les types de fichiers ayant le plus grand nombre de fuites, en plus des fichiers avec l'extension « .py », on note les fichiers avec l'extension .json (610 fuites), .md (270), PKG-INFO (240), METADATA (210), .txt (170), ainsi que les fichiers README (209) et les fichiers des répertoires nommés test (675). De nombreuses fuites sont également liées à des négligences et des erreurs dans la configuration des exceptions de fichiers lors de la création de packages. Par exemple, les fichiers de configuration locaux (.cookiecutterrc, .env, .pypirc, etc.) peuvent être exclus du dépôt Git via le fichier « .gitignore », qui n'est pas pris en compte lors de la création du package. En particulier, 43 fichiers .pypirc contenant des informations d'identification pour accéder à PyPI ont été trouvés dans le dépôt. Dans 15 cas de fuites, les développeurs n'avaient pas l'intention de publier publiquement des packages initialement créés pour un usage interne, mais les ont publiés par erreur sur PyPI.
On peut également mentionner deux autres événements liés à PyPI :
- Dans le dépôt PyPI, 8 paquets malveillants ont été identifiés, présentés comme des utilitaires d'obfuscation, c'est-à-dire des outils rendant le code illisible, compliquant ainsi la restauration de l'algorithme. Les paquets identifiés contenaient dans leurs noms la chaîne « pyobf » (Pyobftoexe, Pyobfusfile, Pyobfexecute, Pyobfpremium, Pyobflight, Pyobfadvance, Pyobfuse et pyobfgood) et ont été téléchargés plus de 2000 fois.
Le code malveillant intégré dans les paquets était spécifique à la plateforme Windows et permettait de se connecter à un contrôleur externe. serveur, d'exécuter des commandes arbitraires sur l'ordinateur du développeur, de trouver et d'envoyer à un serveur externe des informations confidentielles, telles que des clés d'accès, ainsi que de transférer des fichiers arbitraires depuis le système. De plus, le code malveillant pouvait fonctionner comme un keylogger, intercepter les mots de passe saisis dans Chrome, prendre des captures d'écran, enregistrer du son et même contrôler la webcam.
- Les résultats de l'audit indépendant du code de l'outil utilisé pour la gestion du dépôt pypi.org et du framework « cabotage », intégré dans l'infrastructure pour l'orchestration des conteneurs, ont été publiés. L'audit a été réalisé avec le soutien de l'organisation à but non lucratif OTF (Open Technology Fund). Au cours de l'audit, aucun problème à haut risque n'a été identifié et les codes sources ont été jugés conformes aux exigences fondamentales en matière de sécurisation du code. Toutefois, il a été noté que la couverture des tests du code de cabotage est insuffisante, et 29 problèmes ont été identifiés, dont huit ont été classés comme de niveau modéré, six de niveau faible, et 14 signalés comme des remarques informatives.
Les problèmes les plus notables :
- Un contrôle insuffisant des signatures numériques utilisées pour l'intégration de PyPI avec AWS SNS permettait d'envoyer des notifications par e-mail à des utilisateurs individuels.
- Une fuite d'informations dans le gestionnaire de téléchargements, permettant de déterminer l'existence d'un compte sans générer d'événements de tentatives de connexion.
- L'utilisation de hachages cryptographiques peu fiables, n'excluant pas les attaques par empoisonnement de cache.
- En cas de droits pour exécuter des processus de construction via cabotage, un attaquant pourrait potentiellement substituer ses propres commandes.
- En cas de droits de déploiement dans cabotage, un attaquant pourrait potentiellement déployer une image d'apparence légitime.
Source : opennet.ru
