JPCERTコーディネーションセンター(JPCERT/CC: Japan Computer Emergency Response Team Coordination Center)は4月23日、「JVNTA#90371415: WindowsカーネルドライバーのIOCTL処理におけるアクセス制御不備の脆弱性」において、サードパーティーのWindowsカーネルドライバーに脆弱性が存在するとして、注意を呼び掛けた。複数のWDF(Windows Driver Framework)および、WDM(Windows Driver Model)のカーネルドライバーに脆弱性が存在するとされる。
小誌では、この脆弱性の研究報告について、2023年11月6日に「Windowsドライバに脆弱性、悪用によりデバイスが完全に制御される恐れ | TECH+(テックプラス)」として報じている。
脆弱性に関する情報
脆弱性に関する情報は次のページにまとまっている。
影響
JPCERT/CCによると、脆弱性を含むカーネルドライバーによりファームウェアの消去や改ざん、権限昇格などにつながる事例が報告されているという。また、管理者権限を持つユーザーが脆弱性なドライバーをロードした場合、エンドポイント検出応答(EDR: Endpoint Detection and Response)などのセキュリティソリューションの無効化、ファームウェアレベルでのサービス運用妨害(DoS: Denial of Service)、ルートキットのインストールなどの可能性があるとしている。
カーネルドライバーの開発者向けの対策
JPCERT/CCはMicrosoftがカーネルドライバー開発者向けに公開しているガイダンス「windows-driver-docs/windows-driver-docs-pr/driversecurity/index.md at staging · MicrosoftDocs/windows-driver-docs · GitHub」の中から基本的かつ効果の高いものとして2つの対策を紹介している。その概要は次のとおり。
デバイスオブジェクトへのアクセス制限
デバイスオブジェクトへのアクセスを管理者に限定する。具体的にはドライバーのインストール設定ファイル(.inf)にセキュリティ記述子定義言語で指定するか、WdmlibIoCreateDeviceSecureまたはWdfControlDeviceInitAllocateなどのアプリケーション・プログラミング・インターフェイス(API: Application Programming Interface)を使用してドライバー内で明示的に指定する。
入力できる値の範囲を限定
IOCTLで受け付ける入力値の範囲を限定し、すべて検査する。ドライバーがメモリーマップドI/Oを使用する場合は、指定されたアドレスが有効な空間内に収まっているか確認する。MSR(Model-Specific Register)、CR(Control Register)などで指定されるレジスターインデックスなどについても同様。
ユーザー向けの対策
JPCERT/CCはユーザーが実施できる対策を3つ挙げている。その概要は次のとおり。
脆弱性の修正済みドライバーを使用
使用しているカーネルドライバーを確認し、既知の脆弱性を修正したドライバーを使用する。一般に公開されている情報だけではなく、ドライバーベンダーのリリース情報も確認する。
Windowsを最新の状態にアップデート
Microsoftはドライバーのブロックリスト「Microsoft が推奨するドライバー ブロックの規則 - Windows Security | Microsoft Learn」を公開している。Windows 11 2022 update以降ではデフォルトでこのリストに掲載されたドライバーのロードをブロックする。
サードパーティーの脆弱なドライバーリストを利用
Microsoftのドライバーブロックリストの更新頻度は低い。そのため、セキュリティ専門家の情報に基づいた脆弱なドライバーリスト「LOLDrivers」を活用する。
カーネルドライバーはWindowsのカーネルモードで動作するため、制限を受けずに仮想アドレス空間全体へアクセスできる(参考:「ユーザー モードとカーネル モード - Windows drivers | Microsoft Learn」)。そのため脆弱性が存在するとコンピューター上のあらゆる情報の窃取や改ざんにつながる可能性がある。
このようなドライバーを使用した攻撃はBYOVD(Bring Your Own Vulnerable Driver)攻撃と呼ばれ脅威となっている。脆弱性が存在しても一般ユーザーは容易に対処できないため、カーネルドライバーを開発するベンダーにはセキュリティを考慮した開発と確実なテストが望まれている。