- Вопрос или проблема
- Найдите проблемное устройство
- Проверьте, есть ли у него внешний DMA
- Получите идентификаторы устройства
- Разрешите устройство
- Ответ или решение
- Ответ на вопрос: Обнаружены устройства/шины с возможностью DMA, которые не разрешены
- Шаг 1. Используйте Просмотр событий
- Шаг 2. Проверка списка устройств
- Шаг 3. Разрешение устройства в реестре
- Шаг 4. Перезагрузка
- Примечания
Вопрос или проблема
Моя проблема заключается в том, как узнать, какое устройство на моем ноутбуке поддерживает незапрещенный DMA. Я попытался отключить свои USB-устройства и отключить ноутбук от docking station. У моего коллеги такая же модель ноутбука, и у него нет такой же проблемы, как у меня.
Информация о системе
Название ОС Microsoft Windows 10 Enterprise
Версия 10.0.16299 Build 16299
Описание другой ОС Недоступно
Производитель ОС Microsoft Corporation
Имя системы NB-SOKRE
Производитель системы LENOVO
Модель системы 20L7S02M00
Тип системы x64-система
SKU системы LENOVO_MT_20L7_BU_Think_FM_ThinkPad T480s
Процессор Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz, 2112 Mhz, 4 ядра(ов), 8 логических процессоров
Версия/дата BIOS LENOVO N22ET37W (1.14), 22.5.2018.
Версия SMBIOS 3.0
Версия встроенного контроллера 1.08
Режим BIOS UEFI
Производитель материнской платы LENOVO
Модель материнской платы Недоступно
Имя материнской платы Базовая плата
Роль платформы Мобильный
Состояние безопасной загрузки Включено
Конфигурация PCR7 Привязана
Директория Windows C:\Windows
Директория системы C:\Windows\system32
Устройство загрузки \Device\HarddiskVolume1
Локаль Соединенные Штаты
Версия уровня абстракции оборудования = "10.0.16299.371"
Имя пользователя 3PRO\kkljucaric
Часовой пояс Центральноевропейское летнее время
Установленная физическая память (RAM) 16,0 ГБ
Общая физическая память 15,8 ГБ
Доступная физическая память 7,02 ГБ
Общая виртуальная память 18,2 ГБ
Доступная виртуальная память 5,31 ГБ
Объем файла подкачки 2,38 ГБ
Файл подкачки C:\pagefile.sys
Безопасность на основе виртуализации Работает
Требуемые свойства безопасности на основе виртуализации Базовая поддержка виртуализации, Безопасная загрузка, Защита DMA
Доступные свойства безопасности на основе виртуализации Базовая поддержка виртуализации, Безопасная загрузка, Защита DMA, Безопасная перезапись памяти, Чтение кода UEFI только для чтения, Устранение уязвимостей безопасности SMM 1.0
Службы безопасности на основе виртуализации Настроены Credential Guard
Службы безопасности на основе виртуализации Работают Credential Guard
Политика целостности кода Windows Defender Device Guard Аудит
Аудит целостности кода режима пользователя Windows Defender Device Guard
Поддержка шифрования устройства Причины для неудачного автоматического шифрования устройства: Обнаружены устройства шины/устройства с незапрещенным DMA
Обнаружен гипервизор. Необходимые функции для Hyper-V не будут отображены.
Оказывается, вам не нужно использовать процесс исключения, чтобы выяснить, какую шину добавить в список разрешенных; это содержится в сообщении журнала событий.
- Откройте Просмотр событий.
- Выберите журналы приложений и сервисов -> Microsoft -> Windows -> BitLocker-API -> Управление.
- Нажмите
Открыть
- Ищите элемент “Информация” с ИД события 4122: он будет содержать текст, который говорит что-то вроде:
Следующие устройства, способные к DMA (Прямой доступ к памяти), не объявлены как защищенные от внешнего доступа, что может заблокировать функции безопасности, такие как автоматическое шифрование устройства BitLocker:
ISA Bridge:
PCI\VEN_8086&DEV_A30D (Intel(R) 300 Series Chipset Family LPC Controller (HM370) - A30D)
PCI-to-PCI Bridge:
PCI\VEN_8086&DEV_A334 (Intel(R) PCI Express Root Port #13 - A334)
PCI\VEN_8086&DEV_A337 (Intel(R) PCI Express Root Port #16 - A337)
PCI\VEN_8086&DEV_A343 (Intel(R) PCI Express Root Port #20 - A343)
PCI\VEN_8086&DEV_A330 (Intel(R) PCI Express Root Port #9 - A330)
PCI\VEN_8086&DEV_1901 (Intel(R) Xeon(R) E3 - 1200/1500 v5/6th Gen Intel(R) Core(TM) PCIe Controller (x16) - 1901)
PCI\VEN_8086&DEV_A336 (Intel(R) PCI Express Root Port #15 - A336)
Это те элементы, которые нужно добавить в список Разрешенных, если они не создают уязвимость безопасности (например, они недоступны извне, как я думаю?)
Примечание редактора: Это может больше не работать, поскольку, по всей видимости, этот ключ реестра теперь игнорируется, начиная с Windows 11 24H2, согласно https://learn.microsoft.com/windows-hardware/design/device-experiences/oem-bitlocker
Если есть больше людей, которые пытаются решить эту проблему… Я был ленив, поэтому создал небольшой скрипт PS, который генерирует файл .reg (со всеми найденными PCI-устройствами) в временной директории, а затем импортирует его без лишних уведомлений.
$tmpfile = "$($env:TEMP)\AllowBuses.reg"
'Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DmaSecurity\AllowedBuses]'`
| Out-File $tmpfile
(Get-PnPDevice -InstanceId PCI* `
| Format-Table -Property FriendlyName,InstanceId -HideTableHeaders -AutoSize `
| Out-String -Width 300).trim() `
-split "`r`n" `
-replace '&SUBSYS.*', '' `
-replace '\s+PCI\\', '"="PCI\\' `
| Foreach-Object{ "{0}{1}{2}" -f '"',$_,'"' } `
| Out-File $tmpfile -Append
regedit /s $tmpfile
С этого момента вы можете начать удалять добавленные записи через regedit одну за другой, обновляя страницу информации о системе и проверяя, какая запись снова делает систему несовместимой…
Это быстрее, чем добавление записей вручную 🙂
Для меня отсутствовала запись для “PCI Express Downstream Switch Port”
Вам, возможно, придется изменить разрешения для этого ключа (добавить своего пользователя или группу в качестве владельца ключа), так как также Microsoft упоминает это в своем руководстве здесь:
https://docs.microsoft.com/en-us/windows-hardware/design/device-experiences/oem-bitlocker
Microsoft предоставляет эту документацию по этому сообщению.
Как черный список, так и белый список находятся в вашем реестре Windows по адресу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DmaSecurity
. Я не знаю о автоматическом процессе для проверки этого, хотя создание такого процесса должно быть довольно простым.
Обычным кандидатом, который встречается на большинстве систем, является “PCI-to-PCI Bridge”. Любопытно, что “PCI Express Root Complex” как в AllowedBuses
, так и в UnallowedBuses
.
В моем случае мне просто нужно было разрешить свою видеокарту. Вот процесс, которому я следовал, чтобы сделать это.
Примечание редактора: Это может больше не работать, поскольку, по всей видимости, этот ключ реестра теперь игнорируется, начиная с Windows 11 24H2, согласно https://learn.microsoft.com/windows-hardware/design/device-experiences/oem-bitlocker
Найдите проблемное устройство
- Откройте компьютер и физически отключите все дополнительные устройства от материнской платы (например, HDD, SSD, карты PCIe)
- Запустите компьютер и снова выполните отчет Информация о системе, чтобы увидеть, исчезла ли ошибка
- Если ошибка все еще присутствует, то мои инструкции, вероятно, не помогут вам
- Если ошибка отсутствует, добавьте только одно из устройств, которые вы удалили
- Повторите с шага 2
В конечном итоге вы можете обнаружить, что повторное добавление одного конкретного устройства вызывает появление ошибки. Запомните, какое это устройство.
Проверьте, есть ли у него внешний DMA
Смотрите Шифрование диска BitLocker в Windows 10 для OEM, чтобы определить, есть ли у вашего устройства внешний DMA. Если есть, то продолжайте на свой страх и риск. В противном случае вы можете продолжать.
Получите идентификаторы устройства
-
Откройте Диспетчер устройств
-
Найдите устройство
-
Дважды щелкните по нему
-
Перейдите на вкладку Сведения
-
Установите Свойство на Родитель
-
Скопируйте значение
Разрешите устройство
- Откройте Regedit
- Перейдите к
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DmaSecurity\AllowedBuses
- Предоставьте себе доступ для изменения ключа реестра
- Щелкните правой кнопкой мыши на AllowedBuses и перейдите в Разрешения
- Сделайте себя владельцем
- Нажмите Дополнительно
- Напротив Владелец, обратите внимание на то, что там написано (у меня было написано SYSTEM)
- Напротив Владельца, нажмите Изменить
- Введите имя пользователя (например, адрес электронной почты вашей учетной записи Microsoft)
- Нажмите ОК
- Предоставьте себе доступ
- Нажмите Добавить
- Введите имя пользователя (например, адрес электронной почты вашей учетной записи Microsoft)
- Нажмите ОК
- Выберите своего пользователя
- Установите флажок Полный доступ
- Нажмите ОК
- В AllowedBuses создайте новое Строковое значение
- Перезагрузите компьютер
- Запустите Информацию о системе
- Подтвердите, что ошибка теперь исчезла
- Вернитесь в реестр и отмените изменения разрешений, которые вы сделали
Есть еще одна причина, по которой можно увидеть сообщение “Обнаружены устройства/шины с незапрещенным DMA”, как я наблюдал на своей системе Windows 10: использование другого загрузчика.
Короче говоря, я нашел дополнительный диск на 27 ГБ на своем ноутбуке Dell, который казался незанятым, поэтому я установил туда Ubuntu. Но мне сначала пришлось отключить шифрование на диске C. Когда установка была завершена, и я загрузился в Windows из загрузчика grub, опция “Шифрование устройства” исчезла из Система > Обновления и безопасность. Решением было зайти в BIOS и выбрать загрузку Windows, что обошло grub, и опция снова появилась, что позволило мне повторно зашифровать диск. Как и ожидалось, мой Windows-монтирование в Ubuntu больше не было видимо.
На всякий случай, причина, по которой я сделал это, была в том, что я хотел систему разработки на Linux, чтобы преодолеть ограничения WSL. Отсутствие официального клиента Linux для моего облачного диска на Linux, что было моим планом для обмена данными между Windows и Linux, сделало двойную загрузку менее желаемым вариантом.
Сейчас у меня есть легкий сервер Ubuntu, установленный в виртуальной машине VirtualBox. Я запускаю его в режиме безголовья, что позволяет мне закрыть VirtualBox так, чтобы он не занимал место на панели задач, как будто его и нет, за исключением, когда использование ЦП возрастает, и вентиляторы начинают работать, но это было исправлено понижением предела использования в настройках виртуальной машины. Затем я напрямую подключаюсь к нему по SSH из PowerShell, WSL не нужно. Прелесть в том, что я могу предоставить ему подключаемый адаптер, чтобы DHCP назначал ему выделенный IP-адрес, что удобно позволяет мне получить доступ к веб-серверу на docker, без ограничений и проблем, которые я наблюдал на WSL. Кроме того, я могу смонтировать облачную папку в виртуальной машине и получить доступ ко всем файлам. Мне потребовалось некоторое время, чтобы определиться с средой разработки с наилучшими из Linux и Windows 10, так что я надеюсь, что это будет полезно.
У меня все еще есть мой физический компьютер на Ubuntu с двойной загрузкой grub, но я изменил настройку BIOS, чтобы он сначала переходил в загрузчик Windows, тем самым сразу загружаясь в Windows. Мне нравится уверенность, когда я вижу настройки шифрования, которые показывают, что шифрование ВКЛ.
Для меня удаление
“ISA Bridge” и “PCI to PCI Bridge”
из
[Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DmaSecurity\Default\UnallowedBuses]
исправило это на Lenovo L15 20U8.
Мне удалось устранить это сообщение об ошибке, найденное в Просмотре событий:
Следующие устройства, способные к DMA (Прямой доступ к памяти), не объявлены как защищенные от внешнего доступа, что может заблокировать функции безопасности, такие как автоматическое шифрование устройства BitLocker:
ISA Bridge: PCI\VEN_8086&DEV_068E (Intel(R) LPC Controller (WM490) – 068E)
PCI-to-PCI Bridge: PCI\VEN_8086&DEV_06BD (Intel(R) PCI Express Root Port #6 – 06BD) PCI\VEN_8086&DEV_06AC (Intel(R) PCI Express Root Port #21 – 06AC) PCI\VEN_8086&DEV_06C0 (Intel(R) PCI Express Root Port #17 – 06C0) PCI\VEN_8086&DEV_15EA (PCI Express Downstream Switch Port) PCI\VEN_8086&DEV_15EA (PCI Express Downstream Switch Port)
PCI\VEN_8086&DEV_15EA (PCI Express Downstream Switch Port)
PCI\VEN_8086&DEV_15EA (PCI Express Downstream Switch Port)
PCI\VEN_8086&DEV_15EA (PCI Express Upstream Switch Port)
PCI\VEN_8086&DEV_1901 (Intel(R) PCIe Controller (x16) – 1901)
PCI\VEN_8086&DEV_06B8 (Intel(R) PCI Express Root Port #1 – 06B8)
путем входа в BIOS и отключения “Быстрой загрузки”, и это сработало. Я делал это на мобильной рабочей станции HP ZBook Fury 15 G7.
Я знаю, что это старое сообщение, но я создал скрипт, который анализирует журнал событий и добавляет только необходимые идентификаторы оборудования DMA в разрешенный список, если кому-то это нужно.
#Получить сообщение
$message = get-winevent -LogName 'Microsoft-Windows-BitLocker/BitLocker Management' | where {$_.ID -eq 4122} | select -first 1
#Разделить сообщение по возврату каретки, чтобы вернуть построчно
$messageSplit = $message.Message.split("`r")
$results = @()
#Цикл for динамически заданной длины $messageSplit
for ($i = 0; $i -le $messageSplit.Length; $i++) {
IF($messageSplit[$i] -match 'PCI\\VEN'){
$results += $messageSplit[$i].Split("(")[0].trim()
}
}
foreach($r in $results)
{
New-ItemProperty -PropertyType string -Path HKLM:\system\CurrentControlSet\Control\DmaSecurity\AllowedBuses -Name $r -Value $r
}
Ответ или решение
Ответ на вопрос: Обнаружены устройства/шины с возможностью DMA, которые не разрешены
Проблема, с которой вы столкнулись, указывает на наличие устройств на вашем ноутбуке, которые обладают возможностью прямого доступа к памяти (DMA) без надлежащей защиты. Это может препятствовать таким функциям безопасности, как автоматическое шифрование устройства с помощью BitLocker. Чтобы определить, какое устройство вызывает эту проблему, выполните следующие действия.
Шаг 1. Используйте Просмотр событий
- Откройте "Просмотр событий".
- Перейдите в следующий путь:
Приложения и службы > Microsoft > Windows > BitLocker-API > Управление
. - Нажмите на "Открыть".
- Найдите элемент информации с ID события 4122. В этом сообщении будет указано, какие именно устройства с возможностью DMA не защищены от внешнего доступа.
Пример сообщения:
Следующие устройства с возможностью DMA не обозначены как защищенные от внешнего доступа, что может блокировать функции безопасности, такие как автоматическое шифрование устройства BitLocker:
ISA Bridge: PCI\VEN_8086&DEV_A30D (Intel(R) 300 Series Chipset Family LPC Controller (HM370) - A30D)
PCI-to-PCI Bridge:
...
Шаг 2. Проверка списка устройств
Вы также можете использовать "Диспетчер устройств", чтобы найти конкретные устройства, вызывающие ошибку:
- Откройте "Диспетчер устройств".
- Найдите устройство, которое может быть связано с указанием на DMA.
- Дважды щелкните на устройстве и перейдите на вкладку "Сведения".
- Установите "Свойство" на "Родитель" для получения идентификатора устройства.
Шаг 3. Разрешение устройства в реестре
Если вы определили проблемное устройство:
- Откройте редактор реестра (Regedit).
- Перейдите по пути:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DmaSecurity\AllowedBuses
. - Вам может понадобиться изменить разрешения на этот ключ, чтобы получить возможность редактирования.
- Создайте новое строковое значение и укажите имя идентификатора устройства, скопированного из "Диспетчера устройств", укоротив его до
PCI\VEN_####&DEV_####
.
Шаг 4. Перезагрузка
- Перезагрузите компьютер и проверьте, исчезла ли ошибка в "Информации о системе". Если все прошло успешно, вы можете вернуть ранее установленные разрешения в реестре.
Примечания
- Проверьте, не подключено ли к вашему ноутбуку какие-либо внешние устройства USB, так как они также могут быть причиной возникновения проблемы.
- Также стоит отметить, что использование альтернативных загрузчиков или изменение параметров BIOS (например, отключение "Fast Boot") может повлиять на разрешение данной ошибки.
- Если изменения в реестре или BIOS не помогли, вы можете обратиться к документации Microsoft или выполнить диагностику через систему поддержки Lenovo.
Если в процессе работы возникнут дополнительные вопросы, не стесняйтесь задавать их.