Common Weak Enumeration (CWE) 是軟件弱點(diǎn)和漏洞的類別系統(tǒng),現(xiàn)在用于為開發(fā)關(guān)鍵任務(wù)嵌入式系統(tǒng)的人員提供源代碼分析工具的通用詞匯表。CWE項(xiàng)目的一些不同分組(例如與一般編碼實(shí)踐相關(guān)的分組)側(cè)重于軟件系統(tǒng)中特定于安全的部分,包括身份驗(yàn)證和加密,以及可以通過適當(dāng)選擇編程語言或工具來緩解的部分。最近決定在CWE的框架內(nèi)包括“通用質(zhì)量枚舉”,該枚舉將推廣其適用于各種軟件弱點(diǎn),而不是嚴(yán)格意義上與網(wǎng)絡(luò)安全相關(guān)的弱點(diǎn)。
制定 CWE
Common Weak Enumeration(CWE,http://cwe.mitre.org)已經(jīng)成為每個具有安全意識的任務(wù)關(guān)鍵型嵌入式系統(tǒng)開發(fā)人員的事實(shí)上的參考資源。CWE將所有已知的網(wǎng)絡(luò)安全漏洞分類為一個系統(tǒng)編號的列表,最新版本(3.2版,從2019年1月開始)包含800多個弱點(diǎn)和近1,200個項(xiàng)目。CWE源于MITRE公司(馬薩諸塞州貝德福德和弗吉尼亞州麥克萊恩)的一個項(xiàng)目,該項(xiàng)目旨在描述和總結(jié)不斷增長的常見漏洞和暴露(CVE)列表;MITRE還與美國國家標(biāo)準(zhǔn)與技術(shù)研究院(NIST)維護(hù)的國家漏洞數(shù)據(jù)庫(NVD)一起維護(hù)CVE列表。
CVE和NVD一起記錄了每個公開的網(wǎng)絡(luò)安全漏洞和暴露事件,可以追溯到1999年。CWE試圖將網(wǎng)絡(luò)安全漏洞和暴露事件分為不同的類別,以便為工具,網(wǎng)絡(luò)安全專家和整個關(guān)鍵任務(wù)軟件開發(fā)社區(qū)提供通用詞匯。在 3.2 版中,已努力包含更普遍的質(zhì)量弱點(diǎn),這些弱點(diǎn)源自 CQE(通用質(zhì)量枚舉)項(xiàng)目。這些類型的弱點(diǎn)與安全問題沒有直接關(guān)系,但仍然可能導(dǎo)致生命周期中的重大問題,并且通??梢酝ㄟ^檢測以安全為中心的弱點(diǎn)的相同類型的工具檢測到。
CWE被用于各種上下文,但也許最重要的是與源代碼分析工具有關(guān)。從歷史上看,每個這樣的工具都有自己特定的詞匯表,所有這些詞匯表都有可能令人困惑或模棱兩可的描述,確切地說它旨在檢測什么樣的軟件問題。然而,隨著CWE的出現(xiàn),許多源代碼分析工具已經(jīng)開始使用相關(guān)的唯一CWE標(biāo)識符來識別它們檢測到的問題。使用CWE,這種共享詞匯能夠以有意義的方式組合和比較來自多個工具的結(jié)果。即使使用通用術(shù)語,使用多個工具也有優(yōu)勢,因?yàn)樵跈z測潛在的源代碼缺陷時,不同的工具往往具有不同的優(yōu)勢。
CWE 示例
CWE最好通過示例來說明。在第一次查看 CWE 時,區(qū)分不同類型的弱點(diǎn)通常是有幫助的。有些我們可以稱之為通用,因?yàn)樗鼈冊谌魏魏兔總€應(yīng)用程序中都是值得關(guān)注的,例如緩沖區(qū)溢出(CWE-120)?;旧?,所有程序都使用表、數(shù)組或字符串,對于所有此類程序,嘗試向表、數(shù)組或字符串中放入比它可以容納的更多內(nèi)容肯定會產(chǎn)生問題,如果語言通過運(yùn)行時檢查捕獲此類嘗試,或者最終如果由此類緩沖區(qū)溢出損壞的數(shù)據(jù)用作計算后期階段的輸入。CWE-120的 http://cwe.mitre.org 條目如下(表1)。
表 1:CWE-120。
除了 CWE-120 之外,還有一組相關(guān)的弱點(diǎn),這些弱點(diǎn)涉及將索引到數(shù)組邊界之外的類似數(shù)組的結(jié)構(gòu)中。在CWE網(wǎng)站上搜索“數(shù)組越界”會生成相關(guān)CWE條目的列表,其中不僅包括對弱點(diǎn)的描述:它們還包括一些示例來說明那些編程語言中的弱點(diǎn),其中編譯時或運(yùn)行時檢查不會自動檢測到弱點(diǎn)。此外,在一些更基本的 CWE(如 CWE-120)的條目中,還提供了其他部分,例如介紹模式、適用平臺(通常是弱點(diǎn)更普遍的編程語言)、常見后果、利用的可能性和潛在的緩解措施。緩解措施部分將確定不太可能出現(xiàn)漏洞的語言或平臺,以及軟件開發(fā)或部署實(shí)踐,這些實(shí)踐將減少在所使用的語言或平臺無法自動阻止漏洞的環(huán)境中被利用的可能性。
除了緩沖區(qū)溢出及其相關(guān)危險等普遍弱點(diǎn)之外,還有一些弱點(diǎn)更特定于應(yīng)用程序,具體取決于應(yīng)用程序的性質(zhì)。例如,正確使用身份驗(yàn)證和授權(quán)可能與在物理安全位置之外無法訪問的應(yīng)用程序無關(guān)。CWE-284,訪問控制不當(dāng),解決了這一特定于應(yīng)用程序的弱點(diǎn)(下一頁的表2)。
表 2:CWE-284。
與緩沖區(qū)溢出一樣,還有一組其他 CWE 條目專注于此一般弱點(diǎn)領(lǐng)域的特定元素。在CWE網(wǎng)站上搜索“身份驗(yàn)證和授權(quán)”會生成示例列表。
盡管此類特定于應(yīng)用程序的 CWE 可能并不適用于所有系統(tǒng),但具有外部連接的系統(tǒng)的比例每天都在增長。例如,過去只有飛行員才能使用的軍事系統(tǒng)現(xiàn)在正在聯(lián)網(wǎng),以改善協(xié)調(diào)和態(tài)勢感知。盡管網(wǎng)絡(luò)中的其他系統(tǒng)本身可能是安全的,但干擾通信的可能性始終存在。即使是這些純粹的計算機(jī)到計算機(jī)連接也可能需要身份驗(yàn)證和授權(quán),以避免不友好方的欺騙或損壞。最重要的是,越來越多的以前特定于應(yīng)用程序的CWE在其相關(guān)性方面變得更加普遍。
如上所述,剛剛在CWE版本3.2中添加的一組新的CWE條目與安全性沒有直接關(guān)系,但仍然與強(qiáng)大的關(guān)鍵任務(wù)嵌入式系統(tǒng)的構(gòu)建和發(fā)展相關(guān)。該組源自幾年前構(gòu)建的實(shí)驗(yàn)性通用質(zhì)量枚舉 (CQE),包括 CWE 條目,例如 CWE-1041,冗余代碼的使用(表 3)。
表 3:CWE-1041。
如表的擴(kuò)展描述所示,相同代碼的重復(fù)副本會嚴(yán)重影響系統(tǒng)的維護(hù)和演進(jìn)。這也是一個普遍的質(zhì)量和可維護(hù)性問題,事實(shí)上,幾乎每個系統(tǒng)都會發(fā)生,與編程語言或開發(fā)過程無關(guān)。甚至還有一個三個字母的首字母縮略詞專門用于這個問題:DRY – 不要重復(fù)自己!代碼的重復(fù)在某種程度上是“不要重新發(fā)明輪子”的另一面。無論是重復(fù)自己還是重新發(fā)明輪子,都不是程序員構(gòu)建長期關(guān)鍵任務(wù)系統(tǒng)的正確答案。關(guān)鍵是抽象、模塊化和編程平臺底層的良好庫系統(tǒng),因此可重用的組件可以抽象為可以多次調(diào)用或?qū)嵗慕M件,而無需依賴復(fù)制和粘貼。
CWE 兼容工具
正如上述少量CWE條目所證明的那樣,CWE與軟件密集型系統(tǒng)開發(fā)過程中每天面臨的挑戰(zhàn)直接相關(guān)。有了這個通用詞匯,軟件項(xiàng)目現(xiàn)在可以根據(jù)工具是否可以檢測甚至建議更正正在開發(fā)或部署的系統(tǒng)源代碼中的此類弱點(diǎn)來識別和評估工具。事實(shí)上,MITRE 已經(jīng)建立了一個遵循 CWE 命名法的工具注冊表,無論是在控制其操作方面,還是在生成報告方面。此工具列表作為MITRE的CWE兼容性和有效性計劃的一部分進(jìn)行維護(hù)。
目前,大約有35家公司在CWE兼容工具注冊表中列出了50多種工具。要在注冊表中列出,該工具必須至少滿足以下六個條件中的前四個:可使用 CWE 標(biāo)識符進(jìn)行 CWE 搜索;必須包含或允許用戶獲取相關(guān)的 CWE 標(biāo)識符;必須準(zhǔn)確鏈接到適當(dāng)?shù)?CWE 標(biāo)識符;必須描述 CWE、CWE 兼容性和 CWE 相關(guān)功能;必須明確列出功能聲稱覆蓋范圍和有效性的 CWE-ID,以防止在軟件中定位;并且必須在網(wǎng)站上顯示 CWE 評估軟件的測試結(jié)果。
作為某些類型的工具如何將 CWE 標(biāo)識符集成到其用戶界面中的示例,下面是靜態(tài)分析工具的屏幕截圖,展示了它在示例程序 [dining_philosophers.adb – 基于經(jīng)典的餐飲哲學(xué)家算法] 中檢測各種 CWE 問題的能力(圖 1)。
圖1:屏幕截圖演示了該工具在示例程序中檢測 CWE 問題的能力。
如上所示,顯示的每條消息都包含與每個已識別問題關(guān)聯(lián)的 CWE 標(biāo)識符(在本例中,我們看到緩沖區(qū)溢出和數(shù)字范圍溢出)。圖形界面還使用戶能夠通過CWE標(biāo)識符識別當(dāng)前感興趣的特定弱點(diǎn),從而過濾掉與這些問題無關(guān)的消息。雖然此處未顯示,但將鼠標(biāo)懸停在 CWE 標(biāo)識符上會顯示弱點(diǎn)的簡短描述,因此用戶無需嘗試記住每個 CWE ID 的含義。
作為另一個示例,下面是一個工具的屏幕截圖,該工具支持在 Ada 的 SPARK 子集中編寫的程序的程序?qū)傩缘男问阶C明。
圖2:屏幕截圖顯示了相應(yīng)的 CWE 標(biāo)識符。
在這里,我們再次看到指示工具無法完全自動化證明運(yùn)行時錯誤缺失 (AoRTE) 屬性的位置的消息包括適當(dāng)?shù)?CWE 標(biāo)識符。上面還顯示了一個搜索功能,可以過濾掉非 CWE 郵件(在本例中,通過在搜索框中寫入“CWE”),或者可以識別引用特定 CWE ID 的郵件。
MITRE對常見弱點(diǎn)枚舉的定義為開發(fā)更安全,更健壯的軟件密集型系統(tǒng)的整個過程做出了重要貢獻(xiàn)。它提供了一個通用詞匯表,有助于軟件開發(fā)組織內(nèi)部的溝通,并允許用戶理解和比較用于掃描和分析任務(wù)關(guān)鍵型軟件源代碼的工具的功能。設(shè)計人員會發(fā)現(xiàn),將CWE兼容功能納入靜態(tài)分析和形式化方法工具集,使用戶能夠輕松了解可以消除的安全性和魯棒性問題。
審核編輯:郭婷
-
嵌入式
+關(guān)注
關(guān)注
5082文章
19126瀏覽量
305302 -
應(yīng)用程序
+關(guān)注
關(guān)注
37文章
3268瀏覽量
57715
發(fā)布評論請先 登錄
相關(guān)推薦
評論