Безопасно ли pip и easy_install загружают пакеты Python?
1989
eug
Например, проверяют ли они цифровую подпись (например, apt-get и Windows Update), или им может потребоваться использование SSL? Если нет, я немного обеспокоен тем, что загруженные пакеты могут быть троянскими.
Шутки в сторону? Ваши инструменты обновления могут быть троянскими, хранилище могло быть взломано или сам пакет Python может содержать бэкдор. Если вы обеспокоены тем, что кто-то может отравить ваши загрузки, вам следует установить пакеты самостоятельно (выполняя хеш-вычисления на ручке и бумаге, чтобы быть уверенным, конечно!). Проще говоря, я думаю, что вы заманиваете себя в ложное чувство безопасности, если считаете, что цифровые подписи являются окончательным ответом на вирусы.
Thomas 12 лет назад
1
@Thomas Они могут предотвратить большой потенциальный ущерб, когда репозитории заражены.
Thom Wiggers 12 лет назад
1
Несомненно, цифровые подписи не защитят от черного хода в пакете. Они будут защищаться от DNS-спуфинга и взлома. И способ поместить бэкдоры в пакеты - это взломать машины разработчика, например, с помощью троянского пакета;)
eug 12 лет назад
0
Все пакеты 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параметр:
Хммм ... как я и опасался, гарантии безопасности разработчика на python довольно жалки. Спасибо за этот совет - imho, для некоторых это шаг вперед - но у меня только один ноутбук, и проблема заключается в надежном зеркалировании. В настоящее время я думаю, что наиболее безопасный способ - проверить хранилище проектов VCS.
eug 12 лет назад
1
Пожалуйста, смотрите ответ ниже, этот ответ устарел.
Mikko Ohtamaa 8 лет назад
1
1
Thom Wiggers
Там, где это возможно, следует добавить информацию MD5 для загрузки URL-адресов, добавив идентификатор фрагмента в форме # md5 = ..., где ... - это шестнадцатеричный дайджест MD5 из 32 символов. EasyInstall проверит, соответствует ли дайджест MD5 загруженного файла указанному значению.
Кажется, easy_install делает некоторые проверки, но, кажется, он только проверяет, является ли репозиторий пакетов выдает ключ MD5.
Раздел будущих планов на той же странице дополнительно освещает это:
Планы на будущее: - Проверка подписи? SSL? Возможность подавить поиск PyPI?
но надежно ли загружен ключ MD5 из хранилища?
eug 12 лет назад
0
Нет. Кажется, он генерируется репозиторием и как таковой имеет значение только для целостности загрузки, а не для проверки вредоносного кода.
Thom Wiggers 12 лет назад
1