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