Pysa, statika analizilo por Python ofertita de Facebook

Facebook enkondukis malfermfontan statikan analizilon nomatan «Pysa»(Python Static Analyzer) kiu estas desegnita por identigi eblajn vundeblecojn en Python-kodo.

pysa disponigas datumfluan analizon kiel rezulto de kodekzekuto, kiu permesas identigi multajn eblajn vundeblecojn kaj problemojn pri privateco rilate al la uzo de datumoj en lokoj, kie ĝi ne aperu.

Ekzemple, Pysa povas spuri la uzon de krudaj eksteraj datumoj en alvokoj kiuj plenumas eksterajn programojn, en dosieraj operacioj kaj en SQL-konstruoj.

Hodiaŭ ni dividas detalojn pri Pysa, malfermfonteca statika analiza ilo, kiun ni kreis por detekti kaj malhelpi sekurecajn kaj privatajn problemojn en Python-kodo. Pasintjare ni konigis kiel ni kreis Zoncolan, statikan analizilon, kiu helpas nin analizi pli ol 100 milionojn da linioj de haka kodo kaj helpis inĝenierojn malhelpi milojn da eblaj sekurecaj problemoj. Tiu sukceso inspiris nin disvolvi Pysa, kiu estas akronimo de Python Static Analyzer.

Pysa uzas la samajn algoritmojn fari statikan analizon kaj eĉ dividi kodon kun zoncolan. Kiel Zoncolan, Pysa spuras datumfluojn tra programo.

La uzanto difinas fontojn (lokojn, kie devenas gravaj datumoj) kaj ankaŭ lavujojn (lokoj, kie la fontaj datumoj ne devas finiĝi).

Por sekurecaj programoj, la plej oftaj specoj de fontoj estas lokoj, kie uzataj datumoj eniras la programon, kiel la vortaro Django.

Riceviloj emas esti multe pli diversaj, sed povas inkluzivi APIojn, kiuj administras kodon, kiel ekzemple eval, aŭ APIoj kiuj aliras la dosiersistemon, kielos.open

Pysa plenumas ripetajn analizojn por konstrui abstraktaĵojn por determini kiuj funkcioj redonas datumojn de fonto kaj kiuj funkcioj havas parametrojn, kiuj fine trafis lavujon. Se Pysa trovas, ke fonto fine konektas al lavujo, ĝi raportas problemon. 

Analizila laboro ĝi reduktiĝas al identigado de alvenantaj datenfontoj kaj danĝeraj alvokoj, en kiuj la originalaj datumoj ne estu uzataj.

Pysa kontrolas la paŝon de datumoj tra la ĉeno de vokoj de funkcioj kaj asocias la originalajn datumojn kun eble danĝeraj lokoj en la kodo.

Ĉar ni uzas malfermfontajn Python-servilajn kadrojn kiel Django kaj Tornado por niaj propraj produktoj, Pysa povas ekfari sekurecajn problemojn en projektoj, kiuj uzas ĉi tiujn kadrojn ekde la unua ekzekuto. Uzi Pysa por kadroj, por kiuj ni ankoraŭ ne havas kovron, estas ĝenerale tiel simpla kiel aldoni kelkajn agordajn liniojn por diri al Pysa, kie datumoj eniras la servilon.

Ofta vundebleco identigita de Pysa estas malferma alidirektila temo (CVE-2019-19775) en la platformo de mesaĝado Zulip, kaŭzita de pasado de malpuraj eksteraj parametroj montrante bildetojn.

La datumfluaj spuraj kapabloj de Pysa povas esti uzataj por validigi la uzon de aldonaj kadroj kaj por determini plenumadon de politikoj pri uzado de datumoj.

Ekzemple, Pysa sen aldonaj agordoj povas esti uzata por kontroli projektojn per la kadroj Django kaj Tornado. Pysa ankaŭ povas identigi oftajn vundeblecojn en retaj programoj, kiel ekzemple SQL-anstataŭigo kaj trans-eja skribado (XSS).

En Facebook, la analizilo estas uzata por kontroli la kodon de la Instagram-servo. Dum la unua trimonato de 2020, Pysa helpis identigi 44% de ĉiuj problemoj trovitaj de Facebook-inĝenieroj en la servila koda bazo de Instagram.

Entute 330 problemoj estis identigitaj en la procezo de aŭtomata ŝanĝo-konfirmo per Pysa, 49 (15%) el kiuj estis taksitaj kiel signifaj kaj 131 (40%) ne estis danĝeraj. En 150 kazoj (45%) la problemoj estis atribuitaj al falsaj pozitivoj.

La nova analizilo estas desegnita kiel aldonaĵo al la ilaro por kontroli Pyre-tipon kaj estas metita en vian deponejon. La kodo estas publikigita sub la licenco MIT.

Fine se vi volas scii pli pri ĝi, vi povas kontroli la detalojn en la originala afiŝo. La ligo estas ĉi tio.


La enhavo de la artikolo aliĝas al niaj principoj de redakcia etiko. Por raporti eraron alklaku Ĉi tie.

Estu la unua por komenti

Lasu vian komenton

Via retpoŝta adreso ne estos eldonita. Postulita kampojn estas markita per *

*

*

  1. Respondeculo pri la datumoj: Miguel Ángel Gatón
  2. Celo de la datumoj: Kontrola SPAM, administrado de komentoj.
  3. Legitimado: Via konsento
  4. Komunikado de la datumoj: La datumoj ne estos komunikitaj al triaj krom per laŭleĝa devo.
  5. Stokado de datumoj: Datumbazo gastigita de Occentus Networks (EU)
  6. Rajtoj: Iam ajn vi povas limigi, retrovi kaj forigi viajn informojn.