內核修補程式保護(英語:Kernel Patch Protection) ,俗名PatchGuard,是Microsoft Windows 64位元(x64)版本中預防對內核進行修補的一種特性。該特性2005年在Windows XPWindows Server 2003 Service Pack 1的64位元版本中首次推出。[1]

內核是應用程式與電腦硬件互動的橋樑。

「修補內核」是指對Windows作業系統的核心組件或內核進行本不支援的修改。這種修改沒有得到微軟的支援,並據微軟稱可能大幅降低系統的安全性、可靠性以及效能。儘管微軟並不推薦,但在Windows的x86版本上修補內核沒有受到限制;而在Windows的x64版本中,微軟選擇為此行為實施額外的保護和技術障礙。

因為32位元(x86)版本的Windows可以隨意修補內核,所以有眾多反病毒軟件開發人員使用此技術來實現反病毒等安全功能。在不再支援此技術的x64版本Windows上,防病毒廠商不得不重新設計其軟件以另尋他法。

不過,由於Windows內核的設計,內核修補程式保護並不能完全阻攔內核修補。因而這引發了對內核修補程式保護的批評,指責它是一種不完美的防護措施,對反病毒廠商造成的障礙超過了其帶來的好處,因為惡意軟件的作者可能找到方案來繞過該措施。儘管如此,內核修補程式保護仍可防止由合法軟件以不受支援方式進行的內核修補,這可能對系統的穩定性、可靠性和效能帶來負面結果。

技術概述

Windows內核在設計上使裝置驅動程式有與作業系統內核相同的特權級別。[2]預期的裝置驅動程式不會修改或修補內核中的核心系統結構。但在Windows的x86版本中,Windows沒有強制要求此預期。因而,部分x86軟件(尤其是某些安全和反病毒軟件)在設計上採用載入驅動程式來修改核心主記憶體結構的工作方式。[3]

在Windows的x64版本中,微軟開始以內核驅動保護技術限制驅動程式可以修改與不能修改的結構。該技術定期檢查內核中受保護的系統結構以驗證其未被修改。如果檢測到修改,Windows將觸發一個缺陷檢查英語bug check並以藍畫面死機關閉系統(並可能重新啟動)[4]。所觸發的錯誤檢查編碼為0x109,名稱CRITICAL_STRUCTURE_CORRUPTION。被禁止的修改包括:

內核修補程式保護只防禦裝置驅動程式對內核進行的修改,而不會干涉對另一個驅動程式的修補。[6]

此外,由於裝置驅動程式有與內核本身相同的特權級別,因此不可能充分防止驅動程式繞過內核修補程式保護並修補內核。[7]不過,內核修補程式保護的確對內核修補構成了重大阻礙。隨着高度混淆的代碼和令人含混的符號名稱,內核修補程式保護默默地以此抵禦了繞過該技術的企圖。[8]對該技術本身的定期更新也使對其繞過更加困難,已有繞過技術可能隨着更新而失效。自2005年建立以來,微軟已經發佈過對該技術的兩個主要更新,每個更新都是為解決已知的針對此前版本的旁路技術。[9][10]

優點

因為可能導致許多負面影響,內核修補從未得到微軟官方的支援。內核修補程式保護可以預防下列影響:

  • 內核中的嚴重錯誤。[11]
  • 多個程式嘗試修補內核的相同部分導致的可靠性問題。[12]
  • 受損的系統安全性。
  • Rootkit可使用內核訪問將其嵌入到作業系統,使其近乎不可能被刪除。

微軟在此技術的常見問題解答(FAQ)中進一步闡述:

由於修補程式使用未知、未經測試的代碼替換內核代碼,無法評估第三方代碼的質素或影響。微軟對線上崩潰分析(OCA)數據的檢查表明,系統崩潰經常由於惡意和非惡意的軟件修補內核所造成。

——Kernel Patch Protection: Frequently Asked Questions. 22 January 2007 [22 February 2007]. (原始內容存檔於2007年3月4日).

缺點

第三方軟件

部分電腦保安軟件(如邁克菲McAfee VirusScan英語McAfee VirusScan賽門鐵克諾頓防毒)在x86系統上通過修補內核來工作。[來源請求]卡巴斯基實驗室製作的反病毒軟件也已知廣泛使用內核代碼修補程式。[13]這些程式由於內核修補程式保護的存在而無法在Windows 64位元版本上正常執行。[14]就此情況,McAfee曾呼籲微軟完全刪除Windows中的內核修補程式保護,或者對「可信公司」製作的軟件進行例外處理。[15]

賽門鐵克的企業防病毒軟件[16]和Norton 2010左右[17]在有內核修補程式保護的Windows x64版本上能正常工作,但對零日惡意軟件的防護能力有所降低。ESET[18]Trend Micro[19]Grisoft英語Grisoft AVG[20]avast!Avira Anti-Vir和Sophos英語Sophos等公司製作的反病毒軟件在預設組態下不修補內核,但當啟用如「進階行程保護」、「阻止未經授權的行程終止」等功能時可能會修補內核。[21]

Thumb
微軟聯合總裁Jim Allchin英語Jim Allchin是內核修補程式保護的堅定支持者。[來源請求]

微軟不曾添加例外來削弱「內核修補程式保護」的影響範圍,不過有不時放寬其限制,例如為了Hypervisor虛擬化軟件的正常執行。[6][22]另外,微軟與第三方公司合作,新增了應用程式介面來幫助保安軟件執行所需任務,以免除修補內核的需要。[12]新介面在Windows Vista Service Pack 1中被引入。[23]

弱點

由於Windows內核的設計,內核修補程式保護並不能完全阻止對內核的修補程式。[7]這導致保安軟件提供商邁克菲賽門鐵克稱內核修補程式保護是一個不完美的防禦,給保安軟件廠商帶來的問題超過了其益處,因為惡意軟件可以比較容易的找出內核修補程式保護的繞過方法,而第三方保安軟件必須在其限制下設計和運作。[15][24]

2006年1月,化名「skape」和「Skywing」的安全研究員發佈的一份報告介紹了一些理論上可以繞過內核修補程式保護的方法。[25]Skywing於2007年1月繼續發佈了有關繞過「內核修補程式保護」第2版的第二份報告[26],並於2007年9月發佈有關「內核修補程式保護」第3版的第三份報告。[27]2006年10月,安全公司Authentium英語Authentium也開發了一種可繞過該技術的有效方法。[28]

雖說如此,微軟表示作為安全響應中心標準流程的一部分,在致力於消除任何使內核修補程式保護被繞過的缺陷。[29]微軟已發佈過對該技術的兩次主要更新,每次都是為解決已知的針對此前版本的繞過技術。[2][9][10]

反壟斷行為

2006年,歐盟委員會對內核修補程式保護表示擔憂,稱它是反競爭舉措。[30]不過,微軟自己的反病毒產品Windows Live OneCare沒有在內核修補程式保護上有特別例外,而是始終在使用其他方法提供病毒防護服務。[31]但由於其他原因,Windows Live OneCare的x64版本在2007年11月15日之前不可用。[32]

參考資料

外部連結

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.