亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種代碼審計的方法及裝置的制作方法

文檔序號:6462001閱讀:109來源:國知局
專利名稱:一種代碼審計的方法及裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及信息安全技術(shù),尤其涉及一種代碼審計的方法及裝置。
背景技術(shù)
目前,信息系統(tǒng)所使用的程序代碼的安全性直接決定了信息系統(tǒng)的安全性。程序代碼中 的安全漏洞是導致信息系統(tǒng)不穩(wěn)定、易受攻擊的主要原因之一。當程序代碼中的安全漏洞被 攻擊者利用時,攻擊者就能夠獲得訪問重要數(shù)據(jù)、資源或進程的權(quán)限,利用這些權(quán)限增加、 更改或刪除信息系統(tǒng)中的進程或控制流,從而導致重要數(shù)據(jù)外泄和系統(tǒng)癱瘓等問題,使信息 系統(tǒng)的使用者遭受巨大的損失,無法得到安全可靠的服務。
在現(xiàn)有技術(shù)中,關(guān)鍵字匹配是代碼審計技術(shù)中的常用技術(shù)手段,該技術(shù)通過記錄各安全 漏洞所對應的特征字符,根據(jù)特征字符掃描信息系統(tǒng)的源代碼,具有該特征字符的源代碼段 均被視為源代碼中存在的安全漏洞。例如,在關(guān)鍵字匹配技術(shù)中,假設特征字符串為"strcpy", 經(jīng)過源代碼掃描后,源代碼中所有出現(xiàn)strcpy的地方均會被視為安全漏洞。但經(jīng)過實際使用 過程分析,并不是所有在源代碼中出現(xiàn)strcpy的地方均是安全漏洞。由于strcpy表示一字 符串拷貝函數(shù),因此只有在源字符串長度大于目的字符串長度的情況下,具有strcpy的源代 碼段才是安全漏洞。另外,關(guān)鍵字匹配技術(shù)中特征字符的確定主要依賴于對已經(jīng)發(fā)現(xiàn)的安全 漏洞的分析,特征字符的確定只局限于己被分析的安全漏洞,并在很大程度上無法適用于廣 泛的應用范圍。因此,特征字符并不能全面體現(xiàn)一種安全漏洞的特征,進而在使用過程中經(jīng) 常存在安全漏洞的錯檢和漏檢情況。
通過對現(xiàn)有技術(shù)的簡要分析不難得出,關(guān)鍵字匹配技術(shù)由于根據(jù)安全漏洞對應的特征字 符進行匹配,在實際使用的過程中經(jīng)常會出現(xiàn)錯檢或漏檢的現(xiàn)象,因此不僅極大的影響了代 碼審計的準確性,同時也不能準確反映源代碼中存在的安全漏洞。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種代碼審計的方法,應用本發(fā)明的方法能夠提 高代碼審計的準確性,真實準確的反映源代碼中存在的安全漏洞,同時又可兼顧代碼審計的 效率。為達到上述目的,本發(fā)明的技術(shù)方案是這樣實現(xiàn)的, 一種代碼審計的方法,該方法包括以下步驟 在源代碼中追蹤一個變量,得到處理該變量的各處理節(jié)點; 確定各處理節(jié)點的父處理節(jié)點,以及各處理節(jié)點的安全屬性;
分別將各處理節(jié)點的安全屬性與其父處理節(jié)點的安全屬性進行比較,在一個處理節(jié)點的 父處理節(jié)點的安全屬性不為該處理節(jié)點的安全屬性的子集時,確定該處理節(jié)點存在安全漏洞。
較佳地,該方法進一步包括確定處理節(jié)點存在安全漏洞時,發(fā)送報警信息。
較佳地,該方法進一步包括確定外部相關(guān)變量,將其作為當前追蹤的變量。
較佳地,所述確定各處理節(jié)點的父處理節(jié)點包括使用參數(shù)樹的形式來確定各處理節(jié)點 的父處理節(jié)點。
較佳地,該方法進一步包括設定需要進行安全漏洞檢測的處理節(jié)點;
所述分別將各處理節(jié)點的安全屬性與其父處理節(jié)點的安全屬性進行比較包括,分別將需 要進行安全漏洞檢測的各處理節(jié)點的安全屬性與其父處理節(jié)點的安全屬性進行比較。
較佳地,所述安全屬性用正則表達式和/或訪問控制列表進行描述。
較佳地,該方法進一步包括針對存在安全漏洞的處理節(jié)點,發(fā)送修改其父處理節(jié)點的 安全屬性以使其父處理節(jié)點的安全屬性為其安全屬性的子集的意見。 一種代碼審計的裝置,該裝置包括搜索單元和發(fā)現(xiàn)單元;
所述搜索單元,用于在源代碼中追蹤一個變量,得到處理該變量的各處理節(jié)點;確定各 處理節(jié)點的父處理節(jié)點,以及各處理節(jié)點的安全屬性;
所述發(fā)現(xiàn)單元,用于根據(jù)所述搜索單元確定的各處理節(jié)點、各處理節(jié)點的父處理節(jié)點以 及各處理節(jié)點的安全屬性,分別比較各處理節(jié)點與其父處理節(jié)點的安全屬性,在一個處理節(jié) 點的父處理節(jié)點的安全屬性不為該處理節(jié)點的安全屬性的子集時,確定該處理節(jié)點存在安全 漏洞。
較佳地,該裝置進一步包括報警單元;
所述報警單元,用于針對發(fā)現(xiàn)單元所確定的存在安全漏洞的處理節(jié)點發(fā)送報警。 較佳地,該裝置進一步包括入口單元;
所述入口單元,用于確定外部相關(guān)變量,將其作為所述搜索單元追蹤的變量。 較佳地,所述搜索單元包括處理單元、建立單元和獲取單元;所述處理單元,用于在源代碼中分別追蹤所述入口單元所確定的各外部相關(guān)變量,獲得 處理各外部相關(guān)變量的各處理節(jié)點;
所述建立單元,用于針對所述各外部相關(guān)變量,根據(jù)處理單元所獲得的各處理節(jié)點建立 描述各處理節(jié)點之間的父、子處理節(jié)點關(guān)系的參數(shù)樹;
所述獲取單元,用于設置建立單元建立的參數(shù)樹中各處理節(jié)點的安全屬性。
較佳地,該裝置進一步包括存儲單元;
所述存儲單元,用于記錄具有安全漏洞檢測需求的處理節(jié)點;
所述發(fā)現(xiàn)單元,用于針對所述入口單元所確定的各外部相關(guān)變量,根據(jù)搜索單元所確定 的各處理節(jié)點、各處理節(jié)點的父處理節(jié)點以及各處理節(jié)點的安全屬性,以及存儲單元所記錄 的具有安全漏洞檢測需求的處理節(jié)點,分別比較具有檢測需求的各處理節(jié)點與其父處理節(jié)點
的安全屬性,在一個處理節(jié)點的父處理節(jié)點的安全屬性不為該處理節(jié)點的安全屬性的子集時, 確定該處理節(jié)點存在安全漏洞。
本發(fā)明所提供的技術(shù)方案根據(jù)處理節(jié)點對變量的處理邏輯確定該處理節(jié)點是否存在漏 洞,因此能夠提高代碼審計的準確性,真實準確的反映源代碼中存在的安全漏洞。此外,在 本發(fā)明的技術(shù)方案中,可以僅針對處理外部相關(guān)變量的各處理節(jié)點以及具有安全漏洞檢測需 求的處理節(jié)點確定其是否存在安全漏洞,因此能夠降低代碼審計的運算量,進一步提高代碼 審計的效率。


下面將通過參照附圖詳細描述本發(fā)明的示例性實施例,使本領(lǐng)域的普通技術(shù)人員更清楚 本發(fā)明的上述及其它特征和優(yōu)點,附圖中 圖1為本發(fā)明的方法示例性流程圖; 圖2為本發(fā)明的裝置示例性結(jié)構(gòu)圖; 圖3為本發(fā)明第一實施例的方法流程圖; 圖4為本發(fā)明第一實施例對應參數(shù)樹的示意圖; 圖5為本發(fā)明第一實施例的裝置結(jié)構(gòu)圖; 圖6為本發(fā)明第二實施例的方法流程圖; 圖7為本發(fā)明第二實施例的裝置結(jié)構(gòu)圖; 圖8為本發(fā)明中一種參數(shù)樹的示意圖;圖9為本發(fā)明中又一種參數(shù)樹的示意圖。
具體實施例方式
本發(fā)明的發(fā)明人通過對程序代碼遭受攻擊的情況進行分析得出,程序代碼之所以存在安 全漏洞,并且能夠被攻擊者利用,是因為源代碼中的一些處理節(jié)點經(jīng)常會主動或者被動的進 行一些自身并不期望的處理操作。
基于以上對程序代碼安全漏洞的分析,本發(fā)明的技術(shù)方案主要通過將源代碼中處理節(jié)點 的安全屬性與該處理節(jié)點的父處理節(jié)點的安全屬性進行比較,當其父處理節(jié)點的安全屬性為 該處理節(jié)點的安全屬性的子集時,則該處理節(jié)點不存在安全漏洞;如果其父處理節(jié)點的安全 屬性不為該處理節(jié)點的安全屬性的子集,則該處理節(jié)點存在安全漏洞。也就是,假設當前處
理節(jié)點的安全屬性為S、其父處理節(jié)點的安全屬性為F時,當FeS,則當前處理節(jié)點不存
在安全漏洞;當FGS,則當前處理節(jié)點存在安全漏洞。為了更好的理解本發(fā)明的技術(shù)方案,這里首先對處理節(jié)點、父處理節(jié)點以及處理節(jié)點的 安全屬性進行說明。處理節(jié)點是指源代碼中對變量進行處理的邏輯節(jié)點,處理節(jié)點所處理的 變量例如可以為數(shù)值、字符、字符串或指針等,處理節(jié)點對變量所進行的處理例如可以是數(shù) 學運算、賦值、拷貝或改寫等操作, 一個處理節(jié)點可以是函數(shù)、應用程序接口 (API)、動態(tài) 連接庫(DLL)接口或系統(tǒng)調(diào)用接口等具體形式。例如, 一個字符串處理節(jié)點strcpy(deststr, srcstr),其為一個函數(shù),表示將源字符串srcstr的內(nèi)容拷貝到目的字符串deststr中。
如果處理節(jié)點1向處理節(jié)點2輸送變量,或是說處理節(jié)點2從處理節(jié)點1獲取變量,則 將處理節(jié)點1稱為處理節(jié)點2的父處理節(jié)點,相應的,可將處理節(jié)點2稱為處理節(jié)點1的子 處理節(jié)點。所述處理節(jié)點1和處理節(jié)點2之間的變量傳遞通常通過參數(shù)傳遞的方式進行。例 如, 一個處理節(jié)點SCanf(%s, srcstr),表示將來自標準輸入設備的輸入數(shù)據(jù)賦予字符串變 量srcstr,如果該字符串變量srcstr為另一處理節(jié)點strcpy (deststr, srcstr)的一個輸入 參數(shù),則將處理節(jié)點scanf (%s, srcstr)稱為處理節(jié)點strcpy(deststr, srcstr)的父處理節(jié) 點。 一個處理節(jié)點有可能存在多個輸入?yún)?shù),相應的,該處理節(jié)點就可能存在多個父處理節(jié). 點。
處理節(jié)點的安全屬性為根據(jù)一個處理節(jié)點自身的處理邏輯確定的該處理節(jié)點能夠進行的 處理操作。根據(jù)源代碼的具體應用情況, -個處理節(jié)點的安全屬性例如可以包括該處理節(jié)點 能夠處理的字符串、該字符串的長度,以及對該字符串的訪問權(quán)限等內(nèi)容。處理節(jié)點的安全 屬性可以使用正則表達式(regex, Regular Expression)和/或訪問控制列表(ACL, AccessControl List)的表達形式來描述。其中,正則表達式通常用于進行模式匹配,訪問控制列 表通常用于表達訪問權(quán)限。以下在本發(fā)明的具體實施例中,將使用正則表達式和/或訪問控制 列表這種機器可識別的表達形式來描述的安全屬性稱為安全規(guī)約(FSR, Formulated Security Restrictions)。例如,在使用SQL語句的源代碼中, 一個處理節(jié)點的安全屬性可用正則表達 式描述為
{FSR: 、? ! (/ ((\%27) | (\')) ((\%6F) | o | (\%4F)) ((\%72) | r | (\%52)) /ix) .)*$}, 這表示該處理節(jié)點所能夠處理的變量中不能包括SQL語句中的"'"、"*"、 "and"和"or"等 關(guān)鍵字。具體在本發(fā)明的具體實施過程中,可以根據(jù)源代碼的程序設計方法、編程語言和一 個處理節(jié)點自身的處理邏輯來確定該處理節(jié)點的安全屬性。
結(jié)合以上的說明,參見圖l,圖1為本發(fā)明的方法示例性流程圖。具體包括在步驟IOI 中,在源代碼中追蹤一個變量,得到處理該變量的各處理節(jié)點。在步驟102中,確定各處理 節(jié)點的父處理節(jié)點,以及各處理節(jié)點的安全屬性。在步驟103中,分別將各處理節(jié)點的安全 屬性與其父處理節(jié)點的安全屬性進行比較,在一個處理節(jié)點的父處理節(jié)點的安全屬性不為該 處理節(jié)點的安全屬性的子集時,確定該處理節(jié)點存在安全漏洞。
參見圖2,圖2為本發(fā)明的裝置示例性結(jié)構(gòu)圖,該裝置包括搜索單元21和發(fā)現(xiàn)單元22。 其中,搜索單元21用于在源代碼中追蹤一個變量,得到處理該變量的各處理節(jié)點;確定各處 理節(jié)點的父處理節(jié)點,以及各處理節(jié)點的安全屬性。發(fā)現(xiàn)單元22用于根據(jù)搜索單元21所確 定的各處理節(jié)點、各處理節(jié)點的父處理節(jié)點以及各處理節(jié)點的安全屬性,分別比較各處理節(jié) 點與其父處理節(jié)點的安全屬性,在一個處理節(jié)點的父處理節(jié)點的安全屬性不為該處理節(jié)點的 安全屬性的子集時,確定該處理節(jié)點存在安全漏洞。
通過以上對處理節(jié)點的說明可知,針對源代碼中的一個變量,在源代碼中可能會存在多 個處理該變量的處理節(jié)點,各處理節(jié)點之間形成父、子處理節(jié)點的相互關(guān)系。而針對源代碼 中的不同變量,每個變量均可能對應多個處理節(jié)點,與每個變量對應的各處理節(jié)點之間各自 形成父、子處理節(jié)點的相互關(guān)系。這樣,在針對源代碼中的不同變量所對應的各處理節(jié)點進 行安全漏洞檢査時,所述的處理節(jié)點追蹤以及處理節(jié)點的安全屬性比較操作可能會具有較大 的運算復雜度。
發(fā)明人通過對程序代碼安全漏洞的進一步分析得知,在程序代碼中存在的安全漏洞,有 一部分可以被攻擊者利用,而另一部分不能被攻擊者利用。這些不能夠被攻擊者利用的安全 漏洞,其不存在與外部輸入、外部應用實體接口或環(huán)境實體等外部因素的關(guān)聯(lián),因此即使攻 擊者發(fā)現(xiàn)了這些安全漏洞,也不可能利用它們并給信息系統(tǒng)造成危害。基于這樣的分析,本發(fā)明在具體實施的過程中優(yōu)選僅針對源代碼中與所述外部因素關(guān)聯(lián)的變量進行代碼審計,而 針對和所述外部因素無關(guān)的變量則不執(zhí)行代碼審計。這樣,不僅可以減小本發(fā)明技術(shù)方案的 運算復雜度,還可以準確的檢出源代碼中能夠被攻擊者利用的安全漏洞,從而可以進一歩提 高本發(fā)明代碼審計的效率。
圖3中示出了本發(fā)明第一優(yōu)選實施例的方法流程圖,在該實施例中,僅針對源代碼屮與 所述外部因素關(guān)聯(lián)的變量進行代碼審計。為了簡化表述,在下文中,將與所述外部因素關(guān)聯(lián) 的變量稱為外部相關(guān)變量。
參見圖3,本實施例中的方法具體包括
在步驟301中,確定外部相關(guān)變量。
這里所確定的外部相關(guān)變量例如可以是標準輸入函數(shù)scanf的輸入?yún)?shù)和/或用于與外 部應用實體接口或環(huán)境實體交互的應用程序接口的輸入?yún)?shù)
在步驟302中,在源代碼中分別追蹤各外部相關(guān)變量,獲得處理各外部相關(guān)變量的各處 理節(jié)點。
這里,可以根據(jù)編程時所使用的編譯器技術(shù)對外部相關(guān)變量進行追蹤。
在步驟303中,針對各外部相關(guān)變量,確定各處理節(jié)點的父處理節(jié)點以及各處理節(jié)點的
FSR。
這里,可以使用參數(shù)樹的形式來確定各處理節(jié)點的父處理節(jié)點。例如,針對一個外部相 關(guān)變量X,各處理節(jié)點所形成的參數(shù)樹可以如圖4所示。參見圖4,該圖最左邊的節(jié)點是該參 數(shù)樹的根節(jié)點,表示為節(jié)點l。該根節(jié)點首先處理外部相關(guān)變量X,并將處理后的外部相關(guān)變 量X通過參數(shù)傳遞的方式輸送給參數(shù)樹的第二級節(jié)點。在該參數(shù)樹的第二級節(jié)點中存在三個 處理節(jié)點,分別表示為節(jié)點1. 1、節(jié)點1. 2和節(jié)點1. 3。由于這三個節(jié)點分別對根節(jié)點處理后 的外部相關(guān)變量X進行處理,因此這三個節(jié)點都是節(jié)點1的子處理節(jié)點,也即節(jié)點l. 1、節(jié) 點1.2和節(jié)點1.3的父處理節(jié)點都是節(jié)點1。而由于這三個子節(jié)點針對當前外部相關(guān)變量X 而言沒有相互之間的變量傳遞,因此它們之間不存在父、子處理節(jié)點的相互關(guān)系,屬于并列 關(guān)系。第二級節(jié)點將其各自處理后的外部相關(guān)變量X進而又通過參數(shù)傳遞的方式輸送給第三 k節(jié)點。由圖4屮可以看出,在第二級節(jié)點中只有節(jié)點1.2存在下級節(jié)點,即第二級節(jié)點1.2. 1 和節(jié)點1. 2. 2。由于節(jié)點1. 2. 1和節(jié)點1. 2. 2分別對節(jié)點1. 2處理后的外部相關(guān)變量X進行 處理,因此這兩個節(jié)點均是節(jié)點1. 2的子處理節(jié)點,而節(jié)點1. 2. 1和節(jié)點1. 2. 2之間為并列 關(guān)系。對于第二級節(jié)點中的節(jié)點1.1和節(jié)點1.3,由于在源代碼中不存在處理其輸出的外部 相關(guān)變量X的處理節(jié)點,因此節(jié)點1. 1和節(jié)點1. 3就不再具有子處理節(jié)點。確定參數(shù)樹中各節(jié)點FSR的方式可以是,為源代碼中的各處理節(jié)點設置FSR,并建立各 處理節(jié)點的標識與其FSR的對應關(guān)系。在代碼審計過程中,根據(jù)各處理節(jié)點的標識獲取其FSR。 其中,在設置各處理節(jié)點的FSR時,可以根據(jù)各處理節(jié)點自身的處理邏輯自動設置其FSR, 或者可以在代碼審計的過程中提示操作者人工輸入其FSR。
在歩驟304中,針對各外部相關(guān)變量,分別將各處理節(jié)點的FSR與其父處理節(jié)點的FSR 進行比較,在一個處理節(jié)點的父處理節(jié)點的FSR不為該處理節(jié)點的FSR的子集時,確定該處 理節(jié)點存在安全漏洞。
這里,同樣還是以圖4所示的參數(shù)樹為例進行說明。在圖4中,針對外部相關(guān)變量X, 一共存在5對父、子處理節(jié)點,分別是節(jié)點1和節(jié)點1. 1、節(jié)點1和節(jié)點1. 2、節(jié)點1和節(jié)點 1. 3、節(jié)點1. 2和節(jié)點1. 2. 1,以及節(jié)點1. 2和節(jié)點1. 2. 2。則在本步驟中,針對外部相關(guān)變 量X,需要對這五對父、子處理節(jié)點的FSR分別進行比較,確定存在安全漏洞的處理節(jié)點。
在步驟305中,針對存在安全漏洞的處理節(jié)點發(fā)送報警。
在確定了存在安全漏洞的處理節(jié)點之后,優(yōu)選還可以對此發(fā)送報警。這里,報警信號中 可以攜帶存在安全漏洞的處理節(jié)點的位置信息,指示所述處理節(jié)點在源代碼中的具體位置, 以便操作者對安全漏洞準確定位。
相應于圖3中所示的方法流程圖,圖5中示出了本發(fā)明第一優(yōu)選實施例的裝置結(jié)構(gòu)圖。 參見圖5,該裝置除了包括搜索單元51、發(fā)現(xiàn)單元52,還進一步包括入口單元50和報警單 元53。入口單元50用于確定源代碼中的外部相關(guān)變量。搜索單元51用于在源代碼中分別追 蹤入口單元50所確定的各外部相關(guān)變量,獲得處理各外部相關(guān)變量的各處理節(jié)點,并針對各 外部相關(guān)變量,確定各處理節(jié)點的父處理節(jié)點以及各處理節(jié)點的FSR。發(fā)現(xiàn)單元52用于針對 各外部相關(guān)變量,根據(jù)搜索單元51所確定的各處理節(jié)點、各處理節(jié)點的父處理節(jié)點以及各處 理節(jié)點的FSR,分別比較各處理節(jié)點與其父處理節(jié)點的安全屬性,在一個處理節(jié)點的父處理 節(jié)點的安全屬性不為該處理節(jié)點的安全屬性的子集時,確定該處理節(jié)點存在安全漏洞。報警 單元53用于針對發(fā)現(xiàn)單元52所確定的存在安全漏洞的處理節(jié)點發(fā)送報警。
在本實施例的代碼審計裝置中,搜索單元51具體可以包括處理單元511、建立單元512 和獲取單元513。其中,處理單元511用于在源代碼中分別追蹤所述各外部相關(guān)變量,獲得 處理各外部相關(guān)變量的各處理節(jié)點。建立單元512用于針對所述各外部相關(guān)變量,根據(jù)處理 單元511所獲得的各處理節(jié)點建立描述各處理節(jié)點之問的父、子處理節(jié)點關(guān)系的參數(shù)樹。獲 取單元513用于設賈建立單元512建立的參數(shù)樹中各處理節(jié)點的安全屬性。
在本發(fā)明的第二優(yōu)選實施例中,可以通過預先設定需要進行安全漏洞檢測的處理節(jié)點,或者在代碼審計的過程中提示操作者設定其需要進行安全漏洞檢測的處理節(jié)點,并僅針對具 有檢測需求的處理節(jié)點進行安全漏洞的檢測,以減小代碼審計的運算復雜度。優(yōu)選的,本發(fā) 明的第二實施例在第一實施例的基礎上進一步設定需要進行安全漏洞檢測的處理節(jié)點,并僅 針對具有檢測需求的處理節(jié)點進行安全漏洞的檢測,對于不具有檢測需求的處理節(jié)點則不進 行安全漏洞的檢測,從而可以進一步減小本發(fā)明技術(shù)方案的運算復雜度,提高本發(fā)明代碼審 計的效率。
參見圖6,圖6為本發(fā)明第二實施例的方法流稃圖。在本實施例中,預先設定了具有安 全漏洞檢測需求的處理節(jié)點。設定具有檢測需求的處理節(jié)點可以通過記錄所述處理節(jié)點的標 識實現(xiàn)。該方法流程具體包括
在步驟601中,與第一實施例中的步驟301相同,具體細節(jié)在此不再詳述。
在步驟602中,在源代碼中分別追蹤各外部相關(guān)變量,獲得處理各外部相關(guān)變量的各處 理節(jié)點,并査找在處理各外部相關(guān)變量的各處理節(jié)點中是否存在具有檢測需求的處理節(jié)點, 如果存在,則執(zhí)行步驟603,否則,執(zhí)行步驟606。
在步驟603中,針對各外部相關(guān)變量,確定各處理節(jié)點的父處理節(jié)點以及各處理節(jié)點的
FSR。
在步驟604中,針對各外部相關(guān)變量,分別將具有檢測需求的各處理節(jié)點的FSR與其父 處理節(jié)點的FSR進行比較,在一個處理節(jié)點的父處理節(jié)點的FSR不為該處理節(jié)點的FSR的子 集時,確定該處理節(jié)點存在安全漏洞。
在本實施例中,可以參照第一實施例中建立參數(shù)樹的方法,在針對處理各外部相關(guān)變量 的各處理節(jié)點建立了參數(shù)樹后,再查找參數(shù)樹中具有安全漏洞檢測需求的處理節(jié)點。對應具 有檢測需求的處理節(jié)點,利用參數(shù)樹中建立的父、子處理節(jié)點的相互關(guān)系和各處理節(jié)點的FSR, 確定所述處理節(jié)點中是否存在安全漏洞。
在步驟605中,針對存在安全漏洞的處理節(jié)點發(fā)送報警。
在步驟606中,結(jié)朿當前處理流程。
參見圖7,圖7為本發(fā)明第二實施例的裝置結(jié)構(gòu)圖。相應于圖5,圖7所示的裝置除了包 括入口單元70、搜索單元71、發(fā)現(xiàn)單元72和報警單元73,其中搜索單元71中包括處理單 元711、建立單元712和獲取單元713外,還進一步包括存儲單元74。其中,存儲單元74用 于記錄具有安全漏洞檢測需求的處理節(jié)點。相應的,發(fā)現(xiàn)單元72用于針對各外部相關(guān)變量, 根據(jù)搜索單元71所確定的各處理節(jié)點、各處理節(jié)點的父處理節(jié)點以及各處理節(jié)點的FSR,以 及存儲單元74所記錄的只有安全漏洞檢測需求的處理節(jié)點,分別比較具有檢測需求的各處理節(jié)點與其父處理節(jié)點的安全屬性,在一個處理節(jié)點的父處理節(jié)點的安全屬性不為該處理節(jié)點 的安全屬性的子集時,確定該處理節(jié)點存在安全漏洞。另外,在本發(fā)明的具體實施過程中, 還可以針對一個存在安全漏洞的處理節(jié)點,發(fā)送修改其父處理節(jié)點的安全屬性以使其父處理 節(jié)點的安全屬性為其安全屬性的子集的意見。具體可參見下面對圖8和圖9的說明。
如圖8所示,節(jié)點1對應的FSR為{FSR: "'.{100}$"),表示可以接收100個字符的輸 入;節(jié)點1. 1的FSR為{FSR:"'. {80}$〃},表示可以接收80個字符的輸入;節(jié)點1. 2的FSR 為(FSR:"'. {50}$"},表示可以接收50個字符的輸入;節(jié)點1.2. 1的FSR為(FSR:'". {30}$〃}, 表示可以接收30個字符的輸入;節(jié)點1.2.2的FSR為{FSR:"'. { 20}$〃},表示可以接收20 個.字符的輸入。根據(jù)本發(fā)明提供的技術(shù)方案,由于節(jié)點1. 2作為節(jié)點1. 2. 1和節(jié)點1. 2. 2的 父處理節(jié)點,其FSR均不為節(jié)點1. 2. 1和節(jié)點1. 2. 2的FSR的子集,因此節(jié)點1. 2. 1和節(jié)點 1.2.2存在安全漏洞,并且,根據(jù)FSR的表達式可以得知節(jié)點1.2. 1和節(jié)點1.2.2是存在緩 沖區(qū)溢出的安全漏洞;同時,又由于節(jié)點1作為節(jié)點1.1和節(jié)點1.2的父處理節(jié)點,其FSR 均不為節(jié)點1. 1和節(jié)點1. 2的FSR的子集,因此節(jié)點1. 1和節(jié)點1. 2存在安全漏洞,并且, 根據(jù)FSR的表達式同樣可以得知節(jié)點1. 1和節(jié)點1. 2存在緩沖區(qū)溢出的安全漏洞。
針對節(jié)點1.2、節(jié)點1.2. 1和節(jié)點1.2.2存在的安全漏洞,可以分別發(fā)送修改相應各父 處理節(jié)點的安全屬性的意見。這里,具體的修改意見可以如圖9所示,修改后使節(jié)點1.2的 FSR為{FSR:"'. { 20}$〃},此時節(jié)點1. 2的FSR為節(jié)點1. 2. 1和節(jié)點1. 2. 2的FSR的子集; 修改后使節(jié)點1的FSR為{FSR: 〃 —. {Min (Len of Child 1. n)}$"},表示節(jié)點1可處理的字 符串長度為其所有子節(jié)點可處理的字符串長度的最小值。經(jīng)過這樣的修改之后,由于節(jié)點1 的FSR為節(jié)點1. 1和節(jié)點1. 2的FSR的子集,節(jié)點1. 2的FSR為節(jié)點1. 2. 1和節(jié)點1. 2. 2的 FSR的子集,節(jié)點l.l、節(jié)點L2、節(jié)點1.2. 1和節(jié)點1.2.2就不會處理其自身不期望處理的 多余字符,因此克服了這些節(jié)點緩沖區(qū)溢出的安全漏洞。
本發(fā)明所提供的技術(shù)方案能夠準確、快速的定位源代碼中存在的代碼插入、緩沖器溢出、 權(quán)限提升和信息泄漏的安全漏洞。
本發(fā)明所提供的技術(shù)方案,通過將源代碼中處理節(jié)點的安全屬性、與該處理節(jié)點的父處 理節(jié)點的安全屬性進行對比,在其父處理節(jié)點的安全屬性不為該處理節(jié)點的安全屬性的子集 時,則確定該處理節(jié)點存在安全漏洞,提高代碼審計的準確性,真實準確的反映源代碼中存 在的安全漏洞。另外,在本發(fā)明的具體實施過程中,可以僅針對處理外部相關(guān)變量的各處理 節(jié)點以及具有安全漏洞檢測需求的處理節(jié)點確定其是否存在安全漏洞,因此能夠降低代碼審 計的運算量,進一步提高代碼審計的效率。以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原 則之內(nèi),所做的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種代碼審計的方法,該方法包括以下步驟在源代碼中追蹤一個變量,得到處理該變量的各處理節(jié)點;確定各處理節(jié)點的父處理節(jié)點,以及各處理節(jié)點的安全屬性;分別將各處理節(jié)點的安全屬性與其父處理節(jié)點的安全屬性進行比較,在一個處理節(jié)點的父處理節(jié)點的安全屬性不為該處理節(jié)點的安全屬性的子集時,確定該處理節(jié)點存在安全漏洞。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法進一步包括確定處理節(jié)點存在安全漏洞時,發(fā)送報警信息。
3. 根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法進一步包括確定外部相關(guān)變量,將其作為當前追蹤的變量。
4. 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述確定各處理節(jié)點的父處理節(jié)點包括使用參數(shù)樹的形式來確定各處理節(jié)點的父處理節(jié)點。
5. 根據(jù)權(quán)利要求1至4中任一權(quán)利要求所述的方法,其特征在于,該方法進一步包括設定需要進行安全漏洞檢測的處理節(jié)點;所述分別將各處理節(jié)點的安全屬性與其父處理節(jié)點的安全屬性進行比較包括,分別將需要進行安全漏洞檢測的各處理節(jié)點的安全屬性與其父處理節(jié)點的安全屬性進行比較。
6. 根據(jù)權(quán)利要求1至4中任一權(quán)利要求所述的方法,其特征在于,所述安全屬性用正則表達式和/或訪問控制列表進行描述。
7. 根據(jù)權(quán)利要求1至4中任一權(quán)利要求所述的方法,其特征在于,該方法進一步包括針對存在安全漏洞的處理節(jié)點,發(fā)送修改其父處理節(jié)點的安全屬性以使其父處理節(jié)點的安全屬性為其安全屬性的子集的意見。
8. —種代碼審計的裝置,該裝置包括搜索單元和發(fā)現(xiàn)單元;所述搜索單元,用于在源代碼中追蹤一個變量,得到處理該變量的各處理節(jié)點;確定各處理節(jié)點的父處理節(jié)點,以及各處理節(jié)點的安全屬性;所述發(fā)現(xiàn)單元,用于根據(jù)所述搜索單元確定的各處理節(jié)點、各處理節(jié)點的父處理節(jié)點以及各處理節(jié)點的安全屬性,分別比較各處理節(jié)點與其父處理節(jié)點的安全屬性,在一個處理節(jié)點的父處理節(jié)點的安全屬性不為該處理節(jié)點的安全屬性的子集時,確定該處理節(jié)點存在安全漏洞。
9. 根據(jù)權(quán)利要求8所述的裝置,其特征在于,該裝置進一步包括報警單元;所述報警單元,用于針對發(fā)現(xiàn)單元所確定的存在安全漏洞的處理節(jié)點發(fā)送報警。
10. 根據(jù)權(quán)利要求8或9所述的裝置,其特征在于,該裝置進一步包括入口單元;所述入口單元,用于確定外部相關(guān)變量,將其作為所述搜索單元追蹤的變量。
11. 根據(jù)權(quán)利要求IO所述的裝置,其特征在于,所述搜索單元包括處理單元、建立單元和獲取單元;所述處理單元,用于在源代碼中分別追蹤所述入口單元所確定的各外部相關(guān)變量,獲得處理各外部相關(guān)變量的各處理節(jié)點;所述建立單元,用于針對所述各外部相關(guān)變量,根據(jù)處理單元所獲得的各處理節(jié)點建立描述各處理節(jié)點之間的父、子處理節(jié)點關(guān)系的參數(shù)樹;所述獲取單元,用于設置建立單元建立的參數(shù)樹中各處理節(jié)點的安全屬性。
12. 根據(jù)權(quán)利要求10所述的裝置,其特征在于,該裝置進一步包括存儲單元;所述存儲單元,用于記錄具有安全漏洞檢測需求的處理節(jié)點;所述發(fā)現(xiàn)單元,用于針對所述入口單元所確定的各外部相關(guān)變量,根據(jù)搜索單元所確定的各處理節(jié)點、各處理節(jié)點的父處理節(jié)點以及各處理節(jié)點的安全屬性,以及存儲單元所記錄的具有安全漏洞檢測需求的處理節(jié)點,分別比較具有檢測需求的各處理節(jié)點與其父處理節(jié)點的安全屬性,在一個處理節(jié)點的父處理節(jié)點的安全屬性不為該處理節(jié)點的安全屬性的子集時,確定該處理節(jié)點存在安全漏洞。
全文摘要
本發(fā)明公開了一種代碼審計的方法,該方法的步驟包括在源代碼中追蹤一個變量,得到處理該變量的各處理節(jié)點;確定各處理節(jié)點的父處理節(jié)點,以及各處理節(jié)點的安全屬性;分別將各處理節(jié)點的安全屬性與其父處理節(jié)點的安全屬性進行比較,在一個處理節(jié)點的父處理節(jié)點的安全屬性不為該處理節(jié)點的安全屬性的子集時,確定該處理節(jié)點存在安全漏洞。另外,本發(fā)明還公開了一種代碼審計的裝置。本發(fā)明技術(shù)方案由于根據(jù)處理節(jié)點對變量的處理邏輯確定其是否存在漏洞,因此能夠提高代碼審計的準確性,真實準確的反映源代碼中存在的安全漏洞。
文檔編號G06F21/57GK101551836SQ20081008890
公開日2009年10月7日 申請日期2008年4月3日 優(yōu)先權(quán)日2008年4月3日
發(fā)明者文 唐, 胡建鈞, 隋愛芬 申請人:西門子(中國)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1