### Micco's Home Page ### Welcome to Micco's page!!
Sorry, but this web page is written in Japanese.
<English>
■ 更新情報
■ このWebページについて
■ お知らせ
■ ダウンロード
■ DLL のインストール方法
■ SFX の設定例
■ いろいろ
対応ブラウザー
[Internet Explorer] [Firefox] [Opera] [Sleipnir] [Safari] [Google Chrome]
連絡先:Micco
[e-mail]
[→Home]

■ 『WinZip 11.2』について  <Aug.25,2008>

 2008 年 7 月 30 日に公開されたマイナーリリースの「WinZip 11.2」では LZH 書庫への対応が行われ, それまでと異なり WinZip 単体で LZH 書庫の作成・展開が行えるようになりました。

 このページでは, WinZip 11.2 での制限等について簡単に記述してあります。


●WinZip が作成する書庫について

 WinZip が作成する書庫については特に制限は存在しません:

  • 作成される書庫は h2 形式ヘッダーです。 従って, 書庫自体の仕様としては特に問題となる点は存在しません。 展開時と異なりタイムスタンプは ちゃんと time_t の情報 (奇数秒が有効。) でヘッダーに記録されます。

●属性について

 全て (読み込み, アーカイブ, 不可視, システム) 正常に記録・復元されます。

●タイムスタンプについて

 展開処理における内部データーが ftime 形式によっているのか, h2 形式ヘッダーであっても ftime 形式 (2 秒単位) でタイムスタンプが扱われ, 奇数秒の情報が失われてしまいます。 ただし, 切り上げ処理が行われますのでタイムスタンプ比較の問題は発生しません。 更新日時以外は扱われません。

●ファイルサイズについて

 2GB 以上 4GB 未満のファイルについては正常に扱われます。 4GB を超えるファイルについては正常に扱えませんが, さらに, メンバーのサイズが 4GB を超えた場合は書庫自体を開くことができなくなります。

●lhd 形式 (ディレクトリー) メンバーについて

 lhd メンバーを扱うことはできません。 通常あり得ませんが, lhd メンバーのみで構成された書庫を扱おうとした場合, 書庫は開かれるものの何も一覧されないことになります。

●圧縮形式について

 lh0~lh7 / lz4 / lzs 形式が扱えます。 その他の形式 (独自仕様のもの。) については扱うことができません。 対応していない形式の場合は当該メンバーが単純に無視されます。 lz5 形式については, 後処理に問題があるのか展開自体は行えるもののエラー扱いとなってしまいます。 lh2 / lh3 / lzs といったマイナーな形式にも対応している点が WinZip 11.2 の特徴と言えます。

 メソッド ID と実際のメソッドが異なるメンバー (lh6 と lh7 形式メソッドの区別されていなかった時期が存在するため, そのような書庫が存在します。) の主なものについては, 以下のとおりです。 展開に失敗した場合, 当該メンバーの残骸が残ってしまうことのある点に注意が必要となります:

メソッド
(ヘッダー/実際)
結果  コメント
lh4/lh5 ×
lh5/lh4
lh5/lh6 × 普通は展開できない。
lh6/lh5 × 普通は展開できない。
lh6/lh7 × DJLHA を始めとした一時期のツールで作成される。
lh7/lh6

●書庫形式について

 h0/h1/h2 形式が扱えますので, 通常, 問題は発生しないものと思われます。

●「指定外の場所へファイルが展開されてしまう脆弱性」の問題について

 絶対パスをもつものについては, 指定したディレクトリー配下へ展開が行われるように調整が行われます。 それに対して, ".." のパス情報をもつメンバーについては, 警告が行われるものの変換等は行われません。 従って, ユーザーが安易な指示を行った場合は攻撃が成立してしまいます。 さらに, ユーザーが当該メンバーの処理を拒否したとしても, 攻撃メンバーが意図した攻撃先でのフォルダー作成が行われてしまいます。

●「バッファーオーバーフロー」の問題について

 1000 文字といった長い名前をもったメンバー等の存在する書庫については, 一覧表示は行えますが展開されない (エラーログが出力される。) ようになっています。

 これらの不正なパス情報等をもったファイルについては以下のとおりです:

不正内容  結果
絶対パス
(/WORK/Test.TXT)
冒頭の "/" を無視して, 展開先の配下へ展開する。
不正パス 1
(../../WORK/Test.TXT)
書庫読込時及び展開時に "../" が含まれている点についての警告が行われるものの, ユーザーが「はい」 (要は展開。) を指示した場合は, 攻撃メンバーが意図している "C:/WORK/Test.TXT" として展開されてしまう。
展開を指示しなかった場合も "C:/WORK" が作成されてしまう点に注意。
不正パス 2
(D/../../D/Test.TXT)
書庫読込時及び展開時に "../" が含まれている点についての警告が行われるものの, ユーザーが「はい」 (要は展開。) を指示した場合は, 攻撃メンバーが意図している "C:/D/Test.TXT" として展開されてしまう。
展開を指示しなかった場合も "C:/D" が作成されてしまう点に注意。
不正パス 3
(D/.../Test.TXT)
書庫読込時及び展開時に "../" が含まれている点についての警告が行われるものの, ユーザーが「はい」 (要は展開。) を指示した場合は そのまま展開しようとして失敗。 プラットフォームによっては ".." のパス情報として扱われてしまうので注意。
指示や処理結果にかかわらず "C:/TMP/D"といった感じでフォルダーが作成されてしまう点に注意。
オーバーフロー
(Long~700字~.txt)
OS で扱える範囲であれば展開される。
拡張子偽造
(Test.c ←40字→ .exe)
関連付け実行しようとした際には,拡張子偽造の有無にかかわらず実行形式ファイルとして警告が行われる。 展開は可能。
[→Page top] [→Home]