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

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

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

Например Pysa може да проследява използването на сурови външни данни при разговори които изпълняват външни програми, във файлови операции и в SQL конструкции.

Днес споделяме подробности за Pysa, инструмент за статичен анализ с отворен код, който сме изградили за откриване и предотвратяване на проблеми със сигурността и поверителността в кода на Python. Миналата година споделихме как създадохме Zoncolan, инструмент за статичен анализ, който ни помага да анализираме над 100 милиона реда хак код и е помогнал на инженерите да предотвратят хиляди потенциални проблеми със сигурността. Този успех ни вдъхнови да разработим Pysa, което е акроним от Python Static Analyzer.

Pysa използва същите алгоритми за извършване на статичен анализ и дори споделяне на код с Zoncolan. Подобно на Zoncolan, Pysa проследява потоци от данни през програма.

Потребителят дефинира източници (места, откъдето произхождат важните данни), както и мивки (места, където данните на източника не трябва да свършват).

За приложенията за сигурност най-често срещаните видове източници са местата, където контролираните от потребителя данни влизат в приложението, като речника 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. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.