工業技術研究院 資訊與通訊研究所 黃士銘、黃莉婷、凌育偉
白名單防護系統通常會被佈署在具有特定功能或系統變動較少的系統內,
如何建立與維護白名單列表管理機制是防護策略成功的關鍵。
工研院應用程式白名單防護與防毒軟體 都是阻擋惡意程式被執行的安全檢查軟體,使用工研院應用程式白名單的好處在於不需頻繁更新應用程式列表即可享有完備的防護能力,白名單以正向表列的方式著重於可執行的應用程式,讓惡意程式的演變無法影響白名單的防護能力,建立妥善的白名單列表管理機制將促使白名單防護策略成為未來必備的防護項目之一。
軟體與管理的安全問題白名單技術介紹
近年來,惡意程式入侵手法除了利用系統與軟體本身的弱點進行攻擊,更大量的使用各種難以防範的社交攻擊手法進行攻擊。於技術上,軟體開發者從選擇程式語言、系統架構設計到軟體實作,每一個環節都可能產生讓攻擊者可以入侵的漏洞,駭客可攻擊語言本身的弱點、入侵系統架構中軟硬體已知的問題、甚至連作業系統本身都可能存在資安風險,技術上可以說是無止盡的攻防,造成現今軟體系統在開發完成後必需滾動式持續更新強化其安全性。然而當資安人員正忙於修正與防堵技術上的安全缺陷時,社交攻擊已接踵而來,釣魚郵件、惡意的USB裝置、社交詐騙等,這些脫離技術攻擊手段的安全管理問題更是讓資安人員防不勝防。
利用白名單進行防護
在技術與管理上雙重資安威脅的考驗下,我們先深入了解一個惡意程式利用各種手段入侵軟體系統的路徑,並在此路徑上建立白名單防護。一個惡意程式可以透過軟體的弱點入侵系統,亦或透過技術與非技術手段讓使用者在無意間下載惡意程式至系統內,最終惡意程式被執行並進行目的性的破壞,例如ransomware勒索軟體將重要資料進行加密,癱瘓營運系統的運作,再提出高額贖金要求。為了阻擋惡意程式進入系統進行破壞,圖1中我們列出5個防禦的時間點。
(1)確保開發出來的軟體沒有任何弱點可被利用攻擊。
(2)確保系統內不會有 shell code被執行。任何軟體在開發前中後期都應該進行安全評估與檢查,然而至目前為止,所有的軟體專案都無法百分之百的確認可以清除軟體系統內所有可能被利用的弱點,因此在這兩個時間點進行資安防護付出的成本很大但效果不好。
(3)確保惡意程式無法被載入系統。然而我們知道技術與社交攻擊手法防不勝防,從管理的觀點上亦很難完全避免人為的疏失至使惡意程式利用各種可能的途徑進入系統。
(4)惡意程式無法被執行。防毒軟體和白名單防護都是於這個時間點進行安全防護,主要的概念在於即使惡意程式進入系統,只要它無法被正常執行,系統不會遭受任何危害。
(5)偵測系統內有損害發生。
圖1惡意程式入侵途徑
由以上圖1我們可以知道,白名單防護與防毒軟體都是在最後關頭阻攔準備執行的惡意程式,兩個方式的差異點在於,白名單是以「正向表列」的方式檢查任何即將被執行的應用程式,正向表列的方式是只允許事先建立於列表上的應用程式,任何新進入系統或遭受修改的應用程式都將因為其不被列在白名單列表上而被阻擋,此方式與防毒軟體以「反向表列」的方式相反,優點在於當惡意程式不斷演化時,正向列表不需隨之更新,也不會有零時差(Zero-day)攻擊的問題[2]。
工研院應用程式白名單列表的建立與維護
工研院的白名單防護系統利用Windows所提供的Minifilter driver為技術基礎,建立每個應用程式被執行前的檢查點,搭配以應用程式檔案雜湊值為驗證基準,任何應用程式被執行前如果其內容有遭竄改或任何變動,其雜湊值就無法通過驗證而被拒絕執行。因此本技術之重點在於提供快速建立與維護系統內所有應用程式檔案的雜湊值白名單,並以此白名單為依據使用Minifilter driver進行所有執行程式的檢查。
圖2 工研院應用程式白名單檢查模組
使用工研院應用程式白名單防護策略需事先於系統內建立應用程式白名單列表,建立可允許執行的應用程式清單的概念雖然可以有效阻擋任何惡意程式的執行,然而白名單的建立該如何進行與維護的問題,是白名單防護策略一直無法普及應用的痛點所在[1]。
建立應用程式白名單列表
工研院白名單防護系統在開始運行之前,需先建立白名單列表,一般常見的白名單規則如下:
- 以簽章來當作白名單應用程式的識別
以簽章來識別應用程式是否允許被執行是一個有效的辨識方式,白名單記錄量少系統實作效率也高,唯獨是無法對應用程式作較細微的分類。 - 以特定目錄或特定檔名作為白名單應用程式的識別
簡單而有效的應用程式識別手段,然後此方式仍然存在安全問題,任何駭客只要將惡意程式置入或得知特殊命名方式後即可破解。 - 以檔案的雜湊碼(hash value)作為應用程式的識別
工研院採用的是以檔案雜湊碼是白名單列表最完整的檢查方式,唯需要花費大量時間完整計算系統內所有應用程式檔案的雜湊碼,並且在任何應用程式執行之前都必需重新計算該應用程式所有使用到的執行檔(exe, dll, bat, …)的雜湊碼,以驗證其是否列於白名單列表內,此方法雖然完整但應用程式執行前的雜湊運算會造成執行延遲,有可能會觸使特殊情境應用下的程式無法在時效內正常被執行。因此,工研院提供特殊的方式進行白名單列表的防護系統,並實作快取(cache)機制以讓整體白名單防護機制符合實務應用。
維護應用程式白名單列表
我們持續探討以檔案雜湊碼進行白名單列表時,白名單列表的建立與維護過程。工研院應用程式白名單系統分為以下三個時期:
- 系統建立初期:在系統建立初期,需進行至少一次的「系統掃描」,將系統內所有可執行檔全數列出並計算其雜湊碼以建立初始化的白名單列表。
- 軟體持續更新時期:近代的軟體開發大都以敏捷(Agile)的方式進行,持續滾動式的修正軟體的過程中,白名單防護系統也必需隨之更新其列表,工研院應用程式白名單系統提供以下幾種方式進行白名單更新:
a.目錄掃描:進行「特定目錄掃描」在於當系統管理員清楚知道更新後的軟體置放目錄時,可以只針對該目錄進行新掃描以更新白名單列表。
b.更新模式:當白名單防護系統進入更新模式時,所有新加入至系統之執行檔皆自動納入白名單列表,此方式常用於當軟體更新的影響範圍是系統管理人員無法掌控時。
c.指定更新程式:更新模式存在一個安全上的隱憂,在進入更新模式並進行軟體更新時,若有任何惡意程式在此時進入系統內,也會被加入白名單列表內,因此另一種比較精準的作法是讓系統管理人員指定一個軟體更新程式,白名單防護系統必需提供追蹤此更新程式所產生的所有可執行檔之能力,才能防止在同一時間內進入系統內的惡意程式被加入白名單列表。 - 作業系統更新:現代的作業系統與應用程式一樣也是會定期釋出更新以修正錯誤與安全問題。作業系統更新對任何一個在線上執行的系統來說都是一重大事件,系統人員通常會規劃在非營運時期進行,並且由於作業系統更新會大量修改系統內的可執行檔,所以在一個佈署有白名單防護的系統內進行系統更新必需在系統更新完成後,重新進行全系統掃描。
基於以上白名單列表維護的問題,我們可以了解到一個白名單防護系統通常會被佈署在具有特定功能或系統變動較少的系統內。在一般開發人員或是行政人員所使用變動性較大(經常安裝或移除不同應用程式)的環境,通常較不適合使用白名單防護策略,除非使用的人員具備良好的資安觀念,而白名單防護可作為其管理自身系統環境的工具。
白名單概念之延伸與情境應用
應用程式白名單概念延伸
應用程式白名單的概念不僅可以幫助阻擋惡意程式的執行,在一般管理比較嚴謹的環境當中,管理人員也可以利用此概念來杜絕用戶在其環境當中執行一些與工作任務不相關的應用程式,在最少權限的前提之下僅開放工作相關之應用程式。圖3中為工研院應用程式白名單將最少權限概念延伸至USB裝置與網路的管理。
近幾年因為USB引起很多資安事件,在大多數工業生產的環境與資安管理嚴謹的單位都相繼規定停用USB裝置。然而在網路封閉的環境中,透過USB裝置進行資料交換還是最方便快速的方式。為避免員工在不得使用USB設備之情況下使用其他具資安風險的資料交換方式,我們將白名單管理概念延伸至USB設備,只有被認證且授權的USB設備才可於特定的端點上使用,並嚴格控管可使用的時間,同時在應用程式白名單防護之下,若USB設備上存在惡意程式也無法被執行,進而達到資料交換的方便性與安全防護控管。
相同概念下,白名單管理方式可延伸至端點網路的管理,透過佈署於端點上之防護程式,管理人員可於管理介面上設定每個端點最少網路存取權限,實現微網段(Micro-Segmentation)的安全管理方式,強化組織內部每個端點之間的安全存取。
圖3 USB設備白名單與端點網路白名單
工研院應用程式白名單防護之情境應用
基礎建設與國防設施
國防與基礎建設內運行的系統都是直接影響著民生安全的重要設施,其系統安全性更需要被慎重維護與檢視,白名單防護策略非常適合這類功能固定而且嚴格禁止任何非日常營運所需之外的應用程式。如下圖4中所示,對於日常營運系統內所有相關的電腦,包括提供服務之伺服器與使用這些服務的作業電腦,皆需全面佈署白名單防護程式,確保系統任一電腦節點有任何異常程式被執行時,系統安全管理人員都可以在第一時間介入進行安全檢視與調查,避免資安危害潛伏於系統內進行更嚴重的破壞。
圖4白名單防護程式佈署與管理
半導體設備場域應用
半導體產線上的電腦系統也是屬於功能固定的應用系統,即使每天有新的參數與執行程式的變動,系統的變動也都相對單純簡單,日常作業重建白名單對於半導體產線的應用,甚至透過與Thin Client在介面上可整合出完全不打擾或影響產線操作人員日常操作的白名單防護系統。
車載系統防護
車載應用情境內具有移動的車載系統與停靠站點,車載系統與每個停靠站點透過網路或其他介接方式會進行資料交換,車載系統本身也有4G無線網路連線隨時與雲端進行連線。在這樣的場景中,如果某個停靠站感染了惡意程式,惡意程式可能會隨著車載系統與之進行資料交換之際,藉由感染車載系統後再延伸感染到其他停靠站與雲端系統,因此在固定作業功能的車載系統上佈署白名單端點防護可直接有效的避免以上危害的可能。
一般員工安全作業環境
無論是開發者或是一般行政人員所使用的電腦環境是相對功能比較複雜而且功能變化性也比較大,應用程式複雜而且經常會發生軟體更新,軟體更新對系統進行了哪些改變通常使用者也無法掌握,白名單端點防護佈署在這樣的環境內容易降低用戶的使用體驗甚至影響其日常作業。然而員工在遞交工作成果的時候常常需要連線到重要伺服器或是主機上,在資安政策管理嚴謹的系統內並不允許未授控制的使用者電腦直接與重要主機連線。因此我們可於重要電腦系統與一般用戶之前,透過將白名單端點防護佈署在一虛擬機或另一台電腦內,建立一個乾淨安全的作業環境,讓使用者透過此作業環境來完成其成果的轉送,即不影響使用者日常的作業,亦可保護重要主機不直接與未受白名單保護的電腦進行連線。
結論
面對變化迅速的外在資安威脅,白名單防護策略是非常有效的防禦方式,對於固定應用的系統環境,應用程式幾乎不會有更新的狀況下,白名單防護策略更可以簡化管理,無需持續追蹤更新規則或病毒碼。工研院應用程式白名單創造一個快速方便的流程來建立與維護白名單列表,並且工研院應用程式白名單系統已經成功佈署在基礎建設與國防設施、半導體設備場域、行動車載系統與一般員工安全的作業環境,提供絕佳的安全防護。
參考文獻
[1] Himanshu Pareek, Sandeep Romana and P R L Eswari, APPLICATION WHITELISTING: APPROACHES AND CHALLENGES, International Journal of Computer Science, Engineering and Information Technology (IJCSEIT), Vol.2, No.5, October 2012
[2] S. Dery, “Using Whitelisting to Combat Malware Attacks at Fannie Mae,” in IEEE Security & Privacy, vol. 11, no. 4, pp. 90-92, July-Aug. 2013, doi: 10.1109/MSP.2013.102.
[3] Mämmelä, O., Hiltunen, J., Suomalainen, J., Ahola, K., Mannersalo, P., & Vehkaperä, J. (2016). Towards Micro-Segmentation in 5G Network Security. Paper presented at European Conference on Networks and Communications, Athens, Greece.