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

Facebook представил статический анализатор с открытым исходным кодом под названием "Pysa»(Статический анализатор Python), который предназначен для выявления потенциальных уязвимостей в коде Python.

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

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

Сегодня мы делимся подробностями о Pysa, инструменте статического анализа с открытым исходным кодом, который мы создали для обнаружения и предотвращения проблем безопасности и конфиденциальности в коде Python. В прошлом году мы рассказали, как создали Zoncolan, инструмент статического анализа, который помогает нам анализировать более 100 миллионов строк кода взлома и помогает инженерам предотвратить тысячи потенциальных проблем безопасности. Этот успех вдохновил нас на разработку Pysa, что является аббревиатурой от Python Static Analyzer.

Pysa использует те же алгоритмы выполнять статический анализ и даже делиться кодом с Zoncolan. Как Зонколан, Писа отслеживает потоки данных через программу.

Пользователь определяет источники (места происхождения важных данных), а также приемники (места, где исходные данные не должны заканчиваться).

Для приложений безопасности наиболее распространенными типами источников являются места, где данные, контролируемые пользователем, поступают в приложение, например словарь Django.

Получатели, как правило, гораздо более разнообразны, но могут включать API-интерфейсы, запускающие код, например evalили API, которые обращаются к файловой системе, напримерos.open

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

Работа анализатора все сводится к идентификации источников входящих данных и опасные вызовы, в которых не следует использовать исходные данные.

Pysa отслеживает прохождение данных через цепочку вызовов функций и связывает исходные данные с потенциально опасными местами в коде.

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

Распространенной уязвимостью, обнаруженной Pysa, является проблема открытого перенаправления (CVE-2019-19775) в платформе обмена сообщениями Zulip, вызванная передачей нечистых внешних параметров при отображении эскизов.

Возможности отслеживания потока данных Pysa могут использоваться для проверки использования дополнительных кадров и определения соответствия политикам использования пользовательских данных.

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

В Facebook анализатор используется для проверки кода сервиса Instagram.. В течение первого квартала 2020 года Pysa помогла выявить 44% всех проблем, обнаруженных инженерами Facebook в серверной кодовой базе Instagram.

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

Новый синтаксический анализатор разработан как дополнение к набору инструментов проверки типа Pyre и помещен в ваш репозиторий. Код выпущен под лицензией MIT.

В конце концов если вы хотите узнать об этом больше, вы можете проверить подробности в исходном посте. Ссылка такая.


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Будьте первым, чтобы комментировать

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.