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