發(fā)現(xiàn)自己的環(huán)境中存在舊的、易受攻擊的代碼的公司很可能缺乏修復(fù)這些代碼的資源。大多數(shù)公司都會在某一時刻發(fā)現(xiàn)自己處于這種情況,無論是因為他們使用的是開源程序還是過時的程序,但公司有一些方法可以應(yīng)對問題,包括確定優(yōu)先順序、自動化和緩解。
舊的、糟糕的代碼中存在的問題在企業(yè)中隨處可見。易受攻擊的代碼通常是一個問題,根據(jù)Veracode今年發(fā)布的一份報告,在去年掃描的應(yīng)用程序中,74%至少有一個安全漏洞,19%有高度嚴(yán)重的漏洞。Veracode的首席研究官Chris Eng說,應(yīng)用程序越舊,出現(xiàn)問題的可能性就越大。首次掃描新應(yīng)用程序時,32%的應(yīng)用程序存在安全漏洞。在五年的時間節(jié)點上,這一比例躍升至70%,到一個應(yīng)用程序使用10年的時候,它有90%的可能性至少有一個安全漏洞。
問題增加的一個原因是應(yīng)用程序中添加了新的代碼,根據(jù)Veracode的數(shù)據(jù),在前五年,應(yīng)用程序平均每年增長40%,每一行新代碼都增加了出錯的可能性,更復(fù)雜的代碼使發(fā)現(xiàn)和修復(fù)問題變得更加困難。
組件也是問題的一大部分,Eng告訴記者:“大多數(shù)開發(fā)人員,當(dāng)他們下載一個開源組件并將其整合到他們的應(yīng)用程序中時,永遠(yuǎn)不會回去更新它。”更準(zhǔn)確地說,79%的時間里,舊的開源組件不會更新。隨著時間的推移,即使從來沒有添加新的代碼行,也會不斷發(fā)現(xiàn)新的漏洞,Eng說,“該應(yīng)用程序的安全狀況變得越來越糟糕。”
根據(jù)Synopsys在2月份發(fā)布的開源安全和風(fēng)險分析,所有商業(yè)代碼庫中96%包含開源組件,89%包含過時四年以上的開源代碼,這個問題對應(yīng)用程序安全是很重要,以至于易受攻擊的第三方庫被OWASP列為Web應(yīng)用程序安全風(fēng)險前十名。
表面上看,解決方案似乎很簡單:只需用最新版本替換組件即可。當(dāng)代碼庫相對較新時,這很容易。Eng說:“如果明天發(fā)布補丁,那么做補丁就相當(dāng)容易了。但如果我徘徊數(shù)年,得到多個版本,那么獲取最新版本所需的工作量是巨大的。”
隨著每一個新的更新,特別是主要的版本,有更多的可能性來改變行為,關(guān)鍵功能可能已棄用,這意味著如果組件更新到最新版本,應(yīng)用程序作為一個整體可能會停止工作。“當(dāng)你有幾個主要版本之后,肯定會發(fā)生崩潰。”Eng說。
當(dāng)公司發(fā)現(xiàn)自己處于這種情況時,最好的做法是首先專注于最關(guān)鍵的問題。
識別并確定構(gòu)成最高風(fēng)險的糟糕代碼的優(yōu)先順序
不同的漏洞可能會對公司產(chǎn)生不同的影響。在某些情況下,特定函數(shù)中可能存在安全漏洞,但應(yīng)用程序不使用該函數(shù),因此使系統(tǒng)不太容易受到該特定漏洞的攻擊。還有一個問題是,是否看到了攻擊行為,以及正在觀察到的攻擊活動的類型。
背景也很重要。Synopsys Software Integrity Group的管理顧問亞當(dāng)·布朗告訴記者:“如果你有一個過時的、非常舊的應(yīng)用程序,但它部署在一個沒有人能訪問的安全網(wǎng)絡(luò)上,那么它的影響就不會那么高了。即使它被歸類為超高風(fēng)險的關(guān)鍵漏洞,如果你花了很多錢來修復(fù)它,誰會受益?”
在受監(jiān)管的行業(yè)中,也可能存在與修復(fù)代碼相關(guān)的合規(guī)問題,因為任何更改都必須經(jīng)過審查,這種情況往往發(fā)生在金融和衛(wèi)生領(lǐng)域。對于一些舊的應(yīng)用程序,更換可能比修復(fù)更有意義。布朗說:“有時候,建立一個新的模型,然后慢慢遷移到它上面,比試圖修復(fù)舊的模型要容易得多。你可能會花時間修復(fù)一個嚴(yán)重的漏洞,但最終你應(yīng)該做的是找出如何重新開發(fā)平臺。”
Synopsys本月初發(fā)布了自己的軟件漏洞報告,該報告基于過去三年運行的1.2萬項測試,重點是網(wǎng)絡(luò)和移動應(yīng)用程序。根據(jù)這份報告,92%的應(yīng)用程序存在漏洞,其中33%屬于嚴(yán)重類別。
在確定優(yōu)先順序時,公司還需要注意不要被新聞頭條所動搖。網(wǎng)絡(luò)安全供應(yīng)商Cymulate的董事兼網(wǎng)絡(luò)安全架構(gòu)師邁克·德納波利表示:“公司之間有一種趨勢,即根據(jù)當(dāng)前媒體的關(guān)注水平來評估迫在眉睫的威脅,而不是實際的風(fēng)險水平。”Cymulate在今年3月發(fā)布了一份跟蹤網(wǎng)絡(luò)安全有效性狀況的報告,該報告還強調(diào)了公司中存在不安全代碼。根據(jù)這份報告,與前一年相比,平均風(fēng)險得分有所惡化。
安全和風(fēng)險公司HyperProof的IEEE高級成員兼現(xiàn)場CISO Kayne McGladrey表示,確定軟件修復(fù)的優(yōu)先順序的最大問題是,安全控制和業(yè)務(wù)風(fēng)險結(jié)果之間往往存在脫節(jié),他表示,這加大了獲得高管支持的難度,代碼維護和依賴項管理不是什么吸引人的話題。McGladrey告訴記者,相反,高管的興趣往往集中在“停工帶來的財務(wù)或聲譽影響”上。
“為了解決這個問題,公司應(yīng)該記錄并商定與第一方代碼和第三方代碼相關(guān)的業(yè)務(wù)風(fēng)險,然后,他們需要確定他們愿意在聲譽損害、財務(wù)損害或法律審查等領(lǐng)域承擔(dān)多大風(fēng)險。在管理層達成共識后,關(guān)鍵系統(tǒng)的企業(yè)主應(yīng)該努力識別和實施控制措施,以降低這些風(fēng)險。”
一旦一家公司確定了其最優(yōu)先的問題,下一步就是解決這些問題。不幸的是,這并不總是可行的,公司需要尋找其他措施。
當(dāng)唯一的答案是緩解
當(dāng)涉及到舊系統(tǒng)時,可能沒有任何人擁有修復(fù)代碼所需的知識。根據(jù)技術(shù)服務(wù)公司Advanced去年11月發(fā)布的一項調(diào)查,在使用大型機的公司中,42%的公司表示他們最著名的遺留語言是COBOL,另有37%的公司仍在使用匯編語言。
“別管就業(yè)市場了,很難找到像COBOL這樣擁有過時編程語言技能的人。”WithSecure的網(wǎng)絡(luò)安全顧問Paul Brucciani說。
另一個問題是源代碼何時丟失。Brucciani告訴記者:“你會驚訝于運行在古老軟件上的[許多]公司因為丟失了源代碼而無法更新。”
在某些情況下,這些應(yīng)用程序太重要了,不能碰,因為破壞它們的風(fēng)險太高,更換它們會造成太大的中斷。“并不是所有的遺留代碼和應(yīng)用程序在被發(fā)現(xiàn)時都可以刪除。在許多情況下,關(guān)鍵業(yè)務(wù)流程依賴于由遺留系統(tǒng)執(zhí)行的功能和工作流,“Cymulate的DeNapoli說。
軟件漏洞也可能因為時間或資源不足或合規(guī)性考慮而無法修復(fù),但如果被利用仍會構(gòu)成風(fēng)險。在這些情況下,公司應(yīng)該在易受攻擊的系統(tǒng)周圍采取緩解措施,公司將需要使用其他策略,如實施或加強薪酬控制。
零信任架構(gòu)、網(wǎng)絡(luò)分段和對身份驗證的更多關(guān)注有助于降低易受攻擊的應(yīng)用程序被利用的風(fēng)險。Veracode的Eng說:“把所有東西都放在認(rèn)證層后面是一種廣泛的趨勢。不管代碼有多舊,這種情況都會發(fā)生。”
其他緩解策略包括加密、防火墻、安全自動化和動態(tài)數(shù)據(jù)備份。
自動查找舊代碼并創(chuàng)建更安全的代碼
針對易受攻擊的舊代碼問題的最新解決方案涉及人工智能領(lǐng)域的新進展,我們已經(jīng)有了可以編寫新代碼的生成性人工智能工具,但供應(yīng)商也在致力于專門的人工智能,這些人工智能經(jīng)過專門培訓(xùn),專門修復(fù)漏洞。Eng說:“人工智能可以提出修復(fù)建議,然后開發(fā)人員可以對其進行一些調(diào)整。”
問題是,當(dāng)公司使用大型、公開的大型語言模型時,這些模型會接受各種培訓(xùn),包括不好的東西。“正如他們過去常說的,垃圾進了,垃圾出了。不可避免的是,由這些模型生成的代碼也將包含漏洞。因此,代碼的生成速度會更快,但仍會有錯誤。“Eng補充道。
Veracode正在基于自己經(jīng)過審查的代碼構(gòu)建自己的人工智能。“我們生成易受攻擊的代碼和良好的代碼,并針對每一個類別訓(xùn)練模型,”Eng說。“這樣我們就可以肯定地知道,發(fā)布出來的東西不是隨機從某個開發(fā)者的Github庫中提取出來的。”
Veracode Fix于今年4月發(fā)布,據(jù)該公司稱,該產(chǎn)品可以為JAVA代碼中發(fā)現(xiàn)的72%的缺陷生成修復(fù)程序,這可以極大地加快公司的補救工作。
在某個時候,較大的企業(yè)可能會想要構(gòu)建自己的、定制的人工智能工具。“他們想以他們使用的代碼風(fēng)格生成修復(fù)程序。”Eng說。
但這并不意味著企業(yè)應(yīng)該坐等人工智能機構(gòu)來解決所有問題,他說:“有了大多數(shù)公司的大量安全債務(wù),即使你現(xiàn)在只應(yīng)對最嚴(yán)重的事情,你也不會沒有事情可做。”