[發明專利]程序的代碼審核方法和裝置有效
| 申請號: | 201210271493.3 | 申請日: | 2012-07-31 |
| 公開(公告)號: | CN103577758A | 公開(公告)日: | 2014-02-12 |
| 發明(設計)人: | 汪濤 | 申請(專利權)人: | 西門子公司 |
| 主分類號: | G06F21/57 | 分類號: | G06F21/57 |
| 代理公司: | 北京康信知識產權代理有限責任公司 11240 | 代理人: | 李慧 |
| 地址: | 德國*** | 國省代碼: | 德國;DE |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 程序 代碼 審核 方法 裝置 | ||
技術領域
本發明涉及軟件安全領域,尤其涉及一種程序的代碼審核方法和裝置。
背景技術
在軟件的開發過程中,需要對軟件的源代碼進行審核。代碼審核的目的是檢測源代碼中是否存在安全漏洞并在檢測到安全漏洞時發出告警信息。
其中一種安全漏洞為輸入驗證(validation)漏洞,該漏洞是由于外部的輸入參數沒有經過有效的安全檢查(即檢查該輸入參數是否符合設定規范并在不符合規范時對該輸入參數進行修正)就被傳遞到危險函數以作為該危險函數的輸入參數所造成的。危險函數又稱為引爆點(sink),是根據傳入的輸入參數而執行特定操作的函數。例如,對數據庫的SQL查詢函數、HTML頁面的輸出函數和操作系統命令的執行函數等,在輸入參數不符合規范時,危險函數的調用會對軟件系統帶來安全問題。因此,惡意攻擊者可以通過輸入不符合規范的參數來達到攻擊軟件系統的目的。
目前,使用代碼審核工具檢測輸入驗證漏洞的方法如下:代碼審核工具在源代碼中查找漏洞模型中定義的作為掃描起始點的函數,并從該函數開始進行代碼掃描,通過代碼掃描確定外部的輸入參數的傳遞路徑,在該輸入參數沒有經過安全檢查就到達漏洞模型中定義的危險函數時,確定檢測到安全漏洞并發出告警信息。
本發明人發現現有技術存在以下缺陷:
其一,代碼審核工具在代碼審核過程中需要通過代碼掃描確定外部的輸入參數到危險函數之間的路徑,工作量較大,效率較低。
其二,在輸入參數經過安全檢查,但安全檢查后的輸入參數仍不安全的情況下,并不會發出告警信息,但實際上此時是會導致安全漏洞的,安全漏洞檢測方法的適用性較低。例如在檢查函數檢查到不安全的輸入參數而不對其進行修正時,當其它的函數調用該輸入參數時仍然存在安全漏洞。
其三,在漏洞模型中僅使用類名和方法名定義作為掃描起始點的函數,由于類名和方法名具有全局唯一性,因此,需要將各個函數逐個定義在漏洞模型中,這導致定義漏洞模型的工作量較大,效率低下,同時定義模式單一。相應地在確定代碼掃描的起始點時,需要逐條讀取漏洞模型中定義的函數,導致審核效率較低。
發明內容
在本發明中,危險函數又稱為引爆點(sink),是根據傳入的輸入參數而執行特定操作的函數。在其輸入參數不符合規范時危險函數被調用會對系統帶來安全問題。檢查函數是用于對外部的輸入參數進行安全檢查的函數,源函數為接收程序外部的輸入參數的函數。功能函數是未被定義為危險函數和檢查函數的函數。
根據本發明的一個方面,提供一種利用漏洞模型審核程序代碼的方法,該方法包括:
對程序的源代碼進行掃描,當在掃描到功能函數時,確定所述功能函數的輸入參數是否被傳遞到漏洞模型定義的危險函數、和所述輸入參數從所述功能函數傳遞到所述危險函數之間的路徑上是否缺少漏洞模型中定義的檢查函數;
在確定所述功能函數的輸入參數被傳遞到漏洞模型定義的危險函數,并且所述輸入參數從所述功能函數傳遞到所述危險函數的路徑上缺少漏洞模型中定義的檢查函數時,將所述功能函數作為新的危險函數加入到漏洞模型中,并確定存在安全漏洞;所述漏洞模型中至少包含被掃描代碼的危險函數和檢查函數的定義信息。
在掃描到的功能函數的輸入參數被傳遞到危險函數,并且所述輸入參數從所述功能函數到所述危險函數之間的路徑上缺少檢查函數時,將所述功能函數作為新的危險函數加入到漏洞模型中。該方案實現了危險函數的自學習功能,進而能夠縮短代碼審核所需的時間。例如,若源代碼中存在的外部輸入參數到危險函數之間的一條傳遞路徑為A-B-CD,其中A、D分別為漏洞模型中定義的源函數和危險函數,在沒有危險函數的自學習功能時,在根據漏洞模型進行代碼掃描的過程中需要掃描的路徑為A-B-C-D;在增加了上述危險函數的自學習功能后,如果在自學習過程中將C函數作為新的危險函數加入到了漏洞模型中,之后在根據該漏洞模型進行代碼掃描的過程中需要掃描的路徑變為A-B-C,這樣就縮短了代碼掃碼所需的時間,提高了代碼審核的效率。
較佳地,在掃描到檢查函數時,根據記錄在漏洞模型中該檢查函數輸入值(InputValue)的屬性信息,確定經過該檢查函數的安全檢查后的輸入參數是否安全;
在確定輸入參數不安全并且該不安全的輸入參數被傳遞到漏洞模型定義的危險函數時,確定檢測到安全漏洞。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于西門子公司,未經西門子公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210271493.3/2.html,轉載請聲明來源鉆瓜專利網。





