Facebook tutvustas Pysa, Pythoni keele staatilist analüsaatorit

Facebook tutvustatud avatud staatiline analüsaator pysa (Python Static Analyzer), mis on loodud Pythoni koodi potentsiaalsete haavatavuste tuvastamiseks. Uus analüsaator on loodud tüübikontrolli tööriistakomplekti lisana Pyre ja postitati oma hoidlasse. Kood avaldatud MIT litsentsi alusel.

Pysa pakub koodi täitmise tulemusel toimuvate andmevoogude analüüsi, mis võimaldab tuvastada palju võimalikke haavatavusi ja privaatsusprobleeme, mis on seotud andmete kasutamisega kohtades, kus need ei tohiks ilmuda.
Näiteks saab Pysa jälgida väliste töötlemata andmete kasutamist väliseid programme käivitavates kõnedes, failitoimingutes ja SQL-i konstruktsioonides.

Analüsaatori töö taandub andmeallikate ja ohtlike kõnede tuvastamisele, mille puhul ei tohiks algandmeid kasutada. Veebipäringute andmeid (nt Django sõnastik HttpRequest.GET) käsitletakse allikana ning kutseid nagu eval ja os.open peetakse ohtlikuks kasutuseks. Pysa jälgib andmevoogu funktsioonikutsete ahela kaudu ja seostab lähteandmed potentsiaalselt ohtlike kohtadega koodis. Tüüpiline Pysa abil tuvastatud haavatavus mainib avatud ümbersuunamisprobleemi (CVE-2019-19775) Zulipi sõnumsideplatvormil, mille põhjuseks on puhastamata väliste parameetrite edastamine pisipiltide renderdamisel.

Pysa andmevoo jälgimise võimalused võivad kohaldada täiendavate raamistike õige kasutamise kontrollimiseks ja kasutajaandmete kasutamise poliitika järgimise kindlakstegemiseks. Näiteks saab ilma lisaseadeteta Pysat kasutada projektide kontrollimiseks Django ja Tornado raamistike abil. Pysa suudab tuvastada ka levinud turvaauke veebirakendustes, nagu SQL-i süstimine ja saidiülene skriptimine (XSS).

Facebookis kasutatakse analüsaatorit Instagrami teenuse koodi kontrollimiseks. 2020. aasta esimeses kvartalis aitas Pysa tuvastada 44% kõigist probleemidest, mille Facebooki insenerid leidsid Instagrami serveripoolses koodibaasis.
Kokku tuvastas Pysa automatiseeritud muudatuste ülevaatuse protsess 330 probleemi, millest 49 (15%) olid olulised ja 131 (40%) mittetõsised. 150 juhul (45%) liigitati probleemid valepositiivseteks.

Allikas: opennet.ru

Lisa kommentaar