Безопасно ли pip и easy_install загружают пакеты Python?

1989
eug

Например, проверяют ли они цифровую подпись (например, apt-get и Windows Update), или им может потребоваться использование SSL? Если нет, я немного обеспокоен тем, что загруженные пакеты могут быть троянскими.

4
Шутки в сторону? Ваши инструменты обновления могут быть троянскими, хранилище могло быть взломано или сам пакет Python может содержать бэкдор. Если вы обеспокоены тем, что кто-то может отравить ваши загрузки, вам следует установить пакеты самостоятельно (выполняя хеш-вычисления на ручке и бумаге, чтобы быть уверенным, конечно!). Проще говоря, я думаю, что вы заманиваете себя в ложное чувство безопасности, если считаете, что цифровые подписи являются окончательным ответом на вирусы. Thomas 12 лет назад 1
@Thomas Они могут предотвратить большой потенциальный ущерб, когда репозитории заражены. Thom Wiggers 12 лет назад 1
Несомненно, цифровые подписи не защитят от черного хода в пакете. Они будут защищаться от DNS-спуфинга и взлома. И способ поместить бэкдоры в пакеты - это взломать машины разработчика, например, с помощью троянского пакета;) eug 12 лет назад 0

3 ответа на вопрос

3
serv-inc

Pip has been updated:

SSL Certificate Verification

Starting with v1.3, pip provides SSL certificate verification over https, to prevent man-in-the-middle attacks against PyPI downloads.

Version 8.0 also has the functionality to check against local hashes.

2
Mikko Ohtamaa

Все пакеты Python не размещены на pypi.python.org, но easy_install будет искать на странице PyPi ссылки для скачивания. Многие распространенные пакеты, такие как PIL и lxml, используют свой собственный сервер распространения (который на самом деле часто вызывает проблемы у потребителей пакетов). Пример: http://pypi.python.org/pypi/PIL/

Кажется, сам pypi.python.org не предлагает никакой поддержки HTTPS.

Если вы хотите обеспечить безопасную среду easy_install / pip, я предлагаю вам зеркалировать необходимые пакеты на сервер, где вы сами поддерживаете HTTPS, а затем ограничить загрузку на этот сервер, используя --allow-hostsпараметр:

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

Хммм ... как я и опасался, гарантии безопасности разработчика на python довольно жалки. Спасибо за этот совет - imho, для некоторых это шаг вперед - но у меня только один ноутбук, и проблема заключается в надежном зеркалировании. В настоящее время я думаю, что наиболее безопасный способ - проверить хранилище проектов VCS. eug 12 лет назад 1
Пожалуйста, смотрите ответ ниже, этот ответ устарел. Mikko Ohtamaa 8 лет назад 1
1
Thom Wiggers

Там, где это возможно, следует добавить информацию MD5 для загрузки URL-адресов, добавив идентификатор фрагмента в форме # md5 = ..., где ... - это шестнадцатеричный дайджест MD5 из 32 символов. EasyInstall проверит, соответствует ли дайджест MD5 загруженного файла указанному значению.

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

Кажется, easy_install делает некоторые проверки, но, кажется, он только проверяет, является ли репозиторий пакетов выдает ключ MD5.

Раздел будущих планов на той же странице дополнительно освещает это:

Планы на будущее:
- Проверка подписи? SSL? Возможность подавить поиск PyPI?

но надежно ли загружен ключ MD5 из хранилища? eug 12 лет назад 0
Нет. Кажется, он генерируется репозиторием и как таковой имеет значение только для целостности загрузки, а не для проверки вредоносного кода. Thom Wiggers 12 лет назад 1

Похожие вопросы