
Постоянное исправление для уязвимого драйвера WinRing0 на Intel NUC (CVE-2020-14979) при переустановке через Windows Update
Защитник Windows помечает OpenHardwareMonitorLib.sys (драйвер WinRing0) как VulnerableDriver:WinNT/Winring0 из-за CVE-2020-14979. Этот драйвер входит в состав службы Intel NUC Software Studio и переустанавливается через Центр обновления Windows.
Этот репозиторий предлагает постоянное решение.
performancedriverextension.inf от Intel устанавливает NucSoftwareStudioServiceOpenHardwareMonitorLib.sys (драйвер ядра WinRing0)Intel Corporation - Extension - 1.0.0.38 продолжает переустанавливать егоДрайвер Intel NUC Performance Driver (ACPI\INTC1036) - это ACPI-устройство, предоставляющее специфические для NUC функции:
Уязвимое расширение подключается к этому базовому драйверу. Центр обновления Windows видит устройство и предлагает обновления драйвера для него.
Это полностью отключает ACPI-устройство через групповую политику, предотвращая загрузку любых драйверов.
Запустите scripts/disable-device-gpo.ps1 от имени администратора или вручную:
# Run as Administrator
.\scripts\disable-device-gpo.ps1
Сохраняет базовый драйвер, но блокирует все установки драйверов через Центр обновления Windows для этого устройства.
Компромиссы:
Запустите scripts/block-driver-updates.ps1 от имени администратора.
Менее постоянное - требует повторного скрытия, если Intel выпустит новые версии.
Запустите scripts/remove-and-hide.ps1 от имени администратора.
Проверьте текущее состояние:
.\scripts\diagnose.ps1
| Компонент | Путь |
|---|---|
| Исполняемый файл службы | C:\WINDOWS\System32\DriverStore\FileRepository\performancedriverextension.inf_amd64_*\Service\NucSoftwareStudioService.exe |
| Уязвимый драйвер | ...\Service\OpenHardwareMonitorLib.sys |
| INF базового драйвера | oem*.inf (PerformanceDriver) |
| INF расширения | performancedriverextension.inf |
После применения любого решения проверьте:
# Check service is gone
sc.exe query NucSoftwareStudioService
# Check no pending Intel extension updates
# (Run scripts/diagnose.ps1 for full status)
Сценарий: Проверка, что блокировка устройства через групповую политику (Вариант A) переживает попытку Центра обновления Windows установить уязвимый драйвер.
Процедура тестирования:
ACPI\INTC1036 (устройство отключено)Результаты после установки пакета Центром обновления Windows:
| Проверка | Результат |
|---|---|
| NucSoftwareStudioService | Не найдено (хорошо) |
| Хранилище драйверов | performancedriverextension.inf размещен как oem17.inf |
| OpenHardwareMonitorLib.sys | Не извлечен (хорошо) |
| Устройство INTC1036 | Отключено - GPO удержало |
| Запись реестра блокировки GPO | Активна |
Ключевой вывод: Блокировка устройства через GPO является эффективным уровнем защиты. Центр обновления Windows может разместить пакет драйвера в хранилище, но не может активировать его, так как идентификатор оборудования заблокирован. Уязвимый файл .sys никогда не извлекается и не загружается.
После подтверждения, что блокировка GPO удержалась, проведена полная очистка:
pnputil /delete-driver oem17.infwushowhide.diagcabИтоговое подтвержденное состояние:
| Компонент | Статус |
|---|---|
| NucSoftwareStudioService | Не найдено ✓ |
| Хранилище драйверов (performancedriverextension.inf) | Чисто ✓ |
| OpenHardwareMonitorLib.sys | Отсутствует ✓ |
| Устройство Intel NUC Performance Driver | Отключено ✓ |
| Блокировка устройства через групповую политику | Активна (INTC1036 заблокирован) ✓ |
| Обновление расширения Intel | Скрыто ✓ |
Блокировки только идентификатора оборудования достаточно для защиты.
Тестирование показало, что блокировка ACPI\INTC1036 через групповую политику предотвращает загрузку уязвимого драйвера, даже если Центр обновления Windows успешно загружает и размещает пакет драйвера. Исполняемый файл службы и файл .sys никогда не извлекаются, потому что целевое устройство отключено.
Рекомендуемая минимальная конфигурация:
ACPI\INTC1036 — это единственная необходимая защитаПростота этого подхода является его сильной стороной: одна блокировка устройства на основе реестра обеспечивает полную защиту, не мешая нормальной работе Центра обновления Windows для других устройств.
Когда устройство Intel NUC Performance Driver (ACPI\INTC1036) отключено:
Больше недоступно:
По-прежнему работает нормально:
Почему это приемлемо для большинства пользователей: Драйвер NUC Performance Driver в первую очередь обеспечивает программную настройку поведения вентилятора/светодиодов. BIOS предоставляет профили по умолчанию, которые работают без какого-либо драйвера Windows. Большинство пользователей устанавливают кривые вентилятора один раз в BIOS и больше к ним не возвращаются. Если вам требуется динамическое управление вентилятором на основе Windows (например, игровые профили, которые переключаются автоматически), Вариант A может не подойти — рассмотрите Вариант B.
# Remove the Group Policy block
Remove-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DeviceInstall\Restrictions" -Recurse -Force
# Re-enable the device
$device = Get-PnpDevice | Where-Object { $_.InstanceId -like '*INTC1036*' }
Enable-PnpDevice -InstanceId $device.InstanceId -Confirm:$false
Remove-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DeviceInstall\Restrictions" -Recurse -Force
Если у вас есть дополнительные находки или улучшения, пожалуйста, откройте issue или PR.
Лицензия MIT - Используйте на свой страх и риск. Всегда проверяйте скрипты перед запуском от имени администратора.