|
||||||||||||||||||||||||||||||||||||||||
|
MHSVI#20100824:
|
LZH 書庫 | UNLHA32.DLL |
7z 書庫 | 7-ZIP32.DLL |
ZIP 書庫 |
UNZIP32.DLL, ZIP32J.DLL, ZIP32.DLL, SFX32GUI.DAT。 なお, ZIP 書庫を 7-ZIP32.DLL で扱う設定となっている場合は これらについては必要なし。 |
CAB 書庫 | CAB32.DLL |
TAR 書庫 | TAR32.DLL, BZ2LIB.DLL |
BGA 書庫 | BGA32.DLL |
ISH ファイル | ISH32.DLL |
ARJ 書庫 | UNARJ32.DLL |
GCA 書庫 | UNGCA32.DLL |
RAR 書庫 | UNRAR32.DLL, UNRAR.DLL |
その他 | B2E32.DLL |
例外 | CTL3D32.DLL |
Safe DLL Search Mode の存在しない, Windows XP (非 SP1 以降。), Windows 2000, Windows NT, Windows Me を始めとする Win9x 系 OS については, 『統合アーカイバ』 DLL のみではなく, LHMelt がインストールされているディレクトリー上に存在しない全てのシステムファイル (.DLL, .SYS, .DRV, .CPL, etc..., LHMelt から間接的に呼び出される可能性のある全てのもの。) が該当します。 従って, これら OS の使用はお勧めしません。
本脆弱性は, LHMelt が『統合アーカイバ』 DLL を任意のディレクトリー上から読み込めるように作成されているため発生します。 LHMelt は対話型のアプリケーションですが, 起動時スイッチを指定してコマンドライン的に使用されることがあり, また, ユーザーによって DLL のインストール先が様々に異なるため, LHMelt 側で明示的に読み込み元を指定してのロードは行っていません。 (カレントディレクトリーを利用するケースもあったことから, SetDllDirectory() API による設定も行っていません。)
読み込み元を明示的に指定していない場合, Windows は定められた優先順位に従って複数のディレクトリーを検索して DLL を読み込みます。 例えば Safe DLL search mode が有効の場合は次のようになります:
この時に, カレントディレクトリーが検索対象となっているため, 『統合アーカイバ』 DLL と同じ名前の細工された攻撃用 DLL と同じディレクトリー上に書庫など任意のファイルを置き, 当該書庫等を関連付けなどを利用して起動と同時に LHMelt に開かせることで, 攻撃用 DLL を読み込ませることが可能となります。
DLL の読み込み時には必ず初期化が行われることから, 初期化ルーチンにおいて LHMelt に継承されているユーザー権限の範囲で任意のコードを実行することが可能となります。 初期化ルーチンを利用できることから, 細工された攻撃用 DLL が『統合アーカイバ』の仕様を満たしている必要はありません。
今回の脆弱性に対応した Ver 1.65a 以降の LHMelt では, カレントディレクトリーからの DLL 等のロードが禁止されることから, 「他のプロセスにフック等で接触し監視等を行うソフト」がカレントディレクトリーからのロードに依存していた場合, 当該ソフトが LHMelt への接触に失敗し, LHMelt の起動時等に「○○が見つからなかったため、 このアプリケーションを開始できませんでした」の警告が表示される結果となります。
例えば, StarSoftcomm の StarCenter は常駐した上で他のプロセスを監視していますが, 「カレントディレクトリーからのロード」に依存しているため, Ver 1.65a 以降の LHMelt への接触に失敗し, 結果として LHMelt の起動時に「SCFunc.dll が見つからなかったため、 このアプリケーションを開始できませんでした」が表示されます。 「同一環境 (状況) で常に」でない辺りが困りものなのですが, 当該ソフトについては, Adobe Air のインストーラーを使用した際に, 比較的多く同様の問題が発生しているようです。
StarCenter に限らず, 「○○が見つからなかったため~」が表示された場合は, その当該 DLL を使用しているソフトに「安全でないライブラリのロードにより、リモートでコードが実行される (マイクロソフト セキュリティ アドバイザリ 2269637)」の脆弱性が存在することになります。 特に, 他のプロセスを監視する類のソフトでは影響が甚大 (ソフトの性格からして, システム・管理者権限で動作, 若しくは それらの権限を取得可能な状況で動作している可能性が高い。) ですので, 可能であれば, 当該ソフトの更新や乗り換えを検討したほうが良いかもしれません。