許可されていない DMA 対応バス/デバイスが検出されました

許可されていない DMA 対応バス/デバイスが検出されました

私の問題は、ラップトップのどのデバイスが 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

承認済みリストに追加するバスを見つけるために消去法を使用する必要はなく、イベント ビューアー メッセージに表示されることがわかりました。

  1. イベント ビューアーを開きます。
  2. [アプリケーションとサービス ログ] -> [Microsoft] -> [Windows] -> [BitLocker-API] -> [管理] を選択します。イベント ビューアー ツリー
  3. イベント 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

これを解決しようとしている人がもっといるなら...私は怠け者なので、tmp ディレクトリに .reg ファイル (見つかったすべての PCI デバイスを含む) を生成し、それをサイレントにインポートする小さな PS スクリプトを作成しました。

$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 で追加されたエントリを 1 つずつ削除し始めることができます。手動でエントリを追加するよりも高速です :) 私の場合は、「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

私の Windows 10 システムで観察されたように、この「許可されていない DMA 対応バス/デバイスが検出されました」というメッセージが表示される別の理由があります。別のブートマネージャーを使用する

簡単に言うと、Dellのノートパソコンに未使用と思われる27GBのドライブがあったので、そこにUbuntuをインストールしました。しかし、まずCドライブの暗号化を無効にする必要がありました。インストールが完了し、grubブートマネージャーからWindowsを起動すると、「デバイス暗号化」オプションが消えていました。システム > アップデートとセキュリティ解決策は、BIOS に入り、grub をバイパスする Windows Boot を選択することでした。するとオプションが再び表示され、ドライブを再暗号化できるようになりました。予想どおり、Ubuntu の Windows マウントは表示されなくなりました。

ちなみに、私がこれをした理由は、WSL の制限を克服するために Linux 開発システムが欲しかったからです。Windows と Linux 間でデータを共有する計画だった Linux 上のクラウド ドライブ用の公式 Linux クライアントがなかったため、デュアル ブートはあまり望ましい選択肢ではありませんでした。

私が今持っているのは、VirtualBox VMにインストールされた軽量のUbuntuサーバーです。ヘッドレスモードで起動すると、VirtualBoxを閉じることができ、タスクバーのスペースを占有しません。CPU使用率が急上昇してファンが忙しくなる時以外は、そこに存在しないかのように見えますが、これは次の方法で修正されました。執行上限の引き下げVM設定で設定します。その後、PowerShellから直接SSHで接続します。WSLは必要ありません。ブリッジアダプターを使用できるのが利点です。これにより、DHCPが専用のIPアドレスを割り当て、Docker上のWebサーバーに簡単にアクセスできます。制限そして問題WSL で見たことがあります。また、クラウド ドライブ フォルダーを VM にマウントして、すべてのファイルにアクセスできます。Linux と Windows 10 の長所を組み合わせた開発環境を確立するのにしばらく時間がかかりましたが、これが役立つことを願っています。

私はまだ GRUB デュアル ブートの物理 Ubuntu マシンを持っていますが、BIOS 設定を変更して、最初に Windows ブート マネージャーにアクセスし、直接 Windows にアクセスするようにしました。暗号化設定が表示され、暗号化がオンになっていることが確認できるので安心です。

関連情報