常見的靜態代碼分析方法有以下這些:
詞法分析:詞法分析方法是將源文件處理為token流,然后將token流與程序缺陷結構進行匹配,以查找不安全的函數調用。該方法的優點是能夠快速地發現軟件中的不安全函數,檢測效率較高。缺點是由于沒有考慮源代碼的語義,不能理解程序的運行行為,因此漏報率和誤報率比較高。基于該方法的分析工具主要有ITS4、Checkmar、RATS等。
數據流分析:數據流分析方法是通過確定程序某點上變量的定義和取值情況來分析潛在的安全缺陷,首先將代碼構造為抽象語法樹和程序控制流圖等模型,然后通過代數方法計算變量的定義和使用,描述程序運行時的行為,進而根據相應規則發現程序中的安全漏洞。該方法的優點是分析能力比較強,適合于對內存訪問越界、常數傳播等問題進行分析檢查。缺點是分析速度比較慢、檢測效率比較低。基于該方法的分析工具主要有Coverity、Klocworw、JLint等。
模型檢驗:模型檢驗方法是通過狀態遷移系統來判斷程序的安全性質,首先將軟件構造為狀態機或者有向圖等抽象模型,并使用模態或時序邏輯公式等形式化方法來描述安全屬性,然后對模型進行遍歷檢查,以驗證軟件是否滿足這些安全屬性。該方法的優點是對路徑和狀態的分析比較準確,缺點是處理開銷較大,因為需要窮舉所有的可能狀態,特別是在數據密集度較大的情況下。基于該方法的分析工具主要有MOPS、SLAM、JavaPathFinder等。
污點傳播分析:污點傳播分析方法是通過靜態跟蹤不可信的輸入數據來發現安全漏洞,首先通過對不可信的輸入數據進行標記,靜態跟蹤和分析程序運行過程中污點數據的傳播路徑,發現污點數據的不安全使用方式,進而分析出由于敏感數據(如字符串參數)被改寫而引發的輸入驗證類漏洞,如SQL注入、XSS等漏洞。該方法主要適用于輸入驗證類漏洞的分析,典型的分析工具是Pixy,它是一種針對PHP 語言的污點傳播分析工具,用于發掘PHP 應用中SQL注入、XSS等類型的安全漏洞,具有檢測效率高、誤報率低等優點。
回答所涉及的環境:聯想天逸510S、Windows 10。
常見的靜態代碼分析方法有以下這些:
詞法分析:詞法分析方法是將源文件處理為token流,然后將token流與程序缺陷結構進行匹配,以查找不安全的函數調用。該方法的優點是能夠快速地發現軟件中的不安全函數,檢測效率較高。缺點是由于沒有考慮源代碼的語義,不能理解程序的運行行為,因此漏報率和誤報率比較高。基于該方法的分析工具主要有ITS4、Checkmar、RATS等。
數據流分析:數據流分析方法是通過確定程序某點上變量的定義和取值情況來分析潛在的安全缺陷,首先將代碼構造為抽象語法樹和程序控制流圖等模型,然后通過代數方法計算變量的定義和使用,描述程序運行時的行為,進而根據相應規則發現程序中的安全漏洞。該方法的優點是分析能力比較強,適合于對內存訪問越界、常數傳播等問題進行分析檢查。缺點是分析速度比較慢、檢測效率比較低。基于該方法的分析工具主要有Coverity、Klocworw、JLint等。
模型檢驗:模型檢驗方法是通過狀態遷移系統來判斷程序的安全性質,首先將軟件構造為狀態機或者有向圖等抽象模型,并使用模態或時序邏輯公式等形式化方法來描述安全屬性,然后對模型進行遍歷檢查,以驗證軟件是否滿足這些安全屬性。該方法的優點是對路徑和狀態的分析比較準確,缺點是處理開銷較大,因為需要窮舉所有的可能狀態,特別是在數據密集度較大的情況下。基于該方法的分析工具主要有MOPS、SLAM、JavaPathFinder等。
污點傳播分析:污點傳播分析方法是通過靜態跟蹤不可信的輸入數據來發現安全漏洞,首先通過對不可信的輸入數據進行標記,靜態跟蹤和分析程序運行過程中污點數據的傳播路徑,發現污點數據的不安全使用方式,進而分析出由于敏感數據(如字符串參數)被改寫而引發的輸入驗證類漏洞,如SQL注入、XSS等漏洞。該方法主要適用于輸入驗證類漏洞的分析,典型的分析工具是Pixy,它是一種針對PHP 語言的污點傳播分析工具,用于發掘PHP 應用中SQL注入、XSS等類型的安全漏洞,具有檢測效率高、誤報率低等優點。
回答所涉及的環境:聯想天逸510S、Windows 10。