Pysa, статычны аналізатар Python, прапанаваны Facebook

Facebook прадставіў статычны аналізатар з адкрытым зыходным кодам пад назвай «Pysa»(Python Static Analyzer), які ёсць прызначаны для выяўлення патэнцыйных уразлівасцяў у кодзе Python

Пыса забяспечвае аналіз патоку дадзеных у выніку выканання кода, які дазваляе выявіць мноства патэнцыйных уразлівасцяў і праблем прыватнасці, звязанай з выкарыстаннем дадзеных у месцах, дзе яны не павінны з'яўляцца.

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

Сёння мы дзелімся падрабязнасцямі пра Pysa, інструмент статычнага аналізу з адкрытым зыходным кодам, які мы стварылі для выяўлення і прадухілення праблем бяспекі і прыватнасці ў кодзе Python. У мінулым годзе мы распавялі, як стварылі Zoncolan - інструмент статычнага аналізу, які дапамагае прааналізаваць больш за 100 мільёнаў радкоў узламанага кода і дапамог інжынерам прадухіліць тысячы патэнцыйных праблем бяспекі. Гэты поспех натхніў нас на распрацоўку Pysa, што з'яўляецца абрэвіятурай Python Static Analyzer.

Pysa выкарыстоўвае тыя ж алгарытмы для правядзення статычнага аналізу і нават абмену кодам Зонколан. Як і 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. Правы: у любы час вы можаце абмежаваць, аднавіць і выдаліць сваю інфармацыю.