Как стать автором
Обновить

Исследователи утверждают, что 46 % пакетов PyPI содержат хотя бы одну уязвимость

Время на прочтение 2 мин
Количество просмотров 3.1K

Учёные из Университета Турку в Финляндии провели проверку пакетов PyPl на предмет наличия потенциально вредоносных конструкций. В ходе исследования они обнаружили, что почти в половине из проанализированных пакетов присутствует как минимум одна уязвимость. Чаще всего уязвимости связаны с обработкой исключений и использованием возможностей, допускающей подстановку кода.

Менеджерами пакетов по типу PyPl пользуются почти любая компания. Поэтому широкое распространение вредоносных пакетов — проблема насущная. Например, в феврале этого года исследователю Алексу Бирсану удалось взломать внутренние системы более 35 крупных компаний, включая Microsoft, Apple и Tesla. В ходе атаки Бирсан искал имена внутренних пакетов в файлах манифестов в репозиториях GitHub или в CDN компаний. После он создал поддельные пакеты npm, PyPI и RubyGems под теми же именами в репозиториях с открытым исходным кодом. Каждый вышел под реальным аккаунтом Бирсана с подписью: «Этот пакет предназначен для целей исследования безопасности и не содержит никакого полезного кода».

Учёные из Финляндии решили провести собственное исследование и проанализировать пакеты PyPl на наличие в них ошибок, приводящих к уязвимостям.  

В общей сложности авторы изучили 197 тысяч пакетов. Из них около 46 % содержали как минимум одну ошибку. В среднем исследователи фиксировали по три ошибки на пакет. Всего удалось найти 749 тысяч проблем разной степени тяжести: 442 тысячи (59 %) незначительной, 227 тысяч (30 %) умеренной и 80 тысяч (11 %) тяжёлой. 

В пакетах PyGGI, appengine-sdk, genie.libs.ops, pbcore и genie.libs.parser авторы обнаружили больше тысячи ошибок в каждом. В PyGGI найдено 2589 проблем, связанных с конструкцией try-except-pass. Как отмечают авторы, в большинстве случаев эти проблемы незначительны. 

Пакет appengine-sdk содержит более серьёзные ошибки. В нём обнаружили 2356 проблем, часть из которых связана с межсайтовым выполнением сценариев и потенциально небезопасными сетевыми протоколами. В пакетах noblesse, genesisbot, are, suffer, noblesse2 и noblessev2 нашли код для перехвата данных кредитных карт и телефонов, сохранённых в Chrome и Edge. Кроме того, они содержали код для передачи токенов учётных записей из Discord. Пакеты pytagora и pytagora2 загружали и выполняли сторонний исполняемый код. Чаще остальных встречались проблемы с обработкой исключений и инъекциями кода. 

Анализ проводили с использованием инструмента Bandit, сканирующего код. Его разработчик в ответе на исследование указал на ненадёжность инструмента и необходимость ручной проверки результатов. В связи с этим, по его словам, результаты исследования нельзя использовать для оценки безопасности Python. В свою очередь исследователи отметили, что даже при всех недостатках анализа результаты указывают на распространённость уязвимостей в пакетах. 

Материалы исследования опубликованы в arXiv в статье «A Large-Scale Security-Oriented Static Analysis of Python Packages in PyPI».

Теги:
Хабы:
+12
Комментарии 3
Комментарии Комментарии 3

Другие новости

Истории

Работа

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн
PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн