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

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

e7407105c05a0a3e9580e07fce67a856.jpeg

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

© Habrahabr.ru