具有更大挑戰(zhàn)性的安全軟件開發(fā)
各種類型應(yīng)用中連接設(shè)備數(shù)量的持續(xù)爆炸性增長加大了開發(fā)安全軟件的重要性。每個設(shè)備都面臨不同的風險,因此,必須為每個新項目詳細評估軟件安全要求。云計算的廣泛使用也催生了新的攻擊媒介,使軟件安全變得越來越復(fù)雜和難以實現(xiàn)。零信任已成為軟件安全的新口頭禪。
本文引用地址:http://www.ex-cimer.com/article/202111/429354.htm圖片來源:Gorodenkoff/Shutterstock.com
安全軟件的開發(fā)始終是一個巨大挑戰(zhàn),而且從來都不是一項能夠完美完成的任務(wù)。在開發(fā)安全軟件的開始,需要了解您要保護的對象、盡量避開的對象、以及各種攻擊的潛在影響。威脅的不斷變化意味著在項目開始時通常無法完全確定安全要求,在開發(fā)過程中,可能會出現(xiàn)多次更改。一旦系統(tǒng)或設(shè)備投入使用,各種網(wǎng)絡(luò)威脅和威脅媒介也會不斷演變。面對不斷變化的威脅,越來越多地使用無線更新和補丁來維護安全性。
不幸的是,軟件漏洞是一種永遠存在的動態(tài)風險(圖 1)。因此,必須確保您的代碼安全且受到相應(yīng)保護,不安全的應(yīng)用會導(dǎo)致黑客入侵,它們可以直接控制一個設(shè)備,或者提供入侵另一個設(shè)備的訪問路徑。軟件安全是一個多方面的挑戰(zhàn),包括安全通信、安全操作系統(tǒng)、安全啟動、安全靜態(tài)和傳輸數(shù)據(jù)、消除漏洞的安全編碼標準和實踐、穩(wěn)健性測試等。下面將探討什么是安全編碼,并為您提供安全編碼資源示例,包括行業(yè)標準、指南、法規(guī)以及公認的測試和驗證協(xié)議。
圖1 軟件安全是一個多方面且不斷變化的挑戰(zhàn)(來源:buffaloboy/Shutterstock.com)
安全編碼
安全編碼是指通過計算機軟件開發(fā)以防止意外引入安全漏洞。通過識別不安全的編碼實踐,您可以在部署之前采取主動措施來減少或消除軟件中的漏洞。安全軟件開發(fā)是一個復(fù)雜的過程,包括許多國家和國際準則、法規(guī)和標準。安全軟件開發(fā)從威脅建模開始。
威脅建模
威脅建模和了解所需的安全級別是在新項目開始階段為確定安全代碼開發(fā)目標而采取的重要步驟(圖 2)。要保證安全需要一定時間和精力,但這些并不絕對。多個標準和指南采用安全級別、評分或等級來定義安全軟件的功能。因此,您需要清楚了解每個項目的特定安全需求和目標。每種威脅建模方法中的常見元素包括:
● 記錄數(shù)據(jù)流以識別系統(tǒng)易受攻擊的位置。
● 系統(tǒng)地識別盡可能多的潛在威脅。
● 確定用于降低每個潛在威脅的可能性或影響的控制措施。
圖2 威脅建模是安全軟件開發(fā)中復(fù)雜而關(guān)鍵的第一步(來源:Panchenko Vladimir/Shutterstock.com)
一些常用的威脅建模方法包括:
● Microsoft 安全開發(fā)生命周期 (SDL) 是一種工程技術(shù),可用于幫助識別會影響您應(yīng)用的威脅、攻擊、漏洞和對策。
● 攻擊仿真和威脅分析流程 (PASTA) 是一種以風險為中心的七步方法。它能夠提供一個協(xié)調(diào)業(yè)務(wù)目標和技術(shù)要求的過程,同時考慮了合規(guī)性問題和業(yè)務(wù)分析。
● 通用漏洞評分系統(tǒng) (CVSS) 是一個開放框架,用于傳達軟件漏洞的特征和嚴重性。 CVSS 由三個度量標準組組成:Base、Temporal 和 Environmental。
● 混合威脅建模方法 (hTMM) 由卡內(nèi)基梅隆大學軟件工程研究所于 2018 年開發(fā)。它由 SQUARE(安全質(zhì)量需求工程方法)、Security Cards(由華盛頓大學開發(fā))和 Persona non Grata (PnG,在 DePaul 大學開發(fā))的組合構(gòu)成。
指導(dǎo)原則和規(guī)定
技術(shù)規(guī)范 ISO/IEC TS 17961 是 C 編程語言的一組編碼規(guī)則。該規(guī)范定義了確保用 C 語言編寫軟件的安全性、可靠性、安全性和完整性最佳實踐,器目的是使用軟件代碼的靜態(tài)分析,降低合規(guī)成本。 ISO 的兩個出版物對其進行了定義:
● ISO/IEC TS 17961:2013:信息技術(shù)——編程語言、它們的環(huán)境和系統(tǒng)軟件接口——C語言安全編碼規(guī)則
● ISO/IEC TS 17961:2013/Cor 1:2016:信息技術(shù)——編程語言、它們的環(huán)境和系統(tǒng)軟件接口——C語言安全編碼規(guī)則,技術(shù)勘誤表 1
MISRA C 是一組由汽車工業(yè)軟件可靠性協(xié)會 (MISRA) 開發(fā)的 C 編程語言軟件開發(fā)指南,它旨在促進代碼的安全性、可移植性和可靠性,特別是那些在 ISO C/C90/C99 中編程的系統(tǒng)。還有一套 MISRA C++ 指南,MISRA C 已發(fā)展成為被汽車、航空航天、電信、醫(yī)療設(shè)備、國防、鐵路等行業(yè)的領(lǐng)先開發(fā)商廣泛接受的最佳實踐模型。為了使MISRA合規(guī)更具有意義,有必要確定:
● 使用嚴格的軟件開發(fā)流程。
● 準確地應(yīng)用了哪些準則。
● 執(zhí)行方法的有效性。
● 任何偏離準則的程度。
● 在項目之外開發(fā)的任何軟件組件狀態(tài)。
安全編碼標準
安全啟動或運行前進行代碼驗證是安全編碼越來越重要的方面,這在攻擊風險或潛在影響很高的應(yīng)用中尤為重要,例如航空電子設(shè)備、自動駕駛汽車、醫(yī)療和工業(yè)系統(tǒng)等。此外,歐洲電信標準協(xié)會 (ETSI) (TS 103 645) 和美國國家標準與技術(shù)協(xié)會 (NIST) (SP 800-193) 的新物聯(lián)網(wǎng)設(shè)備安全標準也包括運行前進行代碼驗證。
ISA/IEC 62443 系列標準由國際自動化協(xié)會 ISA99 委員會制定,并被國際電工委員會 (IEC) 采用,它提供了一個靈活的框架來解決和減少工業(yè)自動化和控制系統(tǒng)中當前和未來的安全漏洞。 ISA/IEC 62443-3-2,專注安全風險評估、系統(tǒng)分區(qū)和安全級別,該標準正在開發(fā)中。
IEC 62443 要求使用靜態(tài)代碼分析器來執(zhí)行安全編碼標準,包括:
● Common Weakness Enumeration (CWE?),這是一個社區(qū)開發(fā)的軟件和硬件弱點類型列表。它可作為一種通用語言,一種安全工具的衡量標準,也是弱點識別、緩解和預(yù)防工作的基準。
● 卡內(nèi)基梅隆大學軟件工程研究所(Carnegie Mellon University Software Engineering Institute)的 CERT 包括常用編程語言(如 C、C++、Java、Perl 和 Android? 平臺)的編碼標準。
● Open Web Application Security Project? (OWASP?) 是一個致力于提高軟件安全性的非營利基金會。
● 美國國防信息系統(tǒng)局 (DISA) 提供與國防部項目特別相關(guān)的安全技術(shù)實施指南 (STIG)。
一些額外的安全編碼資源是:
● 常見漏洞和后門(CVE) 是在特定軟件產(chǎn)品中發(fā)現(xiàn)的網(wǎng)絡(luò)安全漏洞和后門列表。該列表鏈接到來自多個不同漏洞數(shù)據(jù)庫的信息,用戶可以更輕松地比較安全工具和服務(wù)。
● NIST 的國家漏洞數(shù)據(jù)庫 (NVD) 是美國政府基于標準的漏洞管理數(shù)據(jù)存儲庫,它與 CVE 列表相關(guān)聯(lián)并提供附加內(nèi)容,包括如何修復(fù)漏洞、嚴重性評分和影響評級。要計算嚴重性級別,必須使用通用漏洞評分系統(tǒng) (CVSS),這是用于評估軟件漏洞嚴重性的開放行業(yè)標準。
● 支付應(yīng)用程序數(shù)據(jù)安全標準(Payment Application Data Security Standard)是一項全球安全標準,適用于支付應(yīng)用軟件的開發(fā),它以前被稱為支付應(yīng)用程序最佳實踐 (PABP)。
● NIST 的 SP 800-82 可指導(dǎo)如何保護工業(yè)控制系統(tǒng)。NIST 還解決了中型公司對 ICS 安全性的擔憂,并已開始擴展機器人、智能交通和化學處理等領(lǐng)域的測試平臺。 NIST 還制定了安全內(nèi)容自動化協(xié)議 (SCAP)。
測試和驗證
侵入測試是完整安全審計的重要組成部分。侵入測試是對系統(tǒng)的授權(quán)模擬網(wǎng)絡(luò)攻擊(見圖 3),該測試目的是識別弱點,包括未授權(quán)方訪問系統(tǒng)功能和數(shù)據(jù)的可能性以及所具備的優(yōu)勢,從而能夠完成全面的風險評估。測試通常包括網(wǎng)絡(luò)侵入測試、應(yīng)用安全測試以及圍繞網(wǎng)絡(luò)和應(yīng)用的控制和流程測試。
例如,支付卡行業(yè)數(shù)據(jù)安全標準(Payment Card Industry Data Security Standard)要求定期和系統(tǒng)更改后進行侵入測試。業(yè)內(nèi)存在一些用于進行侵入測試的標準框架和方法,其中包括開源安全測試方法手冊、侵入測試執(zhí)行標準、NIST SP 800-115、信息系統(tǒng)安全評估框架和 OWASP 測試指南等。
圖3 侵入測試應(yīng)考慮網(wǎng)絡(luò)外部試圖侵入的惡意行為者(外部測試)和來自網(wǎng)絡(luò)內(nèi)部的攻擊 (來源:Panchenko Vladimir/Shutterstock.com)
通用弱點枚舉 (CWE?) 是社區(qū)開發(fā)軟件和硬件弱點類型列表。 CWE能夠在下述方面幫助開發(fā)人員和安全從業(yè)人員:
● 用通用語言描述和討論軟件和硬件的弱點。
● 檢查現(xiàn)有軟件和硬件產(chǎn)品的弱點。
● 評估具備這些弱點工具的覆蓋范圍。
● 利用通用基線標準進行弱點識別、緩解和預(yù)防工作。
● 在部署之前防止軟件和硬件漏洞。
設(shè)備的評估保證級別 (EAL) 是一個從 1 到 7 的數(shù)值,它是采用國際標準化通用標準安全評估進行確定。 EAL級別越高,相應(yīng)設(shè)備安全目標文檔中概述的驗證和測試要求就越詳細。更高的EAL級別不一定代表更安全的設(shè)備,它只是表明完全的測試和驗證過程。在兩個設(shè)備具有相同安全目標定義的情況下,評級較高的設(shè)備應(yīng)該更值得信賴。
EAL要求也可以提高,以包括比給定EAL所需最低要求更廣泛的保證要求。增強的EAL可以使用“增強”一詞或使用 EAL5+ 中的加號來表示。
結(jié)論
軟件安全是一個多方面的挑戰(zhàn),在各種不同應(yīng)用中,開發(fā)安全軟件的重要性正在日益提高。作為回應(yīng),安全編碼標準也變得越來越關(guān)鍵,測試和驗證性能的需求同樣越來越重要。如本文所示,開發(fā)人員可以訪問從威脅分析到開發(fā)過程,再到測試和驗證的各種工具。
評論