Учёные из Университета Турку в Финляндии провели проверку пакетов 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».
Cost_Estimator
А на картинке у вас bootstrap вместо python.
ancotir Автор
Поменяла фото. Спасибо!
Cost_Estimator
О, декоратор. Теперь похоже, спасибо )