漫談軟件缺陷與漏洞

Cynthia Freeney
軟件應(yīng)用程序中的一些主要和常見缺陷包括業(yè)務(wù)邏輯錯誤、復雜性問題、文件處理問題、封裝問題、數(shù)據(jù)驗證問題、身份認證和授權(quán)錯誤。

QQ截圖20211111112922.png

本文來自微信公眾號“AI前線”,作者/Cynthia Freeney

作者|Cynthia Freeney

譯者|敘緣

策劃|丁曉昀

審校|冬雨

1

軟件缺陷

盡管自編碼有了一些進展,但現(xiàn)在開發(fā)軟件主要仍然得靠人工。

然而,人非圣賢,孰能無過?因此,我們可以得到一個合理的推測:由人生產(chǎn)出來的產(chǎn)品和服務(wù),必然包含某種形式的缺陷。所以,軟件缺陷不可避免,并且是軟件開發(fā)過程的固有部分。

軟件缺陷是邏輯或配置上的錯誤,會導致系統(tǒng)產(chǎn)生我們不期望的行為。

軟件應(yīng)用程序中的一些主要和常見缺陷包括業(yè)務(wù)邏輯錯誤、復雜性問題、文件處理問題、封裝問題、數(shù)據(jù)驗證問題、身份認證和授權(quán)錯誤。

常見弱點枚舉(CWE)清單描述了常見的軟件和硬件弱點,會導致安全方面的相關(guān)問題。該清單對可能存在的軟件弱點進行了全面分類。

在業(yè)務(wù)研發(fā)過程中,我們通常通過比較內(nèi)部質(zhì)量和風險指標以及對需求、規(guī)范、標準和截止日期等方面的遵守程度,來衡量和評估軟件質(zhì)量等級的可接受度。

因此,我們應(yīng)該可以得到這樣一個結(jié)論:軟件質(zhì)量是主觀的,受業(yè)務(wù)承諾、高級管理人員的參與情況和組織文化的影響。

軟件開發(fā)中一個重要的關(guān)注點涉及到在預(yù)算、進度、范圍、質(zhì)量和安全性這些方面之間保持適當?shù)钠胶狻R粋€方面的變化會影響其他方面。雖然都不希望改變計劃,但這在軟件開發(fā)生命周期中并不少見。這些場景反映了組織為了控制預(yù)算和進度,不得不在軟件質(zhì)量和安全性方面做出妥協(xié)。

軟件質(zhì)量并不總是軟件的安全性指標。軟件安全性的衡量標準,是在測試期間和生產(chǎn)部署之后發(fā)現(xiàn)的漏洞數(shù)量。軟件漏洞是一類軟件缺陷,潛在的攻擊者經(jīng)常利用這些漏洞,繞過授權(quán),訪問計算機系統(tǒng)或執(zhí)行操作。有時,授權(quán)的用戶也會出于惡意,利用系統(tǒng)中這些未修補的已知漏洞。

這些用戶還可能會輸入不能通過校驗的數(shù)據(jù),無意中利用了軟件漏洞,從而損害數(shù)據(jù)完整性和使用這些數(shù)據(jù)的功能的可靠性。對漏洞的利用會針對下面三個安全支柱中的一個或多個:機密性、完整性和可用性,它們通常稱為CIA三元組。

機密性指保護數(shù)據(jù)在未經(jīng)授權(quán)時不會被泄漏;完整性指保護數(shù)據(jù)在未經(jīng)授權(quán)時不會被修改,以保證數(shù)據(jù)的真實性;可用性指系統(tǒng)在需要時可供授權(quán)用戶使用,并拒絕未經(jīng)授權(quán)的用戶訪問。了解軟件錯誤和漏洞之間的區(qū)別,是為創(chuàng)建安全的軟件和及時減少缺陷和漏洞的整體戰(zhàn)略的關(guān)鍵。

2

軟件漏洞

現(xiàn)在已公布的漏洞利用行為,以及OWASP十大、MITRE常見漏洞和暴露(CVE)列表、美國國家漏洞數(shù)據(jù)庫和其他來源提供的見解都在講軟件漏洞。總體而言,這些信息強調(diào)了技術(shù)創(chuàng)新如何打破了所需的平衡,我們可以根據(jù)這些信息采取更有效的措施,在產(chǎn)品部署之前更好地檢測和減少軟件漏洞。

軟件安全瑕疵越來越多,影響最大的因素是我們對軟件安全性不思進取的態(tài)度、在軟件安全性方面缺乏有效的最佳實踐、軟件開發(fā)人員和潛在攻擊者之間的知識差異以及不安全的遺留軟件。

由于威脅在不斷變化,因此,在安全方面與時俱進的態(tài)度對于達成軟件安全性很有必要。組織在開發(fā)和部署軟件時,如果對安全的態(tài)度原地踏步,有可能會把內(nèi)部合規(guī)跟有效、安全的軟件開發(fā)周期過程混為一談;對不斷發(fā)展的威脅向量認識不足;從而無意中增加客戶在各方面的風險。安全策略一成不變,只依賴內(nèi)部合規(guī)來證明開發(fā)的軟件很安全,這是短視的行為。

隨著時間的推移,這種依賴性將導致利益相關(guān)者對組織開發(fā)安全軟件的能力產(chǎn)生盲目的信心,并降低軟件開發(fā)團隊充分審查和應(yīng)對不斷變化的威脅的能力。若我所料不差,這些組織很可能沒有有效的補丁管理程序,也沒有在產(chǎn)品或解決方案實施過程中集成軟件安全方面的設(shè)計原則。他們也不太可能添加安全相關(guān)場景的測試套件,或?qū)④浖踩淖罴褜嵺`納入軟件開發(fā)流程。

想要研發(fā)安全的軟件,在研發(fā)生命周期中就應(yīng)該應(yīng)用軟件安全方面的最佳實踐。最佳實踐涵蓋安全設(shè)計原則、編碼、測試、工具以及針對開發(fā)人員和測試人員的培訓,有助于在將產(chǎn)品和解決方案部署到生產(chǎn)環(huán)境之前主動檢測和修復漏洞。在合適的情況下,應(yīng)用“故障安全”、“最小權(quán)限”、“深度防御”和“職責分離”等安全設(shè)計原則,可以增強應(yīng)用程序的安全性。此外,還必須優(yōu)先對開發(fā)人員和測試人員進行軟件安全性方面的常規(guī)培訓。

軟件開發(fā)人員和潛在攻擊者之間的知識差距正在擴大。這種現(xiàn)象的原因不盡相同,其中一些原因是心態(tài)、主要關(guān)注領(lǐng)域不同和缺乏學習機會。此外,一些軟件開發(fā)人員對系統(tǒng)妥協(xié)持零和態(tài)度。這種心態(tài)與深度防御的安全設(shè)計原則背道而馳,并認為網(wǎng)絡(luò)和設(shè)備漏洞實際上是“天國的鑰匙”事件(譯注:keys-to-the-kingdom,基督教典故,此處是指通過漏洞獲得極大權(quán)限是漏洞發(fā)現(xiàn)者應(yīng)得的)。因此,他們認為試圖盡量減少妥協(xié)是徒勞的。有許多被爆出來的系統(tǒng)數(shù)據(jù)泄露事件,正是這種心態(tài)引發(fā)的后果,它們因缺少安全性或分層安全性不足,導致未加密的個人數(shù)據(jù)被盜。

這種“零和”心態(tài),無意中助長了潛在攻擊者通過各種技術(shù)深入到網(wǎng)絡(luò)中進一步破壞生態(tài)系統(tǒng)的能力,從而可能獲得對包含個人和業(yè)務(wù)數(shù)據(jù)的其他系統(tǒng)的訪問權(quán)限。仔細審查代碼是常見的深度防御措施,但一些軟件開發(fā)人員未能有效利用。這些開發(fā)人員完全依賴自動代碼掃描工具,而沒有審查代碼,或者只是粗略地審查代碼。使用自動代碼掃描工具并仔細審查代碼才是一種有效的深度防御策略,可以在解決方案或產(chǎn)品部署到生產(chǎn)環(huán)境之前檢測出漏洞。

軟件開發(fā)人員和潛在攻擊者有不同的優(yōu)先級和重點領(lǐng)域。軟件開發(fā)人員的重點領(lǐng)域包括實現(xiàn)業(yè)務(wù)邏輯;修復軟件缺陷以滿足質(zhì)量要求;確保他們實施的功能或解決方案滿足內(nèi)部實用性、可用性和性能指標或服務(wù)水平協(xié)議(SLA)中的指標。顯而易見,軟件開發(fā)人員會在其主要關(guān)注領(lǐng)域獲得專業(yè)知識。而潛在攻擊者主要關(guān)注領(lǐng)域包括系統(tǒng)和軟件行為分析,他們不斷磨練技能以增加收入、滿足好奇心、實現(xiàn)工具集、偵察和探索。所以同樣地,潛在攻擊者在其關(guān)注領(lǐng)域里也能獲得專業(yè)知識。

潛在攻擊者和軟件開發(fā)人員之間的技能差異,讓組織需要在軟件安全方面持續(xù)地對軟件開發(fā)人員進行培訓。軟件開發(fā)人員還必須了解當前的和不斷拓展的攻擊向量,并了解軟件攻擊面的概念,以避免在軟件實現(xiàn)和修改過程中誤入雷區(qū)。此外,軟件開發(fā)人員必須轉(zhuǎn)變觀念,將軟件安全原則和最佳實踐納入到軟件開發(fā)生命周期中,它們與功能實現(xiàn)具有同等優(yōu)先級。

在開發(fā)現(xiàn)在被稱為“遺留”軟件的那些年里,功能實現(xiàn)通常有最高優(yōu)先級。對于許多軟件供應(yīng)商而言,軟件安全跟功能的優(yōu)先級不同,而且不是軟件開發(fā)流程的一部分。在這種優(yōu)先級安排以及威脅形勢不斷增長的長期影響下,其結(jié)果就是現(xiàn)在“遺留”軟件中那些漏洞會被人發(fā)現(xiàn)和利用。為什么優(yōu)先考慮功能實現(xiàn),原因各不相同。

競爭、上市時間問題以及對軟件安全缺乏關(guān)注,是組織不能遵循軟件安全最佳實踐和維持軟件安全開發(fā)流程的主要原因。某些組織為了更好地保護“遺留”軟件,給它們分配了資金和資源,在所需功能的實現(xiàn)上做出犧牲;并且由于持續(xù)關(guān)注在“遺留”軟件的保護上,可能會喪失潛在的競爭優(yōu)勢。而其他組織通過檢查軟件漏洞來主動評估其“遺留”系統(tǒng)。盡管如此,在代碼庫被完全修補、升級到最新最安全或被廢棄之前,遺留軟件都將是漏洞利用方面的沃土。

3

結(jié)論

軟件是潛在攻擊者最常用的攻擊媒介之一。因此,許多組織意識到,為了實現(xiàn)和維護安全的軟件開發(fā)流程和基礎(chǔ)架構(gòu),盡職盡責的調(diào)查非常重要。這些組織獨立而又協(xié)同地為推進網(wǎng)絡(luò)和軟件安全領(lǐng)域的防御策略做出貢獻。企業(yè)貢獻包括:創(chuàng)建描述網(wǎng)絡(luò)攻擊階段的安全模型和框架(例如洛克希德馬丁公司的網(wǎng)絡(luò)殺傷鏈),從而使組織能夠規(guī)劃相應(yīng)的緩解措施;設(shè)立賞金計劃,獎勵查找漏洞,讓安全研究人員和其他人可以因發(fā)現(xiàn)可利用的軟件缺陷而掙到錢;對開源網(wǎng)絡(luò)安全工具集的貢獻;編寫應(yīng)用程序安全白皮書,描述最佳實踐并促進軟件安全向開發(fā)-安全-運維(DevSecOps)自然過渡。

不斷發(fā)展的軟件攻擊向量使得我們不可能在生產(chǎn)部署之前消除所有軟件漏洞。盡管如此,軟件開發(fā)人員還是必須持續(xù)學習軟件安全開發(fā)。也有人正關(guān)注于使用機器學習來檢測軟件漏洞,這將有助于更快、更有效地檢測軟件漏洞。然而,這種在專業(yè)領(lǐng)域采用機器學習的結(jié)果是否符合預(yù)期,目前還不確定。與此同時,各組織還是必須繼續(xù)在同一戰(zhàn)線上持續(xù)投入,共同抗衡潛在攻擊者。

作者簡介

Cynthia Freeney目前就職于一家專門從事生物醫(yī)學人工智能和自然語言處理技術(shù)的組織,擔任軟件項目經(jīng)理和安全官的雙重角色。她擁有Scrum Master認證和ISC2認證軟件安全生命周期專家(CSSLP)認證,并且是網(wǎng)絡(luò)安全的狂熱愛好者。

原文鏈接

https://www.infoq.com/articles/emerging-software-vulnerabilities/

THEEND

最新評論(評論僅代表用戶觀點)

更多
暫無評論