Facebook je predstavio statički analizator otvorenog koda pod nazivom "Pysa»(Python Static Analyzer) koji je dizajniran da identificira potencijalne ranjivosti u Python kodu.
pysa pruža analizu protoka podataka kao rezultat izvršavanja koda, koji omogućava vam prepoznavanje mnogih potencijalnih ranjivosti i problema privatnosti koja se odnosi na upotrebu podataka na mjestima na kojima se oni ne bi trebali pojavljivati.
Na primjer, Pysa može pratiti upotrebu sirovih eksternih podataka u pozivima koji izvršavaju vanjske programe, u operacijama datoteka i u SQL konstrukcijama.
Danas dijelimo detalje o Pysi, alatu za statičku analizu otvorenog koda koji smo izgradili za otkrivanje i sprečavanje problema sa sigurnošću i privatnošću u Python kodu. Prošle godine podijelili smo kako smo stvorili Zoncolan, alat za statičku analizu koji nam pomaže analizirati više od 100 miliona linija hack koda i koji je pomogao inženjerima da spriječe hiljade potencijalnih sigurnosnih problema. Taj nas je uspjeh nadahnuo da razvijemo Pysa, što je skraćenica od Python Static Analyzer.
Pysa koristi iste algoritme za izvođenje statičke analize i čak dijeljenje koda sa zoncolan. Poput Zoncolana, Pysa prati protok podataka kroz program.
Korisnik definira izvore (mjesta odakle potječu važni podaci), kao i tone (mjesta na kojima izvorni podaci ne bi trebali završiti).
Za sigurnosne aplikacije, najčešći tipovi izvora su mjesta na kojima podaci kojima upravlja korisnik ulaze, poput Django rječnika.
Prijemnici imaju tendenciju da budu mnogo raznovrsniji, ali mogu uključivati API-je koji pokreću kod, kao što je eval
, ili API-ji koji pristupaju sistemu datoteka, kao što jeos.open
.
Pysa izvodi iterativne krugove analize za izradu sažetaka kako bi se utvrdilo koje funkcije vraćaju podatke iz izvora, a koje imaju parametre koji na kraju pogađaju sudoper. Ako Pysa otkrije da se izvor na kraju poveže sa sudoperom, prijavljuje problem.
Rad analizatora svodi se na identificiranje dolaznih izvora podataka i opasni pozivi, u kojima se izvorni podaci ne bi trebali koristiti.
Pysa nadzire prolazak podataka kroz lanac poziva funkcija i povezuje izvorne podatke s potencijalno opasnim mjestima u kodu.
Budući da za vlastite proizvode koristimo okvire Python servera otvorenog koda poput Django i Tornado, Pysa može početi nailaziti na sigurnosne probleme u projektima koji koriste te okvire od prvog pokretanja. Korištenje Pyse za okvire za koje još uvijek nemamo pokrivenost uglavnom je jednostavno kao dodavanje nekoliko konfiguracijskih linija da se Pysi kaže gdje podaci dolaze na server.
Česta ranjivost koju je identificirao Pysa je otvoreni problem preusmjeravanja (CVE-2019-19775) u Zulip platformi za razmjenu poruka, uzrokovan prosljeđivanjem nečistih vanjskih parametara pri prikazivanju sličica.
Pysine mogućnosti praćenja protoka podataka mogu se koristiti za provjeru valjanosti upotrebe dodatnih okvira i utvrđivanje usklađenosti s politikama korištenja korisničkih podataka.
Na primjer, Pysa bez dodatnih konfiguracija može se koristiti za provjeru projekata pomoću okvira Django i Tornado. Pysa također može identificirati uobičajene ranjivosti u web aplikacijama, poput zamjene SQL-a i skriptiranja na više lokacija (XSS).
Na Facebooku se analizator koristi za provjeru koda usluge Instagram. Tokom prvog kvartala 2020. godine, Pysa je pomogao identificirati 44% svih problema koje su pronašli Facebook inženjeri u Instagram-ovoj bazi kodova na serveru.
U procesu je identificirano 330 problema automatizirane provjere promjena pomoću Pysa, od kojih je 49 (15%) ocijenjeno značajnim, a 131 (40%) nije opasno. U 150 slučajeva (45%) problemi su pripisani lažno pozitivnim rezultatima.
Novi raščlanjivač dizajniran je kao dodatak paketu alata za provjeru tipa Pyre i smješten je u vaše spremište. Kôd je objavljen pod MIT licencom.
Konačno ako želite znati više o tome, detalje možete provjeriti u originalnom postu. Link je ovaj.