国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

源代碼安全漏洞檢測方法探討

2017-02-13 16:02馬虹哲
網(wǎng)絡(luò)空間安全 2016年11期
關(guān)鍵詞:源代碼漏洞

【 摘 要 】 隨著計算機網(wǎng)絡(luò)的快速發(fā)展,有關(guān)于軟件的安全性問題越發(fā)的突顯出來。源代碼安全漏洞檢測正是基于計算機軟件安全為出發(fā)點研發(fā)出來的相關(guān)技術(shù)。論文分析了源代碼安全漏洞的幾種常見檢測方法,并對這些方法的優(yōu)缺點進(jìn)行了比較,以期能為計算機網(wǎng)絡(luò)安全提供一些參考意見。

【 關(guān)鍵詞 】 源代碼;漏洞;安全檢測方法

【 中圖分類號 】 TP309.2

【 文獻(xiàn)標(biāo)識碼 】 A

Discussion on Detection Method of Source Code Security Vulnerabilities

Ma Hong-zhe

(Institute of Electric Power Research,Guangxi Power Grid Company Limited GuangxiNanning 530023)

【 Abstract 】 With the rapid development of computer network, there are more and more prominent on the security of software. Source code security vulnerability detection is based on the computer software security as the starting point of the research and development of related technologies. This paper analyzes several common detection methods of source code security vulnerabilities, and compares the advantages and disadvantages of these methods in order to provide some reference for computer network security.

【 Keywords 】 source code; vulnerability; security detection method

1 引言

身處于現(xiàn)代信息時代,網(wǎng)絡(luò)的安全問題已成為全社會關(guān)注的熱點問題。計算機系統(tǒng)中的任何漏洞都可能造成包括經(jīng)濟(jì)、政治、軍事、社會、科技等多方面的嚴(yán)重安全隱患。只有從本質(zhì)上解決計算機軟件的安全漏洞問題,才能從根本上確保網(wǎng)絡(luò)信息的安全。然而軟件安全漏洞有極大的隱藏特性,如不形成對它的觸發(fā),很難注意到它的存在。

因此,目前世界各國都投入了大量精力,用于源代碼安全漏洞檢測方法的開發(fā)研究。

2 源代碼漏洞的形成原因和具體表現(xiàn)

源代碼漏洞是指在程序設(shè)計之初,由于考慮不周等問題,導(dǎo)致寫代碼的時候,一些代碼寫的不完善,由此留下了可以被侵入的后門,從而產(chǎn)生的可能會對程序本身、系統(tǒng)或數(shù)據(jù)帶來潛在危害的代碼問題。源代碼問題一旦被不法分子發(fā)現(xiàn)、利用,所造成的危害不可估量。代碼漏洞可以表現(xiàn)在很多方面,算法本身或者代碼本身的問題都可能會造成代碼漏洞。

代碼漏洞的具體表現(xiàn)主要包括幾個方面。

對輸入的數(shù)據(jù)沒有進(jìn)行有效的檢查。或者是進(jìn)行過檢查但是檢查不周,也可能是處理不當(dāng),此類問題最常造成緩沖區(qū)漏洞的出現(xiàn)。比如在對某賬號進(jìn)行密碼的設(shè)置輸入時,如果程序未對密碼的長度進(jìn)行限制,用戶則可能出于安全考慮輸入超長的密碼,由此可能會導(dǎo)致存儲密碼時對其它的數(shù)據(jù)進(jìn)行覆蓋,引發(fā)一系列的問題。

代碼邏輯設(shè)計缺陷或錯誤。這類問題一般是由程序員的疏忽大意造成的。比如判斷時因考慮不周而少漏條件,當(dāng)遇到特殊數(shù)據(jù)和情況時,導(dǎo)致程序出現(xiàn)不可預(yù)估的錯誤。

算法本身的漏洞。實現(xiàn)源代碼的安全無漏洞,首先應(yīng)確保在寫代碼時進(jìn)行嚴(yán)密的算法,算法本身出現(xiàn)了漏洞,則必然導(dǎo)致諸多問題的存在。比如采用比較簡單的加密算法,會為信息泄漏留下操作的可能性。

3 常見的源代碼安全檢測方法

3.1 抽象解釋

抽象解釋是把程序代碼的執(zhí)行過程看成各種抽象狀態(tài)的遷移過程,并通過對抽象狀態(tài)進(jìn)行分析來確定程序的性質(zhì)。初始抽象狀態(tài)必須是初始實際狀態(tài)的安全近似,而且每次狀態(tài)遷移需要保持正確的關(guān)系,這樣才能保證分析結(jié)果的正確。理論上,正確的抽象能夠找出程序中所有可能的緩沖區(qū)溢出漏洞。但也相應(yīng)的帶來較多的誤報。在實際使用中,為降低誤報率,用戶應(yīng)當(dāng)根據(jù)被測程序的特性,選擇合適的解釋函數(shù)和抽象域等。

3.2 詞法分析

詞法分析是最早被用來進(jìn)行緩沖區(qū)溢出漏洞檢測的方法之一。這種方法是對軟件源程序進(jìn)行掃描分析,同時與特征庫進(jìn)行匹配,當(dāng)發(fā)現(xiàn)某個片與“危險片段庫中的數(shù)據(jù)”匹配時,則可找出軟件程序中可能存在的溢出漏洞。這種方法的局限性在于容易產(chǎn)生漏報或誤報,并且它也不能理解軟件程序的語義。因此需要進(jìn)一步的進(jìn)行上下文分析。

3.3 規(guī)則檢查

安全性一直是程序編程過程中必需考慮的部分,因此在編程時就會從安全性的角度設(shè)定一些必須遵循的規(guī)則。而通過對這種規(guī)則的檢查,就能找到源代碼中的某些漏洞。規(guī)則檢查在進(jìn)行大規(guī)模的程序安全檢測時,可以通過選取相關(guān)的規(guī)則對某一類型的安全問題進(jìn)行快速分析,但正是受這種檢查法自身特點的束縛,使得它只能對特定類型的問題進(jìn)行檢查,無法實現(xiàn)全面的源代碼漏洞檢測。

3.4 類型推導(dǎo)

如果將安全屬性看成一種類型,那么通過類型推導(dǎo)檢查,就能找出源代碼中的不安全漏洞類型。這種方法忽略了代碼執(zhí)行條件和順序,只是利用定型規(guī)則確定代碼中部件的的類型,所以在進(jìn)行源代碼漏洞檢測時處理速度很快。

一般情況下,類型推導(dǎo)可分為三個階段:首先是定型斷言,確定變量的初始類型;其次是推導(dǎo)規(guī)則,即進(jìn)行推論系統(tǒng)規(guī)則集的建構(gòu);最后是檢查規(guī)則,即判斷推論結(jié)果是否具有“危害性”。

類型推導(dǎo)法對于軟件安全漏洞的快速檢測量方面具有很大的優(yōu)勢,能進(jìn)行大規(guī)模程序的安全性分析,但由于約束變量取值為無窮,所以這種方法也只能用來檢測特定類型的源代碼漏洞。

3.5 數(shù)據(jù)流分析

數(shù)據(jù)流分析在源代碼的安全檢測中,用途比較廣泛。這種方法從對源代碼的語義信息進(jìn)行構(gòu)造變量切入,采用代數(shù)方法對變量進(jìn)行定義和使用的確定。

數(shù)據(jù)流分析方法基于這樣一個事實,數(shù)據(jù)流沿程序控制圖傳播。當(dāng)所有程序點的分析狀態(tài)達(dá)到不動點時,傳播停止,同時得到程序性質(zhì)的解。但是數(shù)據(jù)流分析方法不能精確跟蹤指令的控制條件,所以這種檢測方法得到的結(jié)果不夠精確。

3.6 約束分析

通過產(chǎn)生、求解程序的約束條件,約束分析即可確定程序的性質(zhì)。約束分析方法建立的局部化約束產(chǎn)生的規(guī)則能清楚的描述指令副作用乃至控制條件。

約束分析檢測分為約束產(chǎn)生和約束求解兩個階段。約束產(chǎn)生階段是進(jìn)行包括變量類型和分析狀態(tài)在內(nèi)的約束系統(tǒng)的構(gòu)建,對這個系統(tǒng)進(jìn)行求解的過程即為了約束求解階段。

這種檢測法常用于可能造成緩沖區(qū)溢出的字符串操作的檢測。但是,這種方法不容易處理精確循環(huán):程序中存在循環(huán),且循環(huán)控制條件之間存在依賴關(guān)系時,則建立的約束條件可能無解。

3.7 符號執(zhí)行

符號執(zhí)行是通過采用抽象符號代替變量,對路徑敏感的程序控制流進(jìn)行模擬,在約束求解中對可能發(fā)生的錯誤解進(jìn)行檢測的方法。在檢測中,如果出現(xiàn)象一組抽象符號的解滿足,則可判定程序中存在錯誤。符號執(zhí)行法的檢測能力完全取決于求解工具的約束條件和求解能力。雖然這種方法的檢測時間較長,但它的優(yōu)點是可以進(jìn)行比較精準(zhǔn)的檢測,程序中很多細(xì)微的邏輯錯誤都能被找到,對于某些特定問題的檢測很有必要。

3.8 模型檢測

作為形式化的驗證技術(shù)的一種,模型檢測采用的是通過狀態(tài)遷移描述程序的行為。這種方法用時序邏輯和計算樹邏輯等來表示程序系統(tǒng)的性質(zhì),將系統(tǒng)屬性(安全與否)的檢驗問題變換為搜索不符合邏輯公式的狀態(tài)問題。首先,進(jìn)行抽象模型的構(gòu)建,這里必需注意,只有有限狀態(tài)的程序才能進(jìn)行模型構(gòu)建;然后模型驗證要遍歷程序的所有狀態(tài)空間進(jìn)行驗證。這種檢測有兩種常見的方法:符號化模型檢測和模型轉(zhuǎn)換自動機,兩者均為并發(fā)系統(tǒng)方法。符號化模型檢測是通過將抽象模型中的狀態(tài)轉(zhuǎn)變?yōu)檎Z法樹描述的邏輯公式,對公式進(jìn)行可滿足性驗證,而模型轉(zhuǎn)換自動機則是通過在安全時序的基礎(chǔ)上,構(gòu)建一個新的自動機進(jìn)行驗證。

在協(xié)議驗證和硬件檢測領(lǐng)域,模型檢測的應(yīng)用較為常見。模型檢驗?zāi)軌虬l(fā)現(xiàn)程序中存在復(fù)雜語義上的錯誤,從而準(zhǔn)確發(fā)現(xiàn)程序中潛在的安全性漏洞,但現(xiàn)存的模型檢驗工具普遍分析源程序的形式化的表示(數(shù)學(xué)描述),而不是以源程序作為輸入,如需要源程序的數(shù)學(xué)模型。通??梢酝ㄟ^程序分析(數(shù)據(jù)流分析,控制流分析,程序切片工具)來自動完成源程序的模型的生成。程序切片提取程序的精簡了的模型,其中程序分析是基礎(chǔ),除了語法分析之外,更需要涉及語義的分析,包括控制流分析和數(shù)據(jù)流分析。

由于程序的復(fù)雜性導(dǎo)致了模型過于龐大的問題,因此模型檢測除了只能分析那些有限狀態(tài)的系統(tǒng),還有只能針對程序中的某一個屬性構(gòu)造抽象模型的弱點,有較大的局限性。

4 各種檢測方法的比較分析

以上介紹的幾種源代碼安全漏洞檢測法,既有區(qū)別又存在內(nèi)在的聯(lián)系。比如抽象解釋就是其他方法的理論基礎(chǔ)。這些方法都有各自的優(yōu)缺點,不可能處理所有的源代碼安全漏洞檢測問題,因此需要對這些方法的特征有一個綜合的了解,在實際應(yīng)用時,合理的采取幾種方法的綜合檢測,能更好地完成源代碼安全漏洞檢測工作。關(guān)于這些方法的優(yōu)缺點,如表1所示。

參考文獻(xiàn)

[1] 周誠,張濤,馬媛媛,李偉偉.一種高效檢測源代碼安全漏洞的代碼審查方法[J].現(xiàn)代電子技術(shù),2015,05:83-86.

[2] 時志偉,趙亮.一種關(guān)于PHP源代碼安全漏洞的靜態(tài)檢測方法[J].信息安全與通信保密,2011,11:80-82.

[3] 朱圣才,徐御,王火劍.常見源代碼安全漏洞分析與研究[J].信息網(wǎng)絡(luò)安全,2014,02:48-52.

作者簡介:

馬虹哲(1987-),女,漢族,研究生,碩士,工程師;主要研究方向和關(guān)注領(lǐng)域:信息安全。

猜你喜歡
源代碼漏洞
基于TXL的源代碼插樁技術(shù)研究
漏洞在哪里
偵探推理游戲(二)
保護(hù)好自己的“源代碼”
解密別克安全“源代碼”
民用飛機A級別機載軟件項目源代碼到目標(biāo)代碼追溯性分析研究
漏洞在哪兒
Windows系統(tǒng)WebDAV提權(quán)漏洞
基于Android平臺的飛行射擊游戲設(shè)計
視頻、Office漏洞相繼爆發(fā)
蒙山县| 壤塘县| 牡丹江市| 共和县| 陇西县| 秭归县| 黄骅市| 祁东县| 寻甸| 蓝山县| 当雄县| 陈巴尔虎旗| 吴忠市| 武川县| 商都县| 浦江县| 广德县| 长武县| 芦山县| 清丰县| 英山县| 八宿县| 全州县| 丹棱县| 临泉县| 三河市| 南江县| 靖宇县| 阿克陶县| 宣城市| 秦安县| 绥中县| 讷河市| 焉耆| 沐川县| 广州市| 博湖县| 平凉市| 新龙县| 邹平县| 通河县|