UNARJ32.DLL は, ARJ 形式に対応した圧縮・展開等の書庫操作を行うライブラリーです。 UNARJ32.DLL にはディレクトリー・トラバーサルの脆弱性が存在します。
UNARJ32.DLL は, 『統合アーカイバ』の API 仕様に準拠した, ARJ 形式書庫に対する圧縮・展開といった操作を行うためのライブラリーです。 UNARJ32.DLL は主に圧縮・展開等を行うアーカイバーソフトウェアから呼び出される形で使用されますが, ディレクトリー・トラバーサルの脆弱性が含まれており, 細工された書庫を読み込むことで, アプリケーションやユーザーが指定・想定していない場所へファイルの展開される可能性があります。
アプリケーションやユーザーが指定・想定していない場所へファイルの展開される可能性があります。
最新版 (Ver 0.55b 以降) へバージョンアップを行ってください。 [ダウンロード]
本脆弱性は, ARJ 書庫の仕様が "../../path/file.bin", "/path/file.bin" といった, 基準ディレクトリーより遡るものや絶対パスを, 正規のものとして許可していることにより発生するものです。
主に問題となるのは, "../../path/file.bin" といったパスとシステム API の仕様が組み合わさることで脆弱性に繋がることです。 例えば, この相対パスと "C:/TMP/" の基準ディレクトリー (展開先) がを組み合わせた "C:/TMP/../../path/file.bin" というパスは, 途中でルートを越えて遡ってしまうことから, 本来はエラーとすべきものです。 しかし, Windows は, 余剰な "../" を無視することで "C:/path/file.bin" という正常なパスとして, そのまま無警告で扱ってしまいます。
この仕様を利用することで, "../../~/../path/file.bin" といった多数の "../" を含んだパスを使用することにより, ユーザー (若しくはアプリケーション) が, どこを展開先として指定していたとしても, 必ず固定である "/path/file.bin" の場所に展開される…といった攻撃手段が成立します。
絶対パスについては, 過去よりバックアップ等の用途で普通に使われてきたものですが, 上記のケースと同様の攻撃手段として利用が可能である事実から, 脆弱性として認識されるようになったものです。 (もちろん, 絶対パスを必要とするケースもありますので, 全面的に否定されているわけではありません。) ちなみに, ARJ がマイナーという理由もあって一般には知られていないようですが, 絶対パスについては元々 "-jf0" を指定することにより抑制が可能です。