Как обстоят дела с безопасностью репозитория PyPI?
Вопрос давно уже волнует, теперь появился повод его задать.
Вот статья о том что какой-то школьник из Италии залил вредоносный код в виде библиотеки к Python.
Неужели о безопасности пользователей этого ресурса никто не беспокоится?
В статье рассказывается не совсем о злоумышленнике, но ведь могут быть проблемы серьезнее.
Ответы (1 шт):
Безопасность 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
Статья о том как злоумышленники используют сочетание общедоступных и частных пакетов.
Несколько пунктов из статьи о том как это можно предотвратить:
- Используйте закрепление зависимостей
- Используйте хеширование зависимостей
- Удалите использование --extra-index-url аргумента pip.
Подробнее в статье по ссылке.
Обязательно ознакомьтесь с бесплатными инструментами
SCA, такими какOchrona, и инструментамиSAST, такими какbandit, чтобы встроить дополнительные средства защиты в свои процессы разработки.
Источники:
Сообщение о проблеме безопасности PyPI(что делать при обнаружении)
Шпаргалка по лучшим практикам безопасности Python
Устранение путаницы в цепочке эксплойтов зависимостей(Обсуждение о проблеме)