虛擬補丁技術的概念介紹及其發展演變
譯文【51CTO.com快譯】想了解更多關于虛擬補丁的信息嗎?查看下本文,我們將討論什么是虛擬補丁,它的類型以及它可以為您的應用程序做什么。
美國個人信用評估機構Equifax估計其與2017信息泄漏事件相關的損失將超過6億美元。不僅僅是Equifax遭受了巨大的經濟打擊。事實上,由于過時的軟件,在過去的一年中有數十家其他組織的收入損失超過了1億美元。
根據Gartner的數據,99%的漏洞都不是零日漏洞。相反,它們大多是已知至少一年的漏洞。事實上,大多數IT基礎設施都同時包括了遺留平臺、未打補丁的軟件、過時的第三方組件和糟糕的補丁管理流程。可以說,壞人發現一個未及時修補漏洞的應用程序要比發現一個零日漏洞容易得多。
為什么一直存在著補丁問題?
大多數情況下,對最終用戶的應用程序進行打補丁可能非常簡單。然而,對于企業軟件來說,這就是一個完全不同的故事了。這是因為企業軟件在本質上更加復雜。在大多數情況下,為企業軟件安裝補丁是一個昂貴的手工過程,它由幾個嚴格的步驟組成,而且這些步驟不能總是在正常的工作時間內完成,通常需要關鍵系統的離線。
但是停機對于企業來說通常會造成極大的損失,為了避免停機,已經有了一些策略和技術,比如滾動更新、blue-green部署和canary發布。但這些策略通常非常復雜,極易出錯,而且耗時,需要仔細的規劃以及進行平臺和基礎設施的更改。此外,軟件的新版本還經常附帶不向后兼容的新功能,并且有可能中斷應用程序的正常運行。
打補丁終究是一場必敗的戰斗
根據Sonatype的說法,每天都有超過10000個開源組件的新版本發布,并提供了新的特性、bug修復和安全補丁。然而更令人吃驚的是,據Mitre統計,2017年出現了近15,000個新的漏洞。平均每天有41個新漏洞被揭露,或者每30分鐘就有一個新漏洞被揭露。
在攻擊者利用其固有優勢進行攻擊之前,根本沒有足夠的時間或資源及時地解決這些缺陷。因此,補丁工作向來是IT部門面臨的一個重大挑戰。顯然,與未修復的軟件風險相比,當下的組織更看重截止日期,而不是降低生產力。通常情況下,團隊會接受風險,并選擇在更“方便”的時間進行修補,通常是每季度才會開展一次修復工作甚至等待更長的時間。然而,這種做法為別有用心的人創造了機會。
每當有新補丁被發布來修復漏洞時,惡意行為者就會爭分奪秒地尋找那些沒有對系統進行修補的組織并利用該漏洞。在安全警報公開發布幾小時后就看到惡意活動已經成為一種常見的情況。根據Ponemon最近的研究,攻擊者成功利用漏洞平均需要三到六天的時間,而發現攻擊的時間要超過250天,另外還需要82天才可以控制攻擊。這就提出了一個關鍵的問題:組織如何才能在延遲系統修復時間的同時保護他們的資產?
虛擬修補才是關鍵
虛擬補丁是指在不修改應用程序源代碼、修改二進制代碼或重新啟動應用程序的情況下,能夠即時建立的一個安全策略實施層,用來防止對已知漏洞的攻擊。使用虛擬補丁策略,組織可以在大幅減少補丁所需的成本、時間和工作之間取得很好的平衡,同時保持服務的可用性和正常的補丁周期。
虛擬補丁可用于臨時添加保護,使DevSecOps團隊有時間根據自己的更新計劃部署物理補丁。虛擬修補程序也可以永久用于可能無法修補的遺留系統。
此外,由于沒有在磁盤上更改應用程序文件,因此引入沖突或不兼容的可能性也較小。
另外,軟件供應商通常以捆綁的方式發布其安全修復程序,這些修補程序只能選擇全部安裝或者全部不安裝。當其中一個修復程序導致應用程序出現功能問題時,就必須卸載整個安全包。
但虛擬補丁能夠允許組織挑選對其環境重要的補丁,并允許它們回滾與應用程序功能不兼容的特定補丁。
虛擬補丁的類型
虛擬補丁最初是幾年前由IPS/IDS社區首創的。后來,虛擬補丁被引入WAF領域,最近,RASP產品也提供了類似的功能。
不過,有必要說明的是,并非所有的虛擬補丁解決方案都是一樣的。一般來說,我們可以根據能夠交付的補丁質量對虛擬補丁進行分類。
第一種類型的虛擬補丁完全基于對網絡流量的分析。提供這種類型的虛擬補丁的系統使用簽名、正則表達式和模式匹配來識別惡意活動并阻止相應的請求。
第二種類型的虛擬修補基于相同的原理;但是,它提供了一種更健壯的方式來指定阻止請求的標準,可以使用規則語言和狀態管理等功能。ModSecurity就是這種虛擬補丁解決方案的一個例子。
這些類型的虛擬修補有幾個缺點。由于它們缺乏上下文感知的能力,這些虛擬補丁技術會產生大量的誤報和漏報。因為簽名和模式匹配是啟發式的方法,不能提供高效所需的準確性。所以,這類寫得不好的虛擬補丁可能會阻塞合法的流量,干擾應用程序的正常執行,給必須過濾掉錯誤警報的安全團隊增加額外的工作量。因此使用這種類型的虛擬補丁,并不能帶來安全上的質的提升。好的補丁修復程序不應該依賴于工程師的技能和他們編寫虛擬補丁簽名的能力。
此外,這種類型的補丁需要經常修改。對于Web應用程序來說,只要易受攻擊的URL或HTTP參數進行了更改,虛擬修補程序就會失效并需要進行重新配置。
更重要的是,這些方法事實上只是保護了特定的輸入,沒有保護易受攻擊的組件。如果有多個入口點導致了相同的受攻擊組件,虛擬補丁則無能為力。
所以說上述方法提供了“修補”功能是言過其實的,因為即使在應用了虛擬修補程序之后,代碼仍然容易受到攻擊。這就是為什么有些人將這些方法稱為“漏洞屏蔽”,而不是修復的原因了。
第三種類型是虛擬補丁的自然演變,它利用了當代運行時平臺(如Java虛擬機和公共語言運行時)的即時編譯器。在應用程序內部,只要能夠在執行每條指令之前控制它,就可以實現真正的虛擬補丁。現在,在不修改應用程序的源代碼或二進制文件的情況下,交付一個在功能上與供應商的物理補丁相同的虛擬補丁是可行的,同時又能確保組件得到適當的修補,不再容易受到攻擊。
運行時編譯管道中的虛擬補丁是社區從一開始就渴望實現的虛擬補丁類型。WAF/IDS工程師們雖然預見到了虛擬修補的吸引力,但是由于缺乏對運行時平臺的控制以及將這種解決方案置于應用程序之外的架構限制,迫使虛擬修補或多或少成為了一種復雜的輸入/輸出驗證解決方案。
但這并不意味著這些類型的虛擬補丁沒有用處。相反,在某些情況下,應用輸入驗證型虛擬補丁是有意義的。比如,考慮到那些遺留系統和生命周期結束系統的情況,或者供應商沒有發布安全修復程序的情況。最近,Sonatype發現,84%的開源項目沒有修復已知的安全缺陷。對于這種情況,基于輸入驗證類型的虛擬補丁的補償控制可能是保護這種系統的唯一方法。
虛擬補丁已經發展到了這樣的一個程度,它可以是一個自動化的過程,幾乎不需要人工干預,并且與物理補丁一樣有效,甚至更健壯。隨著法規遵從性方案要求更嚴格的補丁程序管理流程,安全團隊在漏洞和補丁程序管理程序中采用虛擬補丁策略的時機已經到來了。
虛擬修補有多種類型,每種類型都有自己的優勢。當團隊評估他們的補丁需求時,他們必須確保自己心中有一個明確的目標,那就是他們為什么要打補丁,以及他們想要實現怎樣的目標。對未修復的底層軟件缺陷的已知簽名的屏蔽是否已經足夠?還是說需要的是一個在功能上等同于物理補丁并能夠修復所需軟件缺陷的虛擬補丁?
原文地址:Overview and Evolution of Virtual Patching,作者:Apostolos Giannakidis
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】