DoubleFetch ルール (wdm)
DoubleFetch 規則は、ドライバーが IRP を介してユーザー空間に渡されるバッファーに安全にアクセスすることをチェック重要なセキュリティ規則です。 ドライバーとユーザー モード コンポーネントの間でデータを安全に送信する適切な方法については、 「バッファー I/O もダイレクト I/O も使用しない」 を参照してください。
ドライバーは、 「データ バッファーにアクセスする方法」 で説明されているガイドラインとベスト プラクティスに 従って、データ バッファーにアクセスする必要があります。
このルールは、ユーザー モードのメモリ ポインターからのダブル フェッチをチェックします。 ユーザー モード メモリの二重カーネル モード アクセスは、競合状態のセキュリティの問題につながる可能性があります。 ユーザー モード データにアクセスする場合、カーネル モード コードでは、ユーザー モード データのコピーをローカルに作成し、ユーザー モード データに複数回アクセスしないようにする必要があります。 これを行わないと、"ダブル フェッチ" と呼ばれる一種の問題が発生します。この問題は、データが最初にアクセスされた後に変更される可能性があります。
この規則は、Windows 10 WDK ビルド 20236 以降で使用できます。 この規則は、 WDM と 汎用 ドライバーの種類でのみ使用できます。
ドライバー モデル: WDM、汎用
テスト方法
コンパイル時:
静的ドライバー検証ツール を実行し、 doublefetch 規則を指定します。
コードの分析を実行するには、次の手順 (Windows ドライバーで静的ドライバー検証ツールを使用して欠陥を見つける) を使用します。
詳細については、 「静的ドライバー検証ツールを使用してドライバー の欠陥を見つける」を参照してください。