Le référentiel PyPI contient du code potentiellement non sécurisé

Chercheurs de l'Université de Turku (Finlande) fait connaître récemment les résultats d'une analyse ils ont fait pour les packages dans le référentiel par PyPI pour l'utilisation de constructions potentiellement dangereuses qui pourraient générer des vulnérabilités. Dans l'analyse que environ 197.000 749.000 colis ont été effectués et XNUMX XNUMX problèmes de sécurité possibles ont été identifiés.

En d'autres termes, 46% des packages ont au moins un de ces problèmes, parmi lesquels les problèmes les plus courants sont ceux liés à la gestion des exceptions et à l'utilisation des capacités de substitution de code.

Sur les 749 442 problèmes identifiés, XNUMX XNUMX (41%) ont été marqués comme mineurs, 227 30 (XNUMX%) comme modérément dangereux et 80 11 (XNUMX%) comme dangereux.

L'ensemble de données est basé sur un instantané de tous les packages stockés dans le Python Package Index (PyPI) ...

En termes de types de problèmes, tels que la gestion des exceptions et les différentes injections de code ont été les problèmes les plus courants. En ce sens, le module threads se démarque. Compte tenu de la taille généralement réduite des paquets, les mesures de taille du logiciel ne prédisent pas bien le nombre de problèmes révélés par l'analyse. 

Certains packages sortent de l'ordinaire et contiennent des milliers de problèmes: Par exemple, 2589 problèmes ont été trouvés dans le package PyGGI, principalement liés à l'utilisation de la construction "try-except-pass", et 2356 problèmes ont été trouvés dans le package appengine-sdk. Il y a aussi beaucoup de problèmes dans les packages genie.libs.ops, pbcore et genie.libs.parser.

Il est à noter que les résultats ont été obtenus sur la base d'une analyse statique automatisée, qui ne prend pas en compte le contexte d'application de certaines structures.

Le développeur de Bandit, qui avait l'habitude de scanner le code, a suggéré qu'en raison du grand nombre de faux positifs, lles résultats de l'analyse ne peuvent pas être considérés comme des vulnérabilités directement sans examen manuel supplémentaire de chaque problème.

Par exemple, l'analyseur considère l'utilisation de générateurs de nombres aléatoires et d'algorithmes de hachage peu fiables tels que MD5 comme un problème de sécurité, alors que dans le code, de tels algorithmes peuvent être utilisés à des fins qui n'affectent pas la sécurité.

L'analyseur considère également que tout traitement de données externe dans des fonctions dangereuses comme pickle, yaml.load, subprocess et eval c'est un problème, mais cette utilisation n'est pas nécessairement associée à une vulnérabilité et, de fait, l'utilisation de ces fonctions peut être un problème mis en œuvre sans menace pour la sécurité.

Parmi les contrôles utilisés dans l'étude :

  • Utilisation de fonctions potentiellement dangereuses exec, mktemp, eval, mark_safe, etc.
  • Configuration non sécurisée des droits d'accès aux fichiers.
  • Connectez une prise réseau à toutes les interfaces réseau.
  • Utilisation de mots de passe et de clés cryptées.
  • Utilisation d'un répertoire temporaire prédéfini.
  • Utilisation de pass et continue dans les gestionnaires d'exceptions de style fourre-tout.
  • Lancez des applications Web basées sur le framework Web Flask avec le mode de débogage activé.
  • Utilisation de méthodes non sécurisées pour désérialiser les données.
  • Utilisation des fonctions de hachage MD2, MD4, MD5 et SHA1.
  • Utilisation de chiffrements DES non sécurisés et de modes de cryptage.
  • Utilisation d'une implémentation HTTPSConnection non sécurisée dans certaines versions de Python.
  • Spécification du fichier : // schéma dans urlopen.
  • Utilisez des générateurs de nombres pseudo-aléatoires lors de l'exécution de tâches cryptographiques.
  • Utilisation du protocole Telnet.
  • Utilisation d'analyseurs XML non sécurisés.

De plus, la détection de 8 packages malveillants dans le répertoire PyPI est mentionnée. Les packages problématiques ont été téléchargés plus de 30 64 fois avant d'être supprimés. Pour masquer les activités malveillantes et éviter les simples avertissements d'analyseur statique sur les packages, nous avons utilisé l'encodage par blocs avec du code utilisant le format BaseXNUMX et organisé son exécution après le décodage en appelant eval.

Le code trouvé dans les packages noblesse, genesisbot, sont, suff, noblesse2 et noblessev2 pour intercepter les numéros de carte de crédit et les mots de passe stockés dans les navigateurs Chrome et Edge, ainsi que pour transférer des jetons de compte depuis l'application Discord et envoyer des données du système, y compris des captures d'écran du contenu de l'écran. … Les packages pytagora et pytagora2 incluaient la possibilité de télécharger et d'exécuter du code exécutable tiers.

Enfin si vous souhaitez en savoir plus, vous pouvez vérifier les détails dans le lien suivant.


Soyez le premier à commenter

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.