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