Le dépôt de paquets Python PyPI (Python Package Index) a introduit un nouveau méthode sécurisé de publication des paquets, permettant de se passer de la conservation de mots de passe fixes et de jetons d'accès API sur des systèmes externes (par exemple, dans GitHub Actions). Cette nouvelle méthode d'authentification, appelée 'Trusted Publishers', vise à résoudre le problème de la publication de mises à jour malveillantes résultant de la compromission de systèmes externes et de la capture de mots de passe ou de jetons prédéfinis par des acteurs malveillants.
Le nouveau méthode d'authentification repose sur l'utilisation de la norme OpenID Connect (OIDC), qui implique l'utilisation de jetons d'authentification à durée limitée, échangés entre les services externes et le catalogue PyPI pour confirmer l'opération de publication d'un paquet, au lieu d'utiliser des identifiants classiques ou des jetons d'accès API générés manuellement. La possibilité d'utiliser le mécanisme 'Trusted Publishers' est déjà mise en œuvre pour les gestionnaires exécutés dans GitHub Actions. Il est prévu d'étendre le support de Trusted Publishers à d'autres services externes à l'avenir.
Les paquets accompagnateurs peuvent, du côté de PyPI, établir un indicateur de confiance pour les identifiants fournis par des fournisseurs externes OpenID (IdP, OpenID Connect Identity Provider), que le service externe utilisera pour demander des jetons éphémères auprès de PyPI. Les jetons générés par OpenID Connect confirment le lien entre le projet et le gestionnaire, permettant à PyPI d'effectuer une vérification supplémentaire des métadonnées, par exemple en s'assurant que le paquet publié est lié à un dépôt spécifique. Les jetons ne sont pas stockés, sont liés à des API spécifiques et expirent automatiquement après une courte durée de vie.
Il convient également de noter le rapport de la société Sonatype, qui fait état de la détection en mars 2023 de 6933 paquets malveillants dans le répertoire PyPI. Depuis 2019, le nombre total de paquets malveillants identifiés dans PyPI a dépassé 115 000. La plupart des paquets malveillants se cachent derrière des bibliothèques populaires grâce au type-squatting (utilisation de noms similaires, différant par quelques caractères, par exemple, exampl au lieu de example, djangoo au lieu de django, pyhton au lieu de python, etc.) — les malveillants comptent sur des utilisateurs inattentifs qui font des fautes de frappe ou qui ne remarquent pas les différences dans le nom lors de la recherche. Les actions malveillantes se limitent généralement à l'envoi de données sensibles, trouvées sur le système local à la suite de la détection de fichiers types contenant des mots de passe, des clés d'accès, des crypto-monnaies, des jetons, des cookies de session et d'autres informations confidentielles.
Source : opennet.ru
