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

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

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

Учёные из Университета Турку в Финляндии провели проверку пакетов 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».

Теги:
Хабы:
Всего голосов 6: ↑5 и ↓1+12
Комментарии3

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

Истории

Работа

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

7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань