Безопасность при установке пакетов Python

Что нужно учитывать при установке пакетов через pip

Думать о безопасности нужно всегда. Особенно, когда пишешь код. И дважды особенно, когда пользуешься кодом других людей. Это сильно помогает сэкономить время и силы. Но вместе с этим может привести к проблемам, особенно, если не придерживаться хотя бы здравого смысла.

При программировании часто используемые классы, объекты и функции можно сохранять в модулях. Это такое официальное название для файлов с расширением .py. Условно модуль можно отличать от обычной программы на Python тем, что программа предназначена для запуска и выполнения, а модуль - для хранения часто используемых конструктов и импорта их в другие программы.

Пакет в Питоне - это каталог, содержащий другие каталоги и модули, а также специальные файлы. Пакеты используются для формирования пространства имен, что позволяет использовать разные модули, объединенные как правило общей темой.

Наиболее известным репозитарием таких пакетов является PyPI или Python Package Index. В PyPI можно найти и установить пакеты практически на любую тему. В 2022 году там содержалось более 370 тысяч различных пакетов.

Мне стало интересно, какие меры безопасности предпринимают другие разработчики, чтобы убедиться, что они не загружают из PyPI что-либо вредоносное. Ведь любой человек может загрузить свой пакет туда, и пока нет никаких проверок безопасности или превентивных мер, принятых самим PyPi.

Несколько полезных советов на эту тему:

  1. Если хоть немного разбираешься, то посмотри исходный код пакета перед его установкой.
  2. Устанавливай софт только от надежных разработчиков. На странице пакета посмотри хотя бы на статистику GitHub - количество звезд и форков. Чем их больше, тем больше людей пользуются этим пакетом и тем меньше вероятность получить злой код.
  3. Почитай Python Security doc о пакетах и PyPi.
  4. Обрати внимание на пакет Safety. Он проверяет установленные пакеты на наличие известных уязвимостей.
  5. Используй Safety DB - базу данных известных уязвимостей безопасности в пакетах Python для их выявления в установленных пакетах.

В конце декабря 2019 года Python Software Foundation объявили, что получили грант от Фейсбука и начнут работы по добавлению “расширенных функций безопасности” в Python Package Index.

Среди функций, которые планируется добавить будет проверяемая криптографическая подпись артефактов и автоматическое обнаружение вредоносных загрузок.

Пусть твой код и твои модули всегда будут в безопасности! :)