ニュース

アンチウイルスソフトも乗っ取り可能。除去困難なコードを注入するゼロデイ脆弱性

同社がこの手法でNortonを改変したスクリーンショット

 イスラエルのセキュリティ企業Cybellumは20日(現地時間)、開発者むけ検証ツール「Microsoft Application Verifier」のゼロデイ脆弱性を利用し、OSの一部として悪意のあるコードを注入する手法「DoubleAgent」を公開した。標的となりうるシステムはXPから10までのWindowsシステムで、x86またはx64を問わない上、一度注入されたコードのセキュリティソフトによる除去は困難だとしている。

 Microsoft Application Verifierはネイティブコードの検証ツールで、アプリケーションの検証などに用いられるもの。Provider DLLと呼ばれるDLLをアプリの検証時、検証されるプロセスでロードする。このDLLのロードを悪用する手法がDoubleAgentだ。

 より詳細に言うと、悪意のあるコードを含んだDLLは特定のレジストリキーが登録されることでプロセスにロードされる。アンチウイルスソフトによっては自身のプロセスのレジストリが変更されることを防ぐ機能を持つものがあるが、新規のレジストリキーを作成し、さらにリネームするという手法を用いてこの保護を回避可能。同社のテストに用いられたすべてのアンチウイルスで回避が可能だとされる。

 また、Windowsがプロセスを実行する初期段階では、通常はntdl.dllとNS.exeがロードされ、その後にファイルシステムやプロセスに関わるWindows APIの一部であるkernel32.dllがロードされる。悪いことに、Application Velifierの仕様上、Provider DLLはこのkernel32.dllのロードよりも前にロードされてしまう。つまり、システムの他のどのdllよりも早くロードし、プロセスのコントロールを奪い去ることが可能になってしまうということだ。

 よって、悪意のあるコードを含んだProvider DLLを用意し、Application Verifier経由で任意のプロセス、例えばセキュリティソフトにロードすれば、セキュリティソフトに任意の振る舞いをさせることが可能になってしまう。

 また、セキュリティソフトの多くはコードのレビューを受け、認証された特権的なプロセスとなっている。そのため、こうしたプロセスが乗っ取られた際、暗号化されたファイルの復元など通常では不可能な処理まで可能とするため、被害は甚大となる可能性を指摘する。

 同社によると、大手のセキュリティベンダーに対してこの脆弱性を報告を完了し、各社がすでに対応を始めている。一方で、今後この脆弱性が悪用されることはなくなるものの、一度悪意のあるコードを注入された場合の除去は困難だとしており、Windows XPといった古いOSは、パッチによる修正も行なわれないまま放置されることになる。