技術編輯:徐九丨發自:思否編輯部
其工作原理是在代碼運行/編譯之前,以靜態的形式掃描代碼、查找潛在已知的錯誤模式、然後幫助開發者標註出潛在的問題。
Facebook 表示該工具是內部開發,通過不斷完善現在已經成熟。Facebook 表示在 2020 年上半年,Pysa 在 Instagram 的伺服器端 Python 代碼中檢測到了所有安全漏洞中的 44%。
Pysa 是什麼?
Pysa 是 Python Static Analyzer 的首字母縮寫,其基於 Pyre 項目的開原始碼構建,可以對 Python 應用程式中的數據流進行分析。此外,Pysa 還可以檢測常見的 Web 應用安全問題,例如 XSS 和 SQL 注入。
其實 Pysa 的概念並不新鮮,該工具的開發也借鑑來 Zoncolan。Zoncolan 是 Facebook 於 2019 年 8 月發布的用於Hack的靜態分析器,主要面向 PHP。
Pysa 和 Zoncolan 都在尋找「源」(輸入代碼庫的數據)和「接收器」(數據結束)。兩種工具都可以跟蹤數據在代碼庫中的移動方式,並找到危險的「接收器」,例如可以執行代碼或檢索敏感用戶數據的函數。
此外,Pysa 也是為提高速度而構建的,它能夠在 30 分鐘到幾小時內處理數百萬行代碼。Pysa 的另一個特性則是具有可擴展性,Facebook 安全工程師Graham Bleaney 稱,「因為我們自己的產品使用了開源的 Python 伺服器框架,比如 Django 和 Tornado,所以 Pysa 可以從第一次運行就開始發現使用這些框架的項目的安全問題。而將 Pysa 用於我們尚未涉及的框架,一般來說只需添加幾行配置,告訴 Pysa 數據進入伺服器的位置即可。」
專為安全團隊開發
該工具的背後是 Facebook 安全團隊。該工具是圍繞安全團隊的需求而構建的。
儘管大多數靜態分析工具都在尋找各種各樣的錯誤,但 Pysa 是專門為尋找與安全相關的問題而開發的。更具體地說,Pysa 跟蹤「通過程序的數據流」。
數據如何通過程序代碼流動非常重要。如今,大多數安全漏洞利用都利用了未經過濾或不受控制的數據流。例如,遠程代碼執行(RCE)是當今最嚴重的錯誤類型之一。
專為速度和大型代碼庫而設計
對於這類工具,如果要花費數天時間才能夠掃描整個代碼庫,那麼對於安全的防護能力就會大打折扣。
因此,Pysa 的構建過程中也考慮來速度的因素,能夠在 30 分鐘到幾小時之內遍曆數百萬行代碼。這樣,Pysa 可以近乎實時地發現錯誤,並使開發團隊可以放心地將該工具集成到其常規工作流程和例程中,而不必擔心使用它可能會延遲其代碼的發布或未達到嚴格的期限。
GitHub 地址:
https://github.com/facebook/pyre-check/
賽事推薦