任意のWindowsアプリケーションでのDLLのプリロードの危険性について、マイクロソフト社が認めたという発表がありましたが、これは何年も前に複数のWindows以外のOSを搭載したシステムで悪用されたLD_PRELOADの脆弱性のことを想起させます。新種の脆弱性ではありませんが、最近のLNKファイルのゼロデイの脆弱性は、システムに組み込まれた正当な手法を使って信頼できないコンポーネントをロードできるという、おそらくそれまでで最も大きな欠陥でした。
LNKの脆弱性の利用の問題が発生した際、よく聞かれた質問のひとつが、バッファオーバーフローがなければ脆弱性の利用は不可能だったのではないかということでした。最近まで、セキュリティ専門家は、ゼロデイの脆弱性に対し、ファジングやバッファオーバーフロー対策を重要視していました。しかし、一般的なOS、アプリケーションにあるこれらの設計上の欠陥により、バッファオーバーフローやメモリの破損を利用しなくても、正規の方法を使用して、信頼できないソースからのライブラリ、実行ファイルをロードすることができます。
元のアドバイザリでは、iTunesが例として使われていましたが、多くのアプリケーションに同じ欠陥が存在する可能性が高いといえます。攻撃者は、アプリケーションによって開かれると外部のライブラリが無防備にロードされる文書またはメディアファイルを、遠隔地に植え付けます。ファイルが開かれると、悪質なライブラリが遠隔地からロードされます。
以下の例では、マイクロソフト社のアプリケーションがネットワークドライブであるQ:\から「screen」という名前の文書ファイルをロードし、同じQ:\ドライブで必要なDLLを探し出そうとしています。
DLLはネットワークドライブであるQ:\からロードされて実行されます。
McAfee VirusScan Enterpriseのユーザーは、信頼できないファイルの格納場所から「*.dll」、「*.ocx」にアクセスできないようにする保護ルールを設定、テスト、利用することができます。ただし、このような場所で文書を共有することはあっても、プログラムライブラリをロードする可能性はあまりありません。
この例では、NOTEPAD.EXEがネットワークドライブからDLLを読み取ろうとしますが、操作は阻止されます。
注:このルールにより、悪質でないアプリケーションもネットワークドライブから実行できなくなる可能性があります。環境ごとにテストしてください。
McAfee Labsは、この手法の利用が実際に行われていないか厳重に監視し、調査で得られた詳細な情報を提供していきます。
※本ページの内容はMcAfee Blogの抄訳です。
原文:Insecure Library Loading in OS and Applications