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

Facebook представив статичний аналізатор з відкритим кодом під назвою «Pysa»(Python Static Analyzer), який є призначений для виявлення потенційних вразливостей у коді Python.

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

Наприклад, Pysa може відстежувати використання необроблених зовнішніх даних у дзвінках що виконують зовнішні програми, у файлових операціях та в конструкціях 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. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.