close

patch之前我討論過許多次關於更新的重要性並介紹了相關的工具,然而對於許多資訊背景的人員來說,上補丁 (Patching) 一詞或許比更新更令人覺得親切。不管是叫做更新或是上補丁,指的都是利用置換程式執行檔 (或其他相關檔案) 的方式來修正應用程式 (包含作業系統等各種程式) 的問題,這類問題包含安全性的問題、功能的提升、或是一般操作性的錯誤。

雖然 Patching 是解決應用程式問題時最有效也是最重要的方法,但是 Patching 在實際的應用上卻也存在著不少的困擾:

  • 如果存在問題的應用程式是商業軟體,使用者通常只能等待原廠提供更新檔案。在此之前,使用者無法對應用程式本身做任何的處理。對於安全性的問題而言,這段更新前的空窗期將會讓應用程式處於一個毫無防備能力的困境。這類問題就是所謂的 Zero-day Attacks。
  • 早期的攻擊手法多以網路與作業系統作為目標,而這類產品的供應商大多屬於大型的組織,所以提供更新的速度與品質具有一定的質量。但是現在攻擊手法多以應用程式為主要攻擊目標,所有相關的供應商服務能量不一,再加上技術能力的良莠不齊,導致等待時間的空窗期變得更長,使用者甚至無法取得正式的更新檔案。
  • 就算是使用 Open Source 的應用程式,一旦發生問題後雖然使用者可以自行對於應用程式本身進行修改,但是對大多數的使用者而言並不具備這樣的技術能力與資源 (人力/時間)。再加上原開發團隊屬於志願性質,因此對於提供更新的保證顯得更加的薄弱。
  • 組織在進行實際更新作業前,往往必須經過審慎的測試過程。對於越重要的系統,測試過程的時間也就越長,也就是說越重要的系統處於未更新的時間越長。然而這類系統一旦發生問題,所產生的危害卻也更大。在兩者影響相互放大的情況下,讓問題的嚴重性急速惡化。

因為 Patching 存在這些問題,所以有了 Virtual Patching 這個概念。Virtual Patching 一詞在 2003 年就引進於 ISS 的產品 (Internet Scanner) 之中。簡單來說就是當 Internet Scanner 發現系統存在安全性的問題時,就利用 IDS 的規則來偵測攻擊行為的發生。也就是說 Virtual Patching 並不是針對有問題的應用程式本身進行修正,而是採用外掛 (IDS) 的方式讓外界無法有效地利用應用程式的缺陷加以攻擊。早期 IDS 僅能提供偵測的能力,但是目前的產品已經透過整合 IDS/IDP 與各式各樣的防火牆 (傳統的 Firewall、Web Application Firewall、Database Firewall) 來達到即時阻擋的能力。

雖然 Virtual Patching 可說是一種治標不治本的防禦方式,但是透過全自動化 (至少在理論上) 的作業方式,可以大幅縮短應用程式毫無防備能力的空窗期。在 Web 應用程式大行其道的今日,Web 應用程式所帶來的安全議題不但急速惡化,而且開發團隊 (不管是供應商或是內部人員) 的技術能力與資源與實際的需求也呈現更大的差距,所以 Patching 的困境也愈形嚴重,因此 Virtual Patching 的概念受到許多安全廠商的重視。這些廠商利用 Web Application Scanner 與 Web Application Firewall 的整合,達到發現安全問題與防堵的全自動化,可以有效減少 Web 應用系統無防備能力的空窗期。雖說這樣的機制在使用上確實很方便,但是依舊有一些必須特別注意的地方:

  • 應用系統的安全問題往往不只侷限於實作的層面,需求與設計階段所產生的安全問題影響通常更大。Virtual Patching 必須先利用掃描的方式發現問題後才能防堵問題,而自動化的掃描適用於找出實作方面的問題,對於需求與設計方面的問題幾乎沒有任何偵測能力,所以這類機制註定無法全面解決 Web Application 的安全問題。
  • 這類機制透過 Web Application Firewall 達到防堵的目的,而 Web Application Firewall 多採用 Blacklisting 的方式。Blacklisting 在大多數的情況下所帶來的安全性遠不及 Whitelisting 的方式。
  • 此方法採用的治標不知本的方法,長久來說對於整體系統的安全提昇助益有限,甚至往往是有害的。就像生病吃特效藥一樣,有用的特效藥反而讓人忽略了平常維持身體健康的重要性。所以一旦特效藥失效,或是感染的疾病沒有特效藥可以醫治,病情的惡化程度反而更為加劇。也就是說如果因為過度依賴這樣的機制而使得開發團隊失去提昇 Web Application 安全的能力,長久來說對於整體 Web Application 的安全環境反而是有害的。

寫到這裡,您一定猜到我要說什麼。那就是跟所有的安全議題一樣,Web Application 的安全性絕不是光靠一種機制就可以完全解決,不管這個機制是治標還是治本。唯有必須透過多層次 (Layered) 的防禦機制,才能夠提供較為完整的安全性。而所謂的防禦機制,絕對不僅限於事後的防範,更應該從 Web Application 的發源時期就開始考量與實施,而這就是 SSDLC (Secure Software Development Life Cycle) 的範疇了。


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 cyrilwang 的頭像
    cyrilwang

    就是資安

    cyrilwang 發表在 痞客邦 留言(0) 人氣()