Laden pip und easy_install Python-Pakete sicher herunter?

2099
eug

Überprüfen sie beispielsweise eine digitale Signatur (wie apt-get und Windows Update) oder müssen sie SSL verwenden? Wenn nicht, bin ich ein bisschen besorgt, dass die heruntergeladenen Pakete trojanisiert werden könnten.

4
Ernst? Ihre Update-Tools könnten trojanisiert werden, das Repository könnte gehackt worden sein oder das Python-Paket selbst könnte eine Hintertür enthalten. Wenn Sie sich Sorgen machen, dass jemand Ihre Downloads vergiftet, sollten Sie die Pakete selbst installieren (die Hashberechnung auf Stift und Papier ausführen, um sicherzugehen, dass dies selbstverständlich ist!). Einfach gesagt, ich glaube, Sie locken in ein falsches Sicherheitsgefühl, wenn Sie der Meinung sind, dass digitale Signaturen die ultimative Antwort auf Viren sind. Thomas vor 12 Jahren 1
@Thomas Sie können jedoch eine Menge potenzieller Schäden verhindern, wenn Repositories infiziert werden. Thom Wiggers vor 12 Jahren 1
Sicher, digitale Signaturen schützen nicht vor einer Hintertür im Paket. Sie würden sich jedoch gegen DNS-Spoofing und Hijacking wehren. Und eine Möglichkeit, Hintertüren in Pakete zu packen, ist das Hacken von Entwicklermaschinen, z. B. mit einem Trojanerpaket. eug vor 12 Jahren 0

3 Antworten auf die Frage

3
serv-inc

Pip wurde aktualisiert :

SSL-Zertifikatüberprüfung

Ab Version 1.3 bietet pip SSL-Zertifikatsüberprüfung über https, um Man-in-the-Middle-Angriffe auf PyPI-Downloads zu verhindern.

Version 8.0 bietet auch die Möglichkeit, gegen lokale Hashes zu prüfen .

2
Mikko Ohtamaa

All Python packages are not hosted on pypi.python.org, but easy_install will look the PyPi page for download links. Many common packages like PIL and lxml use their own distribution server (which in fact often causes issues for package consumers). Example: http://pypi.python.org/pypi/PIL/

pypi.python.org itself does not seem to offer HTTPS support of any kind.

If you wish to provide secure easy_install / pip environment I suggest you mirror required packages to a server where you maintain HTTPS yourself and then restrict downloads to this server using --allow-hosts option:

http://packages.python.org/distribute/easy_install.html#restricting-downloads-with-allow-hosts

Hmmm .. da ich befürchtete, die Sicherheitsvorkehrungen für Python-Entwickler sind ziemlich erbärmlich. Vielen Dank für diesen Tipp - imho ist es für einige ein Schritt nach vorne - aber ich habe gerade einen Laptop und die Herausforderung ist sicher zu spiegeln. Momentan denke ich, dass der sicherste Weg das VCS-Repository der Projekte ist. eug vor 12 Jahren 1
Bitte sehen Sie die Antwort unten, diese Antwort ist veraltet. Mikko Ohtamaa vor 8 Jahren 1
1
Thom Wiggers

Where available, MD5 information should be added to download URLs by appending a fragment identifier of the form #md5=..., where ... is the 32-character hex MD5 digest. EasyInstall will verify that the downloaded file’s MD5 digest matches the given value.

http://packages.python.org/distribute/easy_install.html

It seems easy_install does some validation, but it seems it only checks if the package repository supplies the MD5 key.

The future plans section of the same page further hilights this:

Future plans:
- Signature checking? SSL? Ability to suppress PyPI search?

Aber wird der MD5-Schlüssel sicher aus dem Repository heruntergeladen? eug vor 12 Jahren 0
Es scheint, dass es vom Repository generiert wird und als solches nur für die Integrität des Downloads und nicht für die Überprüfung von schädlichem Code von Bedeutung ist. Thom Wiggers vor 12 Jahren 1