Facebook 宣布開源靜態(tài)分析工具 Pysa。這是 Instagram 上用于檢測和修復(fù)應(yīng)用程序龐大 Python 代碼庫中錯誤的一個內(nèi)部工具,可以自動識別 Facebook 工程師編寫的易受攻擊的代碼段,然后再將其集成到社交網(wǎng)絡(luò)的系統(tǒng)中。
其工作原理是在代碼運行 / 編譯之前,以靜態(tài)的形式掃描代碼、查找潛在已知的錯誤模式、然后幫助開發(fā)者標(biāo)注出潛在的問題。Facebook 聲稱,Pysa 現(xiàn)已通過持續(xù)改進達到了成熟;在 2020 上半年,該工具在 Instagram 服務(wù)器端的 Python 代碼中檢測到了 44% 的安全漏洞。
Pysa 是 Python Static Analyzer 的首字母縮寫,其基于 Pyre 項目的開源代碼構(gòu)建,可以對 Python 應(yīng)用程序中的數(shù)據(jù)流進行分析。此外,Pysa 還可以檢測常見的 Web 應(yīng)用安全問題,例如 XSS 和 SQL 注入。
Pysa 的開發(fā)汲取了 Zoncolan 的經(jīng)驗,其使用了與 Zoncolan 相同的算法執(zhí)行靜態(tài)分析,甚至與 Zoncolan 共享了一些代碼。像 Zoncolan 一樣,Pysa 可追蹤程序中的數(shù)據(jù)流。Zoncolan 是 Facebook 于 2019 年 8 月發(fā)布的用于 Hack 的靜態(tài)分析器,主要面向類似于 PHP 的編程語言。
Pysa 和 Zoncolan 都可對輸入代碼庫的數(shù)據(jù) “源”和 “接收器”進行查找,且都可以跟蹤數(shù)據(jù)在代碼庫中的移動方式,并找到危險的 “接收器”部分,例如可以執(zhí)行代碼或檢索敏感用戶數(shù)據(jù)的函數(shù)。當(dāng)在輸入源和危險的接收器之間發(fā)現(xiàn)連接時,Pysa(和 Zoncolan)就會向開發(fā)者發(fā)出警示,以便其展開相應(yīng)的調(diào)查。
此外,Pysa 也是為提高速度而構(gòu)建的,它能夠在 30 分鐘到幾小時內(nèi)處理數(shù)百萬行代碼。Pysa 的另一個特性則是具有可擴展性,F(xiàn)acebook 安全工程師 Graham Bleaney 稱,“因為我們自己的產(chǎn)品使用了開源的 Python 服務(wù)器框架,比如 Django 和 Tornado,所以 Pysa 可以從第一次運行就開始發(fā)現(xiàn)使用這些框架的項目的安全問題。而將 Pysa 用于我們尚未涉及的框架,一般來說只需添加幾行配置,告訴 Pysa 數(shù)據(jù)進入服務(wù)器的位置即可。”
關(guān)鍵詞: