„Pysa“, „Facebook“ siūlomas „Python“ statinis analizatorius

„Facebook“ pristatė atvirojo kodo statinį analizatorių, pavadintą „Pysa»(„ Python Static Analyzer “), kuris yra skirta nustatyti galimus „Python“ kodo pažeidžiamumus.

pysa teikia duomenų srauto analizę dėl kodo vykdymo, kuris leidžia nustatyti daugybę galimų pažeidžiamumų ir problemų privatumą, susijusį su duomenų naudojimu tose vietose, kur jie neturėtų pasirodyti.

Pavyzdžiui, Pysa gali stebėti neapdorotų išorinių duomenų naudojimą skambučiuose kurie vykdo išorines programas, failų operacijose ir SQL konstrukcijose.

Šiandien mes dalijamės išsamia informacija apie „Pysa“ - atvirojo kodo statinės analizės įrankį, kurį sukūrėme norėdami aptikti ir užkirsti kelią „Python“ kodo saugumo ir privatumo problemoms. Praėjusiais metais mes pasidalijome, kaip sukūrėme „Zoncolan“ - statinės analizės įrankį, kuris padeda analizuoti daugiau nei 100 milijonų įsilaužimo kodo eilučių ir padėjo inžinieriams išvengti tūkstančių galimų saugumo problemų. Ši sėkmė įkvėpė mus sukurti „Pysa“, kuris yra „Python Static Analyzer“ akronimas.

Pysa naudoja tuos pačius algoritmus atlikti statinę analizę ir netgi dalytis kodu su Zoncolanas. Kaip ir Zoncolanas, Pysa stebi duomenų srautus per programą.

Vartotojas apibrėžia šaltinius (vietas, iš kurių gaunami svarbūs duomenys), taip pat kriaukles (vietas, kur šaltinio duomenys neturėtų baigtis).

Saugos programose dažniausiai naudojami šaltiniai yra vietos, kuriose vartotojo valdomi duomenys patenka į programą, pavyzdžiui, „Django“ žodynas.

Imtuvai paprastai būna daug įvairesni, tačiau gali apimti API, vykdančius kodą, pvz evalarba API, kurios pasiekia failų sistemą, pvzos.open

Pysa atlieka iteracinius analizės etapus, kad sudarytų santraukas nustatyti, kurios funkcijos grąžina duomenis iš šaltinio ir kurios funkcijos turi parametrus, kurie ilgainiui pasiekia kriauklę. Jei Pysa nustato, kad šaltinis galiausiai prisijungia prie kriauklės, jis praneša apie problemą. 

Analizatoriaus darbas tai leidžia nustatyti gaunamus duomenų šaltinius ir pavojingi skambučiai, kuriuose neturėtų būti naudojami pirminiai duomenys.

Pysa stebi duomenų perdavimą per funkcijų iškvietimų grandinę ir pirminius duomenis susieja su potencialiai pavojingomis kodo vietomis.

Kadangi savo produktams naudojame atvirojo kodo „Python“ serverio sistemas, tokias kaip „Django“ ir „Tornado“, „Pysa“ gali susidurti su saugos problemomis projektuose, kuriuose šios sistemos naudojamos nuo pat pirmojo paleidimo. „Pysa“ naudojimas rėmams, kurių aprėptis dar nėra, paprastai yra taip paprasta, kaip pridėti keletą konfigūracijos eilučių, kad „Pysa“ nurodytų, kur duomenys patenka į serverį.

Bendras Pysa nustatytas pažeidžiamumas yra atvira peradresavimo problema (CVE-2019-19775) „Zulip“ susirašinėjimo platformoje, kurią sukelia perduoti nešvarūs išoriniai parametrai rodant miniatiūras.

„Pysa“ duomenų srauto stebėjimo galimybės gali būti naudojamos patvirtinant papildomų rėmelių naudojimą ir nustatant, ar laikomasi vartotojo duomenų naudojimo politikos.

Pavyzdžiui, „Pysa“ be papildomų konfigūracijų gali būti naudojama projektams patikrinti naudojant sistemas Django ir Tornado. „Pysa“ taip pat gali nustatyti dažniausiai pasitaikančias žiniatinklio programų spragas, tokias kaip SQL pakeitimas ir kelių svetainių scenarijai (XSS).

„Facebook“ analizatorius naudojamas „Instagram“ paslaugos kodui patikrinti. Pirmąjį 2020 m. Ketvirtį „Pysa“ padėjo nustatyti 44 proc. Visų „Facebook“ inžinierių rastų problemų „Instagram“ serverio kodo bazėje.

Iš viso buvo nustatytos 330 problemų automatinio pokyčių patikrinimo naudojant „Pysa“, iš kurių 49 (15 proc.) buvo įvertinti kaip reikšmingi, o 131 (40 proc.) nebuvo pavojingi. 150 atvejų (45 proc.) Problemos buvo siejamos su klaidingai teigiamais rezultatais.

Naujas analizatorius sukurtas kaip „Pyre“ tipo patvirtinimo įrankių rinkinio priedas ir dedamas į jūsų saugyklą. Kodas išleidžiamas pagal MIT licenciją.

Pagaliau jei norite apie tai daugiau sužinoti, išsamią informaciją galite patikrinti originaliame įraše. Nuoroda yra tokia.


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.