Facebook推出了一種名為«Pysa的開源靜態分析器。»(Python靜態分析器) 旨在識別Python代碼中的潛在漏洞。
皮薩 提供數據流分析 由於執行代碼, 使您能夠識別許多潛在的漏洞和問題 與在不應出現的地方使用數據有關的隱私權。
例如,Pysa 可以跟踪調用中原始外部數據的使用 在文件操作和SQL構造中執行外部程序的代碼。
今天,我們分享有關Pysa的詳細信息,Pysa是一種開放源代碼靜態分析工具,我們已構建該工具來檢測和預防Python代碼中的安全性和隱私問題。 去年,我們分享了我們如何創建Zoncolan,這是一種靜態分析工具,可以幫助我們分析超過100億行的hack代碼,並幫助工程師預防了成千上萬的潛在安全問題。 這一成功激發了我們開發Pysa的經驗,Pysa是Python Static Analyzer的首字母縮寫。
Pysa使用相同的算法 執行靜態分析,甚至與 Zoncolan。 像贊科蘭,皮薩 跟踪程序中的數據流。
用戶定義源(重要數據來源的地方)和宿(源數據不應結束的地方)。
對於安全應用程序,最常見的源類型是用戶控制的數據進入應用程序的位置,例如Django字典。
接收器的種類往往更多,但可以包括運行代碼的API,例如 eval
,或訪問文件系統的API,例如os.open
.
Pysa執行反复的分析以構建摘要 確定哪些函數從源返回數據以及哪些函數具有最終到達接收器的參數。 如果Pysa發現某個源最終連接到接收器,則會報告問題。
分析儀工作 它歸結為識別傳入的數據源 和危險電話,不得使用原始數據。
Pysa監視通過函數調用鏈進行的數據傳遞,並將原始數據與代碼中潛在危險的位置相關聯。
由於我們將Django和Tornado之類的開源Python服務器框架用於自己的產品,因此Pysa可能從一開始就開始在使用這些框架的項目中遇到安全問題。 使用Pysa來處理我們還沒有覆蓋的框架,通常只要添加幾條配置行來告訴Pysa數據進入服務器的位置就很簡單。
Pysa識別的一個常見漏洞是Zulip消息傳遞平台中的一個開放重定向問題(CVE-2019-19775),由在顯示縮略圖時傳遞不干淨的外部參數引起。
Pysa的數據流跟踪功能可用於驗證其他框架的使用並確定是否符合用戶數據使用策略。
例如: 無需其他配置的Pysa即可用於使用框架驗證項目 Django和龍捲風。 Pysa還可以識別Web應用程序中的常見漏洞,例如SQL替換和跨站點腳本(XSS)。
在Facebook上,分析器用於驗證Instagram服務的代碼。 在2020年第一季度,Pysa幫助發現了Facebook工程師在Instagram的服務器端代碼庫中發現的所有問題的44%。
在此過程中總共發現了330個問題 使用Pysa進行的自動變更驗證,其中49(15%)被評估為重要,而131(40%)則沒有危險。 在150個案例中(45%),問題歸因於誤報。
新的解析器被設計為Pyre類型驗證工具包的附件,並放置在您的存儲庫中。 該代碼是根據MIT許可發布的。
終於 如果您想了解更多, 您可以在原始帖子中查看詳細信息。 鏈接是這個。