公開日:2010/08/27 最終更新日:2015/10/21

JVNTA10-238A
Microsoft Windows における DLL 読み込みに関する脆弱性
緊急

概要

Microsoft Windows が提供する DLL 検索パスアルゴリズムの実装に起因し、起動時に、本来読み込むべきでない細工された DLL を読み込む可能性のあるプログラムが存在します。

影響を受けるシステム

Windows プラットフォーム上で DLL を使用して動作するプログラムが影響を受ける可能性があります。

なお、プログラムに脆弱性が存在するか否かは、プログラムがどのように DLL を読み込むかによります。

影響を受けるシステム関しては、JVNVU#707943VU#707943 のベンダ情報をご確認ください。

詳細情報

Microsoft Windows は、プログラム実行時にライブラリモジュールを読み込むダイナミックリンクライブラリ(DLL)に対応しています。
DLL は典型的にはプログラムの起動時にロードされます。また、プログラムが実行されている間に読み込まれたり、またアンロードされたりします。プログラムはいくつかの方法で DLL ファイルを読み込むことができ、Windows の提供する検索パスアルゴリズムに従って DLL ファイルを探します。

Windows はプログラムからの DLL 読み込みリクエストに対して、プログラムのカレントワーキングディレクトリ、Windows システムディレクトリ、プログラムがインストールされたディレクトリなどから必要な DLL を読み込みます。カレントワーキングディレクトリは、デスクトップや USB のようなリムーバブルストレージデバイス、Windows ファイル共有、WebDAV になることがあります。プログラムに関連付けられたファイルが開かれる時は、ファイルと同じディレクトリにある DLL ファイル が読み込まれる可能性があります。

攻撃者は、Window system ディレクトリやアプリケーションディレクトリに対して書き込むことはできませんが、ファイルを保存するために使用されるディレクトリや自らが用意したディレクトリへ細工した DLL を配置することで、その DLL をプログラムに読み込ませることができます。

このタイプの脆弱性に対する攻撃は「バイナリの植え付け (Binary Planting)」と呼ばれています。

想定される影響

攻撃者は細工した DLL をプログラムから利用される DLL と同じ名前で配置することによって、その DLL をロードしたプログラムの権限で任意のコードを実行することができます。

対策方法

最新の対策方法に関しては、JVNVU#707943 (日本語)や VU#707943(英語)をご確認ください。

参考情報

  1. US-CERT Vulnerability Note VU#707943
    Microsoft Windows based applications may insecurely load dynamic libraries

JPCERT/CCからの補足情報

JPCERT/CCによる脆弱性分析結果

謝辞

関連文書

JPCERT 緊急報告
JPCERT REPORT JPCERT-WR-2010-3301
JPCERT/CC WEEKLY REPORT 2010-09-01
CERT Advisory Technical Cyber Security Alert TA10-238A
Microsoft Windows Insecurely Loads Dynamic Libraries
CPNI Advisory
TRnotes
CVE
JVN iPedia

更新履歴

2010/09/01
詳細情報の誤記を修正しました。
2010/09/03
概要の修正、ベンダ情報を更新しました。
2014/01/29
影響を受けるシステム、対策方法のハイパーリンクを修正しました。
2015/10/21
ベンダ情報を更新しました