內核修補程式保護
此條目翻譯自其他語言維基百科,需要相關領域的編者協助校對翻譯。 |
內核修補程式保護(英語:Kernel Patch Protection) ,俗名PatchGuard,是Microsoft Windows 64位元(x64)版本中預防對內核進行修補的一種特性。該特性2005年在Windows XP與Windows 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將觸發一個缺陷檢查並以藍畫面死機關閉系統(並可能重新啟動)[4]。所觸發的錯誤檢查編碼為0x109,名稱CRITICAL_STRUCTURE_CORRUPTION。被禁止的修改包括:
- 對系統服務描述表進行修改或鈎子(Hook)
- 修改系統呼叫表
- 修改中斷描述表
- 修改全域描述表
- 使用未由內核分配的內核堆疊
- 修改或修補內核本身、硬件抽象層(HAL)或網絡驅動程式介面規範(NDIS)內核庫中包含的代碼[5]
內核修補程式保護只防禦裝置驅動程式對內核進行的修改,而不會干涉對另一個驅動程式的修補。[6]
此外,由於裝置驅動程式有與內核本身相同的特權級別,因此不可能充分防止驅動程式繞過內核修補程式保護並修補內核。[7]不過,內核修補程式保護的確對內核修補構成了重大阻礙。隨着高度混淆的代碼和令人含混的符號名稱,內核修補程式保護默默地以此抵禦了繞過該技術的企圖。[8]對該技術本身的定期更新也使對其繞過更加困難,已有繞過技術可能隨着更新而失效。自2005年建立以來,微軟已經發佈過對該技術的兩個主要更新,每個更新都是為解決已知的針對此前版本的旁路技術。[9][10]
優點
[編輯]因為可能導致許多負面影響,內核修補從未得到微軟官方的支援。內核修補程式保護可以預防下列影響:
微軟在此技術的常見問題解答(FAQ)中進一步闡述:
由於修補程式使用未知、未經測試的代碼替換內核代碼,無法評估第三方代碼的質素或影響。微軟對線上崩潰分析(OCA)數據的檢查表明,系統崩潰經常由於惡意和非惡意的軟件修補內核所造成。
——Kernel Patch Protection: Frequently Asked Questions. 22 January 2007 [22 February 2007]. (原始內容存檔於2007年3月4日).
缺點
[編輯]第三方軟件
[編輯]部分電腦保安軟件(如邁克菲的McAfee VirusScan和賽門鐵克的諾頓防毒)在x86系統上通過修補內核來工作。[來源請求]卡巴斯基實驗室製作的反病毒軟件也已知廣泛使用內核代碼修補程式。[13]這些程式由於內核修補程式保護的存在而無法在Windows 64位元版本上正常執行。[14]就此情況,McAfee曾呼籲微軟完全刪除Windows中的內核修補程式保護,或者對「可信公司」製作的軟件進行例外處理。[15]
賽門鐵克的企業防病毒軟件[16]和Norton 2010左右[17]在有內核修補程式保護的Windows x64版本上能正常工作,但對零日惡意軟件的防護能力有所降低。ESET[18]、Trend Micro[19]、Grisoft AVG[20]、avast!、Avira Anti-Vir和Sophos等公司製作的反病毒軟件在預設組態下不修補內核,但當啟用如「進階行程保護」、「阻止未經授權的行程終止」等功能時可能會修補內核。[21]
微軟不曾添加例外來削弱「內核修補程式保護」的影響範圍,不過有不時放寬其限制,例如為了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也開發了一種可繞過該技術的有效方法。[28]
雖說如此,微軟表示作為安全響應中心標準流程的一部分,在致力於消除任何使內核修補程式保護被繞過的缺陷。[29]微軟已發佈過對該技術的兩次主要更新,每次都是為解決已知的針對此前版本的繞過技術。[2][9][10]
反壟斷行為
[編輯]2006年,歐盟委員會對內核修補程式保護表示擔憂,稱它是反競爭舉措。[30]不過,微軟自己的反病毒產品Windows Live OneCare沒有在內核修補程式保護上有特別例外,而是始終在使用其他方法提供病毒防護服務。[31]但由於其他原因,Windows Live OneCare的x64版本在2007年11月15日之前不可用。[32]
參考資料
[編輯]- ^ Kernel Patch Protection: Frequently Asked Questions. Microsoft. 22 January 2007 [30 July 2007]. (原始內容存檔於2007-03-04).
- ^ 2.0 2.1 Skywing. Introduction. PatchGuard Reloaded: A Brief Analysis of PatchGuard Version 3. Uninformed. September 2007 [20 September 2007]. (原始內容存檔於2016-03-03).
- ^ Schofield, Jack. Antivirus vendors raise threats over Vista in Europe. The Guardian. 28 September 2006 [20 September 2007]. (原始內容存檔於2019-05-12). "This has never been supported and has never been endorsed by us. It introduces insecurity, instability, and performance issues, and every time we change something in the kernel, their product breaks." —Ben Fathi, corporate vice president of Microsoft's security technology unit
- ^ Patching Policy for x64-Based Systems. Microsoft. 22 January 2007 [20 September 2007]. (原始內容存檔於2010-12-16).
- ^ skape. System Images. Bypassing PatchGuard on Windows x64. Uninformed. December 2005 [21 September 2007]. (原始內容存檔於2016-08-17).
- ^ 6.0 6.1 Skywing. Conclusion. Subverting PatchGuard Version 2. Uninformed. January 2007 [21 September 2007]. (原始內容存檔於2016-03-04).
- ^ 7.0 7.1 skape; Skywing. Introduction. Bypassing PatchGuard on Windows x64. Uninformed. December 2005 [20 September 2007]. (原始內容存檔於2016-08-17).
- ^ Skywing. Misleading Symbol Names. Subverting PatchGuard Version 2. Uninformed. December 2006 [20 September 2007]. (原始內容存檔於2016-03-03).
- ^ 9.0 9.1 Microsoft. Update to Improve Kernel Patch Protection. Microsoft Security Advisory (914784). Microsoft. June 2006 [21 September 2007]. (原始內容存檔於2011-06-06).
- ^ 10.0 10.1 Microsoft. Update to Improve Kernel Patch Protection. Microsoft Security Advisory (932596). Microsoft. August 2007 [21 September 2007]. (原始內容存檔於2011-08-06).
- ^ Field, Scott. An Introduction to Kernel Patch Protection. Windows Vista Security blog. Microsoft. 11 August 2006 [30 November 2006]. (原始內容存檔於2010-01-24).
- ^ 12.0 12.1 Allchin, Jim. Microsoft executive clarifies recent market confusion about Windows Vista Security. Microsoft. 20 October 2006 [30 November 2006]. (原始內容存檔於2007-02-05).
- ^ Skywing. Patching non-exported, non-system-service kernel functions. What Were They Thinking? Anti-Virus Software Gone Wrong. Uninformed. June 2006 [21 September 2007]. (原始內容存檔於2016-03-04).
- ^ Montalbano, Elizabeth. McAfee Cries Foul over Vista Security Features. PC World. 6 October 2006 [30 November 2006]. (原始內容存檔於2007年4月5日).
- ^ Symantec AntiVirus Corporate Edition: System Requirements. Symantec. 2006 [30 November 2006]. (原始內容存檔於2007年5月15日).
- ^ Symantec Internet Security product page. Symantec. 2011 [26 January 2011]. (原始內容存檔於2020-12-17).
- ^ High-performance threat protection for the next-generation of 64-bit computers. ESET. 2008-11-20 [2018-05-04]. (原始內容存檔於2008-11-20).
- ^ Minimum System Requirements. Trend Micro USA. [5 October 2007]. (原始內容存檔於2012-02-08).
- ^ AVG Anti-Virus and Internet Security - Supported Platforms. Grisoft. [5 October 2007]. (原始內容存檔於2007-08-27).
- ^ Jaques, Robert. Symantec and McAfee 'should have prepared better' for Vista. vnunet.com. 23 October 2006 [30 November 2006]. (原始內容存檔於2007-09-27).
- ^ McMillan, Robert. Researcher: PatchGuard hotfix stitches up benefit to Microsoft. InfoWorld. 19 January 2007 [21 September 2007]. (原始內容存檔於2007-01-24).
- ^ Notable Changes in Windows Vista Service Pack 1. 微軟. 2008 [20 March 2008]. (原始內容存檔於2008-05-03).
- ^ Gewirtz, David. The great Windows Vista antivirus war. OutlookPower. 2006 [8 July 2013]. (原始內容存檔於2013年2月1日). "The system's already vulnerable. People have already hacked into PatchGuard. System is already vulnerable no matter what. PatchGuard has a chilling effect on innovation. The bad guys are always going to innovate. Microsoft should not tie the hands of the security industry so they can't innovate. We're concerned about out-innovating the bad guys out there." —Cris Paden, Manager on the Corporate Communication Team at Symantec
- ^ skape; Skywing. Bypassing PatchGuard on Windows x64. Uninformed. 1 December 2005 [2 June 2008]. (原始內容存檔於2017-08-01).
- ^ Skywing. Subverting PatchGuard Version 2. Uninformed. December 2006 [2 June 2008]. (原始內容存檔於2016-12-06).
- ^ Skywing. PatchGuard Reloaded: A Brief Analysis of PatchGuard Version 3. Uninformed. September 2007 [2 June 2008]. (原始內容存檔於2017-12-06).
- ^ Hines, Matt. Microsoft Decries Vista PatchGuard Hack. eWEEK. 25 October 2006 [2 April 2016].
- ^ Gewirtz, David. The great Windows Vista antivirus war. OutlookPower. 2006 [30 November 2006]. (原始內容存檔於2007-09-04).
- ^ Espiner, Tom. EC Vista antitrust concerns fleshed out. silicon.com. 25 October 2006 [30 November 2006]. (原始內容存檔於2007年2月2日).
- ^ Jones, Jeff. Windows Vista x64 Security – Pt 2 – Patchguard. Jeff Jones Security Blog. Microsoft. 12 August 2006 [11 March 2007]. (原始內容存檔於2008-12-09).
- ^ White, Nick. Upgrade to Next Version of Windows Live OneCare Announced for All Subscribers. Windows Vista Team Blog. Microsoft. 14 November 2007 [14 November 2007]. (原始內容存檔於2008-02-01).
外部連結
[編輯]- The Truth About PatchGuard: Why Symantec Keeps Complaining
- An Introduction to Kernel Patch Protection
- Microsoft executive clarifies recent market confusion about Windows Vista Security
- Kernel Patch Protection: Frequently Asked Questions
- Windows Vista x64 Security – Pt 2 – Patchguard
Uninformed.org文章:
- Bypassing PatchGuard on Windows x64
- Subverting PatchGuard Version 2
- PatchGuard Reloaded: A Brief Analysis of PatchGuard Version 3
繞過方法:
- KPP Destroyer (including source code) - 2015 (頁面存檔備份,存於互聯網檔案館)
- A working driver to bypass PatchGuard 3 (including source code) - 2008 (頁面存檔備份,存於互聯網檔案館)
- Bypassing PatchGuard with a hex editor - 2009
微軟安全通告: