技術編輯:徐九丨發自:思否編輯部git
近日,Facebook 宣佈開源靜態分析工具 Pysa。這是 Instagram 上用於檢測和修復應用程序龐大 Python 代碼庫中錯誤的一個內部工具,能夠自動識別 Facebook 工程師編寫的易受攻擊的代碼段,而後再將其集成到社交網絡的系統中。github
其工做原理是在代碼運行/編譯以前,以靜態的形式掃描代碼、查找潛在已知的錯誤模式、而後幫助開發者標註出潛在的問題。segmentfault
Facebook 表示該工具是內部開發,經過不斷完善如今已經成熟。Facebook 表示在 2020 年上半年,Pysa 在 Instagram 的服務器端 Python 代碼中檢測到了全部安全漏洞中的 44%。安全
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 跟蹤「經過程序的數據流」。spa
數據如何經過程序代碼流動很是重要。現在,大多數安全漏洞利用都利用了未通過濾或不受控制的數據流。例如,遠程代碼執行(RCE)是當今最嚴重的錯誤類型之一。
對於這類工具,若是要花費數天時間纔可以掃描整個代碼庫,那麼對於安全的防禦能力就會大打折扣。
所以,Pysa 的構建過程當中也考慮來速度的因素,可以在 30 分鐘到幾小時以內遍歷數百萬行代碼。這樣,Pysa 能夠近乎實時地發現錯誤,並使開發團隊能夠放心地將該工具集成到其常規工做流程和例程中,而沒必要擔憂使用它可能會延遲其代碼的發佈或未達到嚴格的期限。
GitHub 地址:https://github.com/facebook/p...