Microsoft Windows における DLL 読み込みには、本来プログラムが読み込むべき DLL ではなく、攻撃者が用意した DLL を読み込んでしまう脆弱性が存在します。
攻撃者が用意した同じ名前の DLL をアプリケーションがロードしてしまった場合、任意のコードを実行される可能性があります。
Windows 上で外部 DLL をロードして動作するプログラムの殆どが影響を受ける可能性があります。
独自の DLL の検索アルゴリズムで DLL の検索方法を変更し、ロード場所を制限しました。
Windows のシステムライブラリは System フォルダ上の DLL のみがロードされ、アーカイバ DLL は [ユーザ側で設定されたアプリケーションパス] → [System フォルダ]
→ [Explzh の存在するフォルダ] の順に検索され、ロードするように対策しました。カレントフォルダや、環境変数の PATH は無視しますのでご注意ください。
Explzh v.5.65 以前をお使いの方は、
最新版へアップデート してください。
2013/10/02 追記
なお、この問題に対して、Explzh の最新バージョンでも、独自の DLL の検索アルゴリズムで DLL をロードするようにしております、最新版についても対策は有効かと存じます。
何かご質問等がございましたらご連絡ください。
2016/10/03 追記
Explzh Ver.7.35 より、更に DLL をロードする制限が絞られて、[アプリケーションパス(*1)] → [System フォルダ]、また、特定の DLL は特定のフォルダでしかロードできないように対策されています。SFX モジュールにおいては [System フォルダ] 以外の DLL をロードしません。
Explzh 本体、及び、関連ファイル(特に自己解凍書庫)は「DLL 読み込みに関する脆弱性」の対策のされている、 Ver.7.35 (2016/07/13 リリース) 以降のバージョンをお使いください。
[*1]アプリケーションパスを設定する場合のレジストリの例
7z.dllを除く、Archive DLL の存在場所をアプリケーションパスで指定できます。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Explzh.exe]
@="C:\\Program Files\\Explzh\\Explzh.exe"
"Path"="C:\\Program Files\\Explzh\\"
アプリケーションパスについては詳しい説明は割愛いたします。理解できる方のみ、自己責任で設定をお願いします。(注:DLL 自動更新はアプリケーションパスを無視しますので、アプリケーションパスを指定した場合は DLL 自動更新は手動で行ってください。)