RSS プロジェクト・ゼロ
フォロー
Windowsのバグクラス:IDispatchを用いたトラップされたCOMオブジェクトへのアクセス
Google Project Zeroの研究者であるJames Forshaw氏は、DCOMや.NET Remotingなどのオブジェクト指向リモート処理技術における「トラップされたオブジェクトのバグクラス」について論じています。これらの技術は、プロセスやセキュリティ境界を越えるオブジェクト指向インターフェースの開発を可能にしますが、この柔軟性には、権限昇格やリモートコード実行の可能性など、欠点もあります。リモート化できるすべてのオブジェクトが安全にリモート化できるわけではなく、XMLライブラリなど、XSLTドキュメントのコンテキストで任意のスクリプトコードを実行できるオブジェクトもあります。XMLドキュメントオブジェクトが境界を越えてアクセス可能になると、クライアントはサーバープロセスのコンテキストでコードを実行できるようになります。このバグクラスを招くシナリオには、安全でないオブジェクトを不注意に共有すること、非同期マーシャリングプリミティブを使用すること、オブジェクトの参照とインスタンス化のための組み込みメカニズムを悪用することなどが含まれます。例えば、Windowsランタイムライブラリは、既存のXML DOM Document v6 COMオブジェクトにコードを追加することでバグを導入し、ランタイム固有のインターフェースを公開し、悪意のあるクライアントが古いIXMLDOMDocumentインターフェースをクエリしてXSLTスクリプトを実行できるようにしました。もう一つの例として、FileInfoとDirectoryInfoの.NETクラスがあります。これらは値と参照の両方でマーシャリングでき、サーバーのプロセスでオブジェクトの新しいインスタンスを作成するために使用できます。攻撃者は、オブジェクトのシリアル化されたフォームをサーバーに送信することでこれを悪用できます。サーバーはオブジェクトの新しいインスタンスを作成し、その後、参照によって攻撃者にマーシャリングされた作成されたオブジェクトを読み返します。最後に述べられているシナリオは、予期しないオブジェクトを作成するために、オブジェクトの参照とインスタンス化のための組み込みメカニズムを悪用することです。例えば、COMでは、攻撃者はCoCreateInstance APIを使用してサーバーのコンテキストで任意のCOMオブジェクトを作成し、それをクライアントに返すことができます。これは、サーバーで作成されたXML DOM Documentオブジェクトを取得し、参照によってクライアントにマーシャリングされた後、サーバーのコンテキストで任意のコードを実行するために悪用される可能性があります。これらのシナリオは、オブジェクト指向リモート処理技術を使用する際のセキュリティへの影響を慎重に検討し、安全なオブジェクトのみをセキュリティ境界を越えて共有することを保証することの重要性を強調しています。