
Mi problema es ¿cómo puedo saber qué dispositivo de mi computadora portátil es compatible con DMA no permitido? Intenté desactivar mis dispositivos USB y desconectar la computadora portátil de la estación de acoplamiento. Mi colega tiene el mismo modelo de computadora portátil y no tiene el mismo problema que yo.
Información del sistema
OS Name Microsoft Windows 10 Enterprise
Version 10.0.16299 Build 16299
Other OS Description Not Available
OS Manufacturer Microsoft Corporation
System Name NB-SOKRE
System Manufacturer LENOVO
System Model 20L7S02M00
System Type x64-based PC
System SKU LENOVO_MT_20L7_BU_Think_FM_ThinkPad T480s
Processor Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz, 2112 Mhz, 4 Core(s), 8 Logical Processor(s)
BIOS Version/Date LENOVO N22ET37W (1.14 ), 22.5.2018.
SMBIOS Version 3.0
Embedded Controller Version 1.08
BIOS Mode UEFI
BaseBoard Manufacturer LENOVO
BaseBoard Model Not Available
BaseBoard Name Base Board
Platform Role Mobile
Secure Boot State On
PCR7 Configuration Bound
Windows Directory C:\Windows
System Directory C:\Windows\system32
Boot Device \Device\HarddiskVolume1
Locale United States
Hardware Abstraction Layer Version = "10.0.16299.371"
User Name 3PRO\kkljucaric
Time Zone Central European Daylight Time
Installed Physical Memory (RAM) 16,0 GB
Total Physical Memory 15,8 GB
Available Physical Memory 7,02 GB
Total Virtual Memory 18,2 GB
Available Virtual Memory 5,31 GB
Page File Space 2,38 GB
Page File C:\pagefile.sys
Virtualization-based security Running
Virtualization-based security Required Security Properties Base Virtualization Support, Secure Boot, DMA Protection
Virtualization-based security Available Security Properties Base Virtualization Support, Secure Boot, DMA Protection, Secure Memory Overwrite, UEFI Code Readonly, SMM Security Mitigations 1.0
Virtualization-based security Services Configured Credential Guard
Virtualization-based security Services Running Credential Guard
Windows Defender Device Guard Code Integrity Policy Audit
Windows Defender Device Guard user mode Code Integrity Audit
Device Encryption Support Reasons for failed automatic device encryption: Un-allowed DMA capable bus/device(s) detected
A hypervisor has been detected. Features required for Hyper-V will not be displayed.
Respuesta1
Resulta que no es necesario utilizar el proceso de eliminación para saber qué autobús agregar a la lista aprobada, está en un mensaje del visor de eventos.
- Abra el Visor de eventos.
- Elija Registros de aplicaciones y servicios -> Microsoft -> Windows -> BitLocker-API -> Administración.
- Busque un elemento de "Información" con el evento 4122: tendrá un texto que dice algo como:
The following DMA (Direct Memory Access) capable devices are not declared as protected from external access, which can block security features such as BitLocker automatic device encryption:
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)
Aquellosson los elementos que necesitaría agregar a Aprobado si no crean una vulnerabilidad de seguridad (por ejemplo, creo que no son accesibles externamente)
Respuesta2
Si hay más personas intentando resolver esto... Me dio pereza, así que creé un pequeño script PS que genera un archivo .reg (con todos los dispositivos PCI encontrados) en el directorio tmp y luego lo importa silenciosamente.
$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
Desde allí, puede comenzar a eliminar las entradas agregadas a través de regedit una por una mientras actualiza la página de información del sistema y verifica qué entrada la hace incompatible nuevamente. Es más rápido que agregar entradas manualmente :) Para mí, faltaba la entrada para "Puerto de conmutador descendente PCI Express "
Es posible que necesites cambiar los permisos para esta clave (agrega tu usuario o grupo como propietario de la clave), ya que Microsoft también lo tiene en su guía aquí:
https://docs.microsoft.com/en-us/windows-hardware/design/device-experiences/oem-bitlocker
Respuesta3
Microsoft proporcionaesta documentaciónsobre este mensaje.
Tanto la lista negra como la lista blanca están en su registro en HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DmaSecurity
. No conozco un proceso automatizado para verificar esto, aunque crear uno debería ser bastante fácil.
Un candidato típico que existe en la mayoría de los sistemas es el “Puente PCI a PCI”. Curiosamente, “PCI Express Root Complex” está tanto en formato AllowedBuses
como en UnallowedBuses
.
Respuesta4
Hay otra razón para ver este mensaje "Se detectaron dispositivos/buses con capacidad DMA no permitidos", como se observa en mi sistema Windows 10:usando un administrador de arranque diferente.
En pocas palabras, encontré una unidad adicional de 27 GB en mi computadora portátil Dell que parecía no usarse, así que instalé Ubuntu allí. Pero primero tuve que desactivar el cifrado en la unidad C. Cuando finalizó la instalación e inicié Windows desde el administrador de arranque grub, la opción "Cifrado del dispositivo" desapareció deSistema > Actualizaciones y Seguridad. La solución fue ingresar al BIOS y seleccionar Arranque de Windows, lo que omite grub y la opción apareció nuevamente, permitiéndome volver a cifrar la unidad. Como era de esperar, mi montaje de Windows en Ubuntu ya no estaba visible.
Por si sirve de algo, la razón por la que hice esto fue porque quería un sistema de desarrollo Linux para superar las limitaciones de WSL. La falta de un cliente Linux oficial para mi disco en la nube en Linux, que era mi plan para compartir datos entre Windows y Linux, hizo que el arranque dual fuera una opción menos deseable.
Lo que tengo ahora es un servidor Ubuntu ligero instalado en una máquina virtual VirtualBox. Lo inicio en modo sin cabeza, lo que me permite cerrar VirtualBox para que no ocupe espacio en la barra de tareas, es como si ni siquiera estuviera ahí, excepto cuando el uso de la CPU aumenta y los ventiladores se llenan, pero esto fue solucionado porReducir el límite de ejecuciónen la configuración de la máquina virtual. Luego entro en SSH directamente desde PowerShell, no se necesita WSL. Lo bueno de esto es que puedo darle un adaptador puente para que DHCP le asigne una dirección IP dedicada, lo que me permite acceder cómodamente al servidor web en Docker, sin la necesidad delimitacionesyasuntosLo he visto en WSL. Además, puedo montar la carpeta de la unidad en la nube en la VM y acceder a todos los archivos. Me tomó un tiempo decidirme por un entorno de desarrollo con lo mejor de Linux y Windows 10, así que espero que esto sea útil.
Todavía tengo mi máquina Ubuntu física con arranque dual grub, pero cambié la configuración del BIOS para que vaya primero al Administrador de arranque de Windows y, por lo tanto, directamente a Windows. Me gusta la seguridad de ver la configuración de cifrado allí diciéndome que el cifrado está activado.