Содержание

Безопасность при установке пакетов 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.

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

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