Facebook представил Pysa, статический анализатор для языка Python
8 августа 2020 года
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%) проблемы были отнесены к ложным срабатываниям.
Источники
правитьЛюбой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.