2017-09-18 6 views
1

Récemment, il est venu des nouvelles de certains bibliothèques Malicious qui ont été téléchargés dans pypi (PyPI), voir:Vérification de l'intégrité des PyPI paquets Python

  1. Malicious libraries on PyPI
  2. Malicious modules found into official Python repository (ce lien contient la liste des paquets malveillants)
  3. Developers using malicious Python Modules

Je ne cherche pas à forwar d ces nouvelles mais j'essaye de m'empêcher moi et d'autres coéquipiers d'identifier si un paquet de PyPI n'a pas été changé par une partie externe.

Questions:

  1. Quelle sécurité contrôle dois-je utiliser une fois que je l'ai téléchargé un paquet de PyPI? MD5 ou une étape supplémentaire?
  2. La signature MD5 est-elle suffisante pour vérifier l'intégrité des paquetages Python?
+0

Le typosquattage n'a rien à voir avec le hachage. Vous devez vérifier si c'est le paquet en amont que vous utilisez. –

+0

Une autre question: Une fois que je télécharge un paquet et que je vois qu'il n'y a pas de typosquatting, la signature MD5 devrait-elle suffire à vérifier l'intégrité de ce paquet? –

+0

pip doit vérifier la signature MD5, et il n'est pas facile (si possible) d'entrer en collision. EDIT: la nouvelle interface PyPI (pypi.io) a migré vers SHA256. –

Répondre

1

En premier lieu, l'article décrit le danger de typosquattage, qui est causée par les développeurs d'installer aveuglément paquet par son nom sans vérifier si elle est le bon paquet en amont. Vous pouvez éviter cela en accédant au référentiel GitHub de l'auteur et en copiant les instructions d'installation correctement. En dehors de cela, les emballages peuvent être altérés mais peu probables. Comme les fichiers PyPI sont transférés via HTTPS, il n'est pas très logique d'aller chercher un hachage à partir du serveur et de le vérifier. (Si le compte de l'auteur ou le serveur PyPI est piraté, le hachage ne vous empêche pas d'installer des paquets malveillants.)

Si vous avez besoin d'une mesure de sécurité supplémentaire contre les compromissions du serveur, utilisez une version épinglée/hachage. Voir le document pour plus de détails.