A Facebook bemutatta a "Pysa" nevű nyílt forráskódú statikus elemzőt»(Python Static Analyzer) amely célja a Python-kód potenciális sebezhetőségének azonosítása.
pysa adatfolyam-elemzést nyújt a kódfuttatás eredményeként, amely lehetővé teszi számos lehetséges sebezhetőség és probléma azonosítását adatvédelem az olyan helyeken történő felhasználással kapcsolatban, ahol azoknak nem szabad megjelenniük.
Például Pysa nyomon tudja követni a nyers külső adatok felhasználását a hívásokban amelyek külső programokat futtatnak, fájlműveletekben és SQL konstrukciókban.
Ma részleteket osztunk meg a Pysa-ról, egy nyílt forráskódú statikus elemző eszközről, amelyet a Python-kód biztonsági és adatvédelmi problémáinak észlelésére és megelőzésére építettünk. Tavaly megosztottuk, hogyan hoztuk létre a Zoncolan-t, egy statikus elemző eszközt, amely több mint 100 millió hack kódsor elemzésében segít, és segített a mérnököknek megakadályozni a lehetséges biztonsági problémák ezreit. Ez a siker inspirált minket a Pysa kifejlesztésére, amely a Python Static Analyzer rövidítése.
Pysa ugyanazokat az algoritmusokat használja statikus elemzés elvégzésére, és még a kód megosztására is zoncolan. Mint Zoncolan, Pysa is nyomon követi az adatfolyamokat egy programon keresztül.
A felhasználó meghatározza a forrásokat (azokat a helyeket, ahol a fontos adatok származnak), valamint az elnyeléseket (azokat a helyeket, ahol a forrás adatoknak nem szabad véget érniük).
A biztonsági alkalmazások esetében a leggyakoribb forrástípusok azok a helyek, ahol a felhasználó által vezérelt adatok belépnek az alkalmazásba, például a Django szótár.
A vevők általában sokkal változatosabbak, de tartalmazhatnak API-kat, amelyek futtatják a kódot, mint pl eval
, vagy a fájlrendszerhez hozzáférő API-k, példáulos.open
.
Pysa az iteratív elemzési köröket végzi absztraktok készítése céljából annak meghatározása, hogy mely függvények adják vissza az adatokat egy forrásból, és melyek azok a paraméterek, amelyek végül a süllyesztőt érik. Ha Pysa megállapítja, hogy egy forrás végül egy mosogatóhoz csatlakozik, akkor problémáról számol be.
Elemző munka a bejövő adatforrások azonosítására szolgál és veszélyes hívások, amelyekben az eredeti adatokat nem szabad felhasználni.
A Pysa figyeli az adatok továbbítását a függvényhívások láncolatán keresztül, és az eredeti adatokat a kód potenciálisan veszélyes helyeihez társítja.
Mivel nyílt forráskódú Python szerver keretrendszereket használunk saját termékeinkhez, például a Django és a Tornado, a Pysa már az első futtatáskor elkezdhet biztonsági problémákkal találkozni azokban a projektekben, amelyek ezeket a keretrendszereket használják. A Pysa használata olyan keretrendszerekhez, amelyekre még nincs lefedettség, általában olyan egyszerű, mint hozzáadni néhány konfigurációs sort, hogy megmondja a Pysa számára, hogy hol érkeznek adatok a szerverre.
A Pysa által azonosított gyakori sebezhetőség egy nyílt átirányítási probléma (CVE-2019-19775) a Zulip üzenetküldő platformon, amelyet a tisztátalan külső paraméterek átadása okoz a miniatűrök megjelenítésekor.
A Pysa adatfolyam-követési képességei felhasználhatók további keretek használatának érvényesítésére és a felhasználói adatfelhasználási irányelvek betartásának megállapítására.
Pl. A további konfigurációk nélküli Pysa felhasználható a keretekkel történő projektek ellenőrzésére Django és Tornado. A Pysa képes azonosítani a webalkalmazások gyakori sebezhetőségeit is, például az SQL-helyettesítést és a helyek közötti parancsfájlokat (XSS).
A Facebookon az elemzőt használják az Instagram szolgáltatás kódjának ellenőrzésére. 2020 első negyedévében a Pysa segített azonosítani a Facebook mérnökei által az Instagram szerveroldali kódbázisában talált problémák 44% -át.
A folyamat során összesen 330 problémát azonosítottak a Pysa segítségével végzett automatizált változásellenőrzésből 49-et (15%) értékeltek szignifikánsnak, 131-et (40%) pedig nem voltak veszélyesek. 150 esetben (45%) a problémákat hamis pozitív eredményeknek tulajdonították.
Az új elemző a Pyre típus-ellenőrző eszköztár kiegészítőjeként lett kialakítva, és a tárházába kerül. A kód kiadása az MIT licenc alatt történik.
Végül ha többet akarsz megtudni róla, ellenőrizheti a részleteket az eredeti bejegyzésben. A link ez.
Legyen Ön az első hozzászóló