Facebook prezentis Pysa, senmovan analizilon por la lingvo Python

Facebook enkondukita malfermita statika analizilo pysa (Python Static Analyzer), dizajnita por identigi eblajn vundeblecojn en Python-kodo. La nova analizilo estas desegnita kiel aldonaĵo al la tipkontrola ilaro ŝtiparo kaj afiŝita en lia deponejo. Kodo eldonita sub la MIT-licenco.

Pysa provizas analizon de datumfluoj kiel rezulto de koda ekzekuto, kio permesas vin identigi multajn eblajn vundeblecojn kaj privatecajn problemojn asociitajn kun uzado de datumoj en lokoj kie ĝi ne devus aperi.
Ekzemple, Pysa povas spuri la uzon de krudaj eksteraj datumoj en vokoj kiuj lanĉas eksterajn programojn, en dosieroperacioj kaj en SQL-konstruaĵoj.

La laboro de la analizilo estas identigi fontojn de datumoj kaj danĝerajn vokojn, en kiuj la originalaj datumoj ne devus esti uzataj. Datumoj de interretaj petoj (ekzemple, la vortaro HttpRequest.GET en Django) estas konsiderataj kiel fonto, kaj alvokoj kiel eval kaj os.open estas konsiderataj kiel danĝeraj uzoj. Pysa spuras la fluon de datumoj tra la ĉeno de funkciovokoj kaj asocias la fontajn datumojn kun eble danĝeraj lokoj en la kodo. Tipa vundebleco identigita uzante Pysa mencias malferman alidirektigan problemon (CVE-2019-19775) en la mesaĝplatformo Zulip, kaŭzita de pasado de nepurigitaj eksteraj parametroj dum bildigo de bildetoj.

La datumfluaj spuraj kapabloj de Pysa povas apliki por kontroli la ĝustan uzon de pliaj kadroj kaj por determini konformecon al la uzantpolitiko de uzado de datumoj. Ekzemple, Pysa sen pliaj agordoj povas esti uzata por kontroli projektojn uzante la kadrojn Django kaj Tornado. Pysa ankaŭ povas detekti oftajn vundeblecojn en TTT-aplikoj, kiel ekzemple SQL-injekto kaj trans-eja skribado (XSS).

En Facebook, la analizilo estas uzata por kontroli la kodon de la Instagram-servo. En la unua trimonato de 2020, Pysa helpis identigi 44% de ĉiuj problemoj kiujn Facebook inĝenieroj trovis en la servilflanka kodbazo de Instagram.
Entute, la aŭtomata ŝanĝprocezo de Pysa identigis 330 temojn, el kiuj 49 (15%) estis taksitaj kiel gravaj kaj 131 (40%) kiel ne-severa. En 150 kazoj (45%) la problemoj estis klasifikitaj kiel falsaj pozitivoj.

fonto: opennet.ru

Aldoni komenton