原創(chuàng)|行業(yè)資訊|編輯:郝浩|2013-09-29 09:19:33.000|閱讀 205 次
概述:C/C++軟件靜態(tài)測(cè)試的分析處理模型和測(cè)試軟件發(fā)展趨勢(shì)。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
對(duì)于C/C++軟件而言,靜態(tài)測(cè)試越來(lái)越趨向軟件安全功能測(cè)試。包括數(shù)據(jù)機(jī)密性、完整性、可用性、不可否認(rèn)性、身份認(rèn)證、授權(quán)、訪問(wèn)控制、審計(jì)跟蹤、委托、隱私保護(hù)、安全管理等。
通常情況下,C/C++靜態(tài)測(cè)試是把程序源代碼變換成易于分析處理的程序模型。有4個(gè)分析模型:
● 詞法分析:使用正則表達(dá)式匹配將源代碼轉(zhuǎn)換為等價(jià)的符號(hào)流。
● 語(yǔ)法分析:使用上下文無(wú)關(guān)語(yǔ)法將符號(hào)流規(guī)整為語(yǔ)法樹(shù),作為源代碼邏輯結(jié)構(gòu)的最直接的表現(xiàn)。
● 抽象語(yǔ)法分析:通過(guò)簡(jiǎn)化語(yǔ)法將語(yǔ)法樹(shù)轉(zhuǎn)換為包含更少節(jié)點(diǎn)和分支的抽象語(yǔ)法樹(shù),以方便后續(xù)處理。
● 語(yǔ)義分析:從抽象語(yǔ)法樹(shù)建立符號(hào)表,為每個(gè)標(biāo)識(shí)符關(guān)聯(lián)類(lèi)型信息。至此,已經(jīng)具備了足夠的信息來(lái)進(jìn)行所謂的結(jié)構(gòu)化分析。編譯器通常將抽象語(yǔ)法樹(shù)和符號(hào)表轉(zhuǎn)化 成易于優(yōu)化的中間形式,然后送給后端生成平臺(tái)相關(guān)的目標(biāo)代碼。安全分析工具可以建立更高階的中間形式,或者直接在抽象語(yǔ)法樹(shù)和符號(hào)表上進(jìn)行后續(xù)步驟。
在分析模型建立后,就可以開(kāi)始進(jìn)行靜態(tài)測(cè)試。靜態(tài)測(cè)試直接分析被測(cè)程序特征,尋找可能導(dǎo)致錯(cuò)誤的異常。
C/C++靜態(tài)測(cè)試技術(shù)目前的發(fā)展趨勢(shì)是將靜態(tài)測(cè)試的各種技術(shù)進(jìn)行結(jié)合,以提高性能。結(jié)合方式有以下方法:
● 提供一個(gè)框架,使用不同檢測(cè)技術(shù)對(duì)程序進(jìn)行檢測(cè),獲取大量檢測(cè)結(jié)果之后進(jìn)行分析。從誤報(bào)率來(lái)說(shuō),使用多種技術(shù)的檢測(cè)結(jié)果的交集來(lái)進(jìn)行漏洞判斷決策,可減少誤報(bào)率。從漏報(bào)率來(lái)說(shuō),對(duì)于同一種漏洞,使用多種檢測(cè)技術(shù)的結(jié)果的并集可以減少漏報(bào)率。
● 直接在檢測(cè)技術(shù)上結(jié)合,通過(guò)技術(shù)的結(jié)合來(lái)得到新的方法,如在符號(hào)執(zhí)行的過(guò)程中加入類(lèi)型推導(dǎo)的技術(shù),在變量模擬執(zhí)行的過(guò)程中增加其類(lèi)型特征的推導(dǎo),可獲取更高的漏洞檢測(cè)率。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都控件網(wǎng)