Facebook 開源Instagram 安全工具Pysa
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 數據進入服務器的位置即可。”