Apakah pip dan easy_install mengunduh paket Python dengan aman?

4

Misalnya, apakah mereka memeriksa tanda tangan digital (seperti apt-get dan Pembaruan Windows) atau dapatkah mereka diminta untuk menggunakan SSL? Jika tidak, saya agak khawatir bahwa paket yang diunduh bisa saja trojan ..

eug
sumber
1
Serius? Alat pemutakhiran Anda bisa trojaned, repositori bisa diretas atau paket Python itu sendiri mungkin memiliki pintu belakang di dalamnya. Jika Anda khawatir tentang seseorang yang meracuni unduhan Anda, Anda harus menginstal paketnya sendiri (melakukan perhitungan hash pada pena dan kertas hanya untuk memastikan, tentu saja!). Sederhananya, saya pikir Anda memikat diri Anda ke rasa aman yang salah jika Anda berpikir tanda tangan digital adalah jawaban utama untuk virus.
Thomas
1
@ Thomas Mereka dapat mencegah banyak potensi kerusakan saat repositori terinfeksi.
Thom Wiggers
Tentu, tanda tangan digital tidak akan melindungi terhadap pintu belakang dalam paket. Mereka akan bertahan melawan spoofing dan pembajakan DNS. Dan cara memasukkan backdoors ke dalam paket adalah dengan meretas mesin pengembang, mis. dengan paket trojaned;)
eug

Jawaban:

3

Pip telah diperbarui :

Verifikasi Sertifikat SSL

Dimulai dengan v1.3, pip menyediakan verifikasi sertifikat SSL   https, untuk mencegah serangan man-in-the-middle terhadap unduhan PyPI.

Versi 8.0 juga memiliki fungsi periksa hash lokal .

serv-inc
sumber
2

Semua paket Python tidak di-host di pypi.python.org, tetapi easy_install akan mencari halaman PyPi untuk tautan unduhan. Banyak paket umum seperti PIL dan lxml menggunakan server distribusi mereka sendiri (yang sebenarnya sering menyebabkan masalah bagi konsumen paket). Contoh: http://pypi.python.org/pypi/PIL/

pypi.python.org sendiri sepertinya tidak menawarkan dukungan HTTPS dalam bentuk apa pun.

Jika Anda ingin memberikan lingkungan easy_install / pip aman saya sarankan Anda mencerminkan paket-paket yang diperlukan untuk server tempat Anda mengelola HTTPS sendiri dan kemudian membatasi unduhan ke server ini menggunakan --allow-hosts pilihan:

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

Mikko Ohtamaa
sumber
1
Hmmm .. karena saya khawatir perlindungan untuk keamanan pengembang python cukup menyedihkan. Terima kasih atas tipnya - karena ini adalah langkah maju untuk beberapa - tapi saya baru saja punya satu laptop, dan tantangannya adalah mirroring dengan aman. Saat ini saya sedang berpikir bahwa cara paling aman adalah dengan memeriksa repositori proyek VCS ..
eug
1
Silakan lihat jawabannya di bawah, jawaban ini sudah usang.
Mikko Ohtamaa
1

Jika tersedia, informasi MD5 harus ditambahkan untuk mengunduh URL dengan menambahkan pengenal fragmen dari formulir # md5 = ..., di mana ... adalah 32-karakter hex MD5 digest. EasyInstall akan memverifikasi bahwa intisari file MD5 yang diunduh cocok dengan nilai yang diberikan.

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

Tampaknya easy_install melakukan beberapa validasi, tetapi sepertinya itu hanya memeriksa apakah repositori paket memasok kunci MD5.

Itu rencana masa depan bagian dari halaman yang sama hilights lebih lanjut ini:

Rencana masa depan:
- Pengecekan tanda tangan? SSL? Kemampuan untuk menekan pencarian PyPI?

Thom Wiggers
sumber
tetapi apakah kunci MD5 diunduh dari repositori dengan aman?
eug
1
Tidak. Tampaknya ini dibuat oleh repositori, dan karena itu hanya memiliki arti untuk integritas unduhan, bukan untuk memeriksa kode berbahaya.
Thom Wiggers