Как обстоят дела с безопасностью репозитория PyPI?

Вопрос давно уже волнует, теперь появился повод его задать.

Вот статья о том что какой-то школьник из Италии залил вредоносный код в виде библиотеки к Python.

Ссылка на статью

Неужели о безопасности пользователей этого ресурса никто не беспокоится?

В статье рассказывается не совсем о злоумышленнике, но ведь могут быть проблемы серьезнее.


Ответы (1 шт):

Автор решения: tomato-magnet-regulato

Безопасность PyPI

Каталог PyPI служит источником информации для систем обновления программного обеспечения на Python, что неизбежно ставит вопрос обеспечения информационной безопасности. Система управления библиотеками Python позволяет не доверяющим друг другу (англ. mutually distrustful) разработчикам делать свои библиотеки доступными пользователям. В настоящее время в PyPI отсутствует механизм защиты обнаружения обновлений (англ. update discovery) и процесса установки, но существует TUF (англ. The Update Framework) — прототип каркаса для безопасной работы с PyPI посредством утилиты easy_install.


Немного о easy_install

Несколько лет назад у easy_install были преимущества, например pip не поддерживал установки бинарников, а теперь поддерживает. Формат бинарников для pip - Wheels, пришедший на замену формату Egg, работающему с easy_install. Также pip стал поддерживать установку из систем контроля версий через префиксы "git+", "hg+", "bzr+", "svn+", например: pip install git+https://github.com/fact-project/smart_fact_crawler. На сегодняшний день преимуществ у easy_install почти нет.


safety

safety 2 doc

Проверяет зависимости Python на наличие известных уязвимостей безопасности и предлагает надлежащие исправления для обнаруженных уязвимостей.

Safety 2 — это следующая версия нашего ведущего в отрасли сканера зависимостей Python. Safety 2 — лучший способ проверить ваши зависимости Python на наличие уязвимостей безопасности и других рисков соответствия.


Bandit

Инструмент, предназначенный для поиска распространенных проблем безопасности в коде Python. Для этого Bandit обрабатывает каждый файл, строит из него AST и запускает соответствующие плагины для узлов AST. Как только Bandit завершит сканирование всех файлов, он создаст отчет.

Snyk Advisor

Проверка на популярность\безопасность желаемого пакета.


Предотвращение атак с путаницей зависимостей в Python

Статья о том как злоумышленники используют сочетание общедоступных и частных пакетов.

Несколько пунктов из статьи о том как это можно предотвратить:

  1. Используйте закрепление зависимостей
  2. Используйте хеширование зависимостей
  3. Удалите использование --extra-index-url аргумента pip.

Подробнее в статье по ссылке.

Обязательно ознакомьтесь с бесплатными инструментами SCA, такими как Ochrona, и инструментами SAST, такими как bandit , чтобы встроить дополнительные средства защиты в свои процессы разработки.

Источники:

PyPI - Википедия

pip или easy_install

Сообщение о проблеме безопасности PyPI(что делать при обнаружении)

Шпаргалка по лучшим практикам безопасности Python

Устранение путаницы в цепочке эксплойтов зависимостей(Обсуждение о проблеме)

→ Ссылка