Facebook представил Pysa,статический анализатор языка Python

Facebook представил открытый статический анализатор Pysa (Python Static Analyzer), предназначенный для выявления потенциальных уязвимостей в коде на языке Python. Новый анализатор оформлен в виде надстройки над инструментарием для проверки типов Pyre и размещён в его репозитории. Код опубликован под лицензией MIT.

Pysa обеспечивает анализ потоков данных в результате выполнения кода, что позволяет выявлять многие потенциальные уязвимости и проблемы с конфиденциальностью, связанные с использованием данных в тех местах, где они не должны фигурировать. Например, Pysa может отследить использование неочищенных внешних данных в вызовах, приводящих к запуску внешних программ, в файловых операциях и в конструкциях SQL.

Работа анализатора сводится к определению источников поступления данных и опасных вызовов, в которых исходные данные не должны применяться. В качестве источника рассматриваются данные из web-запросов (например, словарь HttpRequest.GET в Django), а в качестве опасных применений вызовы типа eval и os.open. Pysa отслеживает прохождение данных по цепочке вызовов функций и связывает исходные данные с потенциально опасными местами в коде. В качестве типовой уязвимости, выявленной при помощи Pysa, упоминается проблема с открытым редиректом (CVE-2019-19775) в платформе обмена сообщениями Zulip, вызванная передачей неочищенных внешних параметров при выводе миниатюр.

Возможности Pysa по отслеживанию потоков данных могут применяться для проверки корректности использования дополнительных фреймворков и для определения соответствия политики использования данных пользователя. Например, Pysa без дополнительных настроек может применяться для проверки проектов, использующих фреймворки Django и Tornado. Pysa также может выявлять типовые уязвимости в web-приложениях, такие как подстановка SQL-кода и межсайтовый скриптинг (XSS).

В Facebook анализатор применяется для проверки кода сервиса Instagram. За первый квартал 2020 года Pysa помог выявить 44% из всех проблем, найденных инженерами Facebook в серверной кодовой базе Instagram. Всего в процессе автоматизированной проверки изменений при помощи Pysa было выявлено 330 проблем, 49 (15%) из которых были оценены как значительные, а 131 (40%) неопасные. В 150 случаях (45%) проблемы были отнесены к ложным срабатываниям.


OpenNet
 
Назад
Сверху Снизу