公開日:2010/08/26 最終更新日:2016/07/13

JVNVU#707943
Windows プログラムの DLL 読み込みに脆弱性

概要

Windows プログラムの DLL  読み込みには、攻撃可能な脆弱性が存在します。

影響を受けるシステム

DLL 読み込みを行う Windows プログラム全般が影響を受ける可能性があります。

詳細情報

ダイナミックリンク ライブラリ (DLL) は、プログラムのコンパイル時ではなく、実行時に読み込まれるソフトウエアコンポーネントです。プログラムは LoadLibrary() や LoadLibraryEx() を利用して DLL を読み込みます。読み込まれる DLL のパスが指定されていない場合、特定のディレクトリ群が順番に探索され、最初に見つかった DLL が読み込まれます。

このディレクトリ群の中には、プロセスのカレントディレクトリが含まれているため、攻撃者が操作できるディレクトリをカレントディレクトリとして LoadLibrary() が呼び出されている場合、攻撃コードが実行される可能性があります。

この問題は、攻撃者が操作できるディレクトリ内に置かれたファイルを閲覧した際に起こる可能性があります。読み込まれる DLL 名はプログラムによって異なります。

想定される影響

遠隔の第三者によって、プログラムを実行している権限で任意のコードを実行される可能性があります。

攻撃者は細工した DLL を USB ドライブやネットワークドライブ上に置くことで攻撃を行う可能性があります。

対策方法

アップデートする
影響を受けるプログラムを使用しているユーザは、各ベンダが提供するアップデートを適用してください。

システム管理者向けの回避策

  • Windows DLL 検索パス アルゴリズムを設定する
    マイクロソフトが提供する情報をもとに、不正なライブラリを読み込まないよう、レジストリの設定をしてください。
    なお、プログラムによってはこの設定により動作しなくなる可能性があります。また、レジストリを誤って変更すると、深刻な問題が発生することがあります。レジストリを変更する際には十分に注意してください。
  • WebClient サービスを無効にする
  • 外部向け SMB トラフィックをブロックする (139/tcp、139/udp、445/tcp、および 445/udp)
詳しくはマイクロソフト セキュリティ アドバイザリ (2269637) をご確認ください。

プログラム開発者向けの対策方法
  • プログラムが安全でない場所から DLL を読み込まないようにする
    LoadLibrary() を呼び出す前に空パス ("") を引数にして SetDllDirectory() を呼び出し、カレントディレクトリ内から DLL が読み込まれないようにしてください。対策方法の詳細については Microsoft が提供する Dynamic-Link Library Security および Another technique for Fixing DLL Preloading attacks をご確認ください。

参考情報

  1. US-CERT Vulnerability Note VU#707943
    Microsoft Windows based applications may insecurely load dynamic libraries
  2. IPA
    任意のDLL/実行ファイル読み込みに関する脆弱性の注意喚起

JPCERT/CCからの補足情報

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

謝辞

「Opera Software」に関する脆弱性情報は、以下の方が報告しました:
三井物産セキュアディレクション株式会社 吉川孝志 氏

関連文書

JPCERT 緊急報告
JPCERT REPORT
CERT Advisory TA10-238A
CPNI Advisory
TRnotes
CVE
JVN iPedia JVNDB-2010-001999

更新履歴

2010/08/27
対策方法、ベンダ情報を更新しました。
2010/08/31
pon softwareのベンダステータスが更新されました
2010/09/06
ベンダ情報にソフトウェア開発者向けガイダンス (抄訳) のリンクを追加しました。
2010/10/12
ベンダ情報を更新しました。
2010/10/13
Schezoのベンダステータスが更新されました
2010/10/13
関連文書を更新しました。
2010/10/14
pon softwareのベンダステータスが更新されました
2010/10/21
寺尾 進のベンダステータスが更新されました
2010/10/22
フェンリル株式会社のベンダステータスが更新されました
2011/01/21
参考情報に IPA 注意喚起へのリンクを追加しました。
2011/01/21
Lunascape株式会社のベンダステータスが更新されました
2011/01/21
関連文書に「DLL プリロード問題の対策ガイダンス」へのリンクを追加しました。
2011/03/30
日本電気株式会社のベンダステータスが更新されました
2011/04/28
日本電気株式会社のベンダステータスが更新されました
2011/06/24
日本電気株式会社のベンダステータスが更新されました
2011/07/29
日本電気株式会社のベンダステータスが更新されました
2011/10/21
日本電気株式会社のベンダステータスが更新されました
2011/11/15
日本電気株式会社のベンダステータスが更新されました
2014/05/27
ベンダ情報にリンクを追加しました。
2016/07/13
Opera Softwareのベンダステータスが更新されました。謝辞を追加しました。