Kernel Patch Protection ( KPP ), неофициально известная как PatchGuard , является функцией 64-разрядных ( x64 ) редакций Microsoft Windows , которая предотвращает исправление ядра . Впервые она была представлена в 2005 году с x64 редакциями Windows Vista и Windows Server 2003 Service Pack 1. [1]
«Патчинг ядра» относится к неподдерживаемой модификации центрального компонента или ядра операционной системы Windows. Такая модификация никогда не поддерживалась Microsoft, поскольку, по словам Microsoft, она может значительно снизить безопасность, надежность и производительность системы. [1] Хотя Microsoft не рекомендует это, возможно патчить ядро в редакциях x86 Windows; однако в редакциях x64 Windows Microsoft решила реализовать дополнительную защиту и технические барьеры для патчинга ядра.
Поскольку исправление ядра возможно в 32-разрядных (x86) редакциях Windows, несколько разработчиков антивирусного ПО используют исправление ядра для внедрения антивирусных и других служб безопасности. Эти методы не будут работать на компьютерах с x64 редакциями Windows. Из-за этого Kernel Patch Protection привела к тому, что производителям антивирусов пришлось перепроектировать свое программное обеспечение без использования методов исправления ядра.
Однако из-за конструкции ядра Windows Kernel Patch Protection не может полностью предотвратить исправление ядра. [2] [3] Это привело к критике, что поскольку KPP является несовершенной защитой, проблемы, причиняемые поставщикам антивирусов, перевешивают выгоды, поскольку авторы вредоносного ПО просто найдут способы обойти его защиту. [4] [5] Тем не менее, Kernel Patch Protection все еще может предотвратить проблемы стабильности, надежности и производительности системы, вызванные легитимным программным обеспечением, исправляющим ядро неподдерживаемыми способами.
Ядро Windows спроектировано таким образом, что драйверы устройств имеют тот же уровень привилегий, что и само ядро. [6] Ожидается, что драйверы устройств не будут изменять или исправлять основные системные структуры в ядре. [1] Однако в редакциях x86 Windows Windows не обеспечивает этого ожидания. В результате некоторое программное обеспечение x86, в частности определенные программы безопасности и антивирусные программы, были разработаны для выполнения необходимых задач посредством загрузки драйверов, которые изменяют основные структуры ядра. [6] [7]
В x64- редакциях Windows Microsoft начала вводить ограничения на то, какие структуры драйверы могут и не могут изменять. Kernel Patch Protection — это технология, которая обеспечивает эти ограничения. Она работает путем периодической проверки, чтобы убедиться, что защищенные системные структуры в ядре не были изменены. Если обнаружено изменение, то Windows инициирует проверку ошибок и завершает работу системы, [6] [8] с синим экраном и/или перезагрузкой. Соответствующий номер проверки ошибок — 0x109, код проверки ошибок — CRITICAL_STRUCTURE_CORRUPTION. Запрещенные изменения включают в себя: [8]
Kernel Patch Protection защищает только от драйверов устройств, изменяющих ядро. Он не обеспечивает никакой защиты от того, что один драйвер устройства исправляет другой. [10]
В конечном счете, поскольку драйверы устройств имеют тот же уровень привилегий, что и само ядро, невозможно полностью запретить драйверам обходить защиту ядра от исправлений и затем исправлять ядро. [2] Однако KPP представляет собой существенное препятствие для успешного исправления ядра. С сильно запутанным кодом и вводящими в заблуждение именами символов KPP использует безопасность через неизвестность , чтобы помешать попыткам обойти его. [6] [11] Периодические обновления KPP также делают его «движущейся целью», поскольку методы обхода, которые могут работать некоторое время, скорее всего, сломаются со следующим обновлением. С момента его создания в 2005 году Microsoft выпустила два крупных обновления KPP, каждое из которых предназначено для слома известных методов обхода в предыдущих версиях. [6] [12] [13]
Исправление ядра никогда не поддерживалось корпорацией Microsoft, поскольку это может вызвать ряд негативных последствий. [7] Kernel Patch Protection защищает от этих негативных последствий, в том числе:
В разделе часто задаваемых вопросов Microsoft «Защита от исправлений ядра» даются дополнительные пояснения:
Поскольку исправление заменяет код ядра неизвестным, непроверенным кодом, нет возможности оценить качество или влияние стороннего кода... Анализ данных онлайн-анализа сбоев (OCA) в Microsoft показывает, что сбои системы обычно возникают из-за как вредоносного, так и невредоносного программного обеспечения, которое исправляет ядро.
— «Защита ядра от исправлений: часто задаваемые вопросы». Microsoft . 22 января 2007 г. . Получено 22 февраля 2007 г. .
Некоторые программы компьютерной безопасности, такие как McAfee VirusScan от McAfee и Norton AntiVirus от Symantec , работали, исправляя ядро на системах x86. [ требуется ссылка ] Известно, что антивирусное программное обеспечение, разработанное «Лабораторией Касперского», широко использует исправление кода ядра на x86 - редакциях Windows. [16] Этот вид антивирусного программного обеспечения не будет работать на компьютерах под управлением x64-редакций Windows из-за Kernel Patch Protection. [17] Из-за этого McAfee призвал Microsoft либо полностью удалить KPP из Windows, либо сделать исключения для программного обеспечения, созданного «доверенными компаниями», такими как они сами. [4]
Корпоративное антивирусное ПО Symantec [18] и Norton 2010 года выпуска и более поздние версии [19] работали на x64-редакциях Windows, несмотря на ограничения KPP, хотя и с меньшей способностью обеспечивать защиту от вредоносного ПО нулевого дня. Антивирусное ПО, созданное конкурентами ESET , [20] Trend Micro , [21] Grisoft AVG, [22] avast!, Avira Anti-Vir и Sophos, не исправляет ядро в конфигурациях по умолчанию, но может исправить ядро, когда включены такие функции, как «расширенная защита процессов» или «предотвращение несанкционированного завершения процессов». [23]
Microsoft не ослабляет защиту от исправлений ядра, делая исключения из нее, хотя Microsoft, как известно, время от времени ослабляет свои ограничения, например, в интересах программного обеспечения виртуализации гипервизора . [10] [24] Вместо этого Microsoft работала со сторонними компаниями над созданием новых интерфейсов прикладного программирования , которые помогают программному обеспечению безопасности выполнять необходимые задачи без исправления ядра. [15] Эти новые интерфейсы были включены в Windows Vista Service Pack 1. [ 25]
Из-за конструкции ядра Windows Kernel Patch Protection не может полностью предотвратить исправление ядра. [2] Это привело к тому, что поставщики компьютерной безопасности McAfee и Symantec заявили, что поскольку KPP является несовершенной защитой, проблемы, причиненные поставщикам безопасности, перевешивают выгоды, поскольку вредоносное ПО просто найдет способы обойти защиту KPP, а стороннее ПО безопасности будет иметь меньше свободы действий для защиты системы. [4] [5]
В январе 2006 года исследователи безопасности, известные под псевдонимами «skape» и «Skywing», опубликовали отчет, в котором описываются методы, некоторые из которых являются теоретическими, с помощью которых можно обойти защиту ядра от исправлений. [26] Skywing опубликовала второй отчет в январе 2007 года об обходе KPP версии 2, [27] и третий отчет в сентябре 2007 года о KPP версии 3. [28] Кроме того, в октябре 2006 года компания по безопасности Authentium разработала рабочий метод обхода KPP. [29]
Тем не менее, Microsoft заявила, что они намерены устранить любые недостатки, которые позволяют обойти KPP, в рамках своего стандартного процесса Security Response Center. [30] В соответствии с этим заявлением, Microsoft на данный момент выпустила два крупных обновления KPP, каждое из которых призвано сломать известные методы обхода в предыдущих версиях. [6] [12] [13]
В 2006 году Европейская комиссия выразила обеспокоенность по поводу Kernel Patch Protection, заявив, что это антиконкурентно . [31] Однако собственный антивирусный продукт Microsoft, Windows Live OneCare , не имел специального исключения для KPP. Вместо этого Windows Live OneCare использовала (и всегда использовала) методы, отличные от исправления ядра, для предоставления услуг по защите от вирусов. [32] Тем не менее, по другим причинам x64-версия Windows Live OneCare не была доступна до 15 ноября 2007 года. [33]
Статьи Uninformed.org:
Действующие обходные пути
Рекомендации Microsoft по безопасности: