
我的問題是如何找出筆記型電腦上的哪個裝置具有不允許的 DMA 功能。我嘗試停用 USB 裝置並將筆記型電腦從擴充座上拔下。我的同事有相同的筆記型電腦型號,但他沒有遇到與我相同的問題。
系統資訊
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.
答案1
事實證明,您不必使用排除程序來找出要新增至核准清單中的總線,它位於事件檢視器訊息中。
- 打開事件檢視器。
- 選擇“應用程式和服務日誌”->“Microsoft”->“Windows”->“BitLocker-API”->“管理”。
- 尋找事件 4122 的「資訊」項目:它將包含類似以下內容的文字:
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)
那些如果它們不會造成安全漏洞,您需要添加到「已批准」的項目(例如,我認為它們不可從外部存取?)
答案2
如果有更多人試圖解決這個問題..我很懶,所以我創建了一個小 PS 腳本,它在 tmp 目錄中產生 .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
從那裡你可以開始通過註冊表一項一項地刪除添加的條目,同時刷新系統資訊頁面並檢查哪個條目再次使其不相容。 PCI Express下游交換器連接埠”的條目”
不過,您可能需要更改此金鑰的權限(將您的使用者或群組新增為金鑰的擁有者),因為 Microsoft 也在其指南中提供了它:
https://docs.microsoft.com/en-us/windows-hardware/design/device-experiences/oem-bitlocker
答案3
微軟提供本文檔關於此消息。
黑名單和白名單都位於您的註冊表中,網址為HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DmaSecurity
。我不知道有一個自動化的過程來檢查這一點,儘管創建一個應該非常容易。
大多數系統上存在的典型候選者是「PCI-to-PCI Bridge」。奇怪的是,「PCI Express Root Complex」同時存在於AllowedBuses
和中UnallowedBuses
。
答案4
看到此「偵測到不允許的 DMA 功能匯流排/裝置」訊息還有另一個原因,正如在我的 Windows 10 系統上觀察到的:使用不同的啟動管理器。
長話短說,我在我的戴爾筆記型電腦上發現了一個額外的 27GB 驅動器,它似乎未使用,所以我在那裡安裝了 Ubuntu。但我必須先停用 C 碟機上的加密。安裝完成後,我從 grub 啟動管理員啟動到 Windows,「裝置加密」選項從系統 > 更新與安全。解決方案是進入 BIOS 並選擇繞過 grub 的 Windows Boot,該選項再次出現,允許我重新加密磁碟機。正如預期的那樣,我在 Ubuntu 中安裝的 Windows 不再可見。
無論如何,我這樣做的原因是因為我想要一個 Linux 開發系統來克服 WSL 的限制。我的 Linux 雲端硬碟是我在 Windows 和 Linux 之間共享資料的計劃,但缺乏官方的 Linux 用戶端,使得雙啟動成為不太理想的選擇。
我現在擁有的是安裝在 VirtualBox 虛擬機器中的輕型 Ubuntu 伺服器。我以無頭模式啟動它,這允許我關閉 VirtualBox,這樣它就不會佔用任務欄上的空間,就像它根本不存在一樣,除非 CPU 使用率激增並且風扇變得忙碌,但這已通過降低執行上限在虛擬機器設定中。然後我直接從 PowerShell SSH 進入它,不需要 WSL。它的美妙之處在於我可以給它一個橋接適配器,以便 DHCP 為其分配一個專用 IP 位址,這可以方便地讓我訪問 docker 上的 Web 伺服器,而無需限制和問題我在WSL上看到過。此外,我可以在虛擬機器中安裝雲端硬碟資料夾並存取所有檔案。我花了一段時間才確定了一個具有 Linux 和 Windows 10 優點的開發環境,所以我希望這對您有幫助。
我仍然擁有帶有 grub 雙重開機的 Ubuntu 實體機,但我更改了 BIOS 設置,因此它首先進入 Windows 開機管理器,因此直接進入 Windows。我喜歡看到加密設定告訴我加密已開啟的保證。