### 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]

■ 『7-Zip 4.57』について  <Feb.10,2008>

 2005 年 8 月 5 日に公開された「7-Zip 4.26 beta」において, 新たに LZH 書庫の展開がサポートされましたが, 現在までの版については若干制限の存在するものとなっています。

 このページでは, 7-Zip 4.26 beta 以降での制限等について簡単に記述してあります。 4.57 までの時点では状況に変化がありません。


●属性について

 現在の版では, 基本ヘッダーの情報しか扱っていないため, h0 形式以外の書庫については属性の復元が行われません。 展開時には常にアーカイブ属性のみがセットされます。 この点が 7-Zip で LZH 書庫を扱う場合について最大の制限となっています。

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

 基本的に, 基本ヘッダーに記録されている情報のみ扱われますが, 7-Zip が Linux にも対応していることから, 例外的に LHa for UNIX の更新日時ヘッダー (識別子 0x54) が読み込まれます。 従って, 多くのツールと同様, 更新日時のみ復元が行われ, h2 形式ヘッダー未満の書庫については, 通常は NTFS ファイルシステムであっても ftime 形式 (2 秒単位) でタイムスタンプが扱われます。

 この辺りについては, オリジナルの LHA.EXE を含めた多くのアプリと同様となっていますので, 大きな問題は発生しないものと思われます。

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

 2GB 以上 4GB 未満のファイルについては正常に扱われます。 4GB を超えるものについては UNLHA32.DLL の独自ヘッダーに対応していないことから正常に扱われません。

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

 正常に扱われますが, タイムスタンプは多くのアプリと同様に復元されません。

●圧縮形式について

 lh0 / lh4~lh7 / lz4 形式が扱えます。 その他の形式については, 扱うことができません。 その場合はスキップログが出力されますが, 現在の版では, 展開できなかった当該メンバーの残骸が残ってしまいます。

 メソッド ID と実際のメソッドが異なるメンバー (lh6 と lh7 形式メソッドの区別されていなかった時期が存在するため, そのような書庫が存在します。) の主なものについては, 以下のとおりです。 よほど特殊なものでない限りは展開が可能です:

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

●書庫形式について

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

●ヘッダー CRC チェックについて

 7-Zip では基本ヘッダーの SUM チェックしか行われません。 従って, h2 形式の全て, 多くの h1 形式, そして (Linux 上などで作成された) h0 形式の書庫については, ヘッダー改竄・破損の確認が行われません。 攻撃書庫の多くはヘッダー改竄を伴っていますので, そういった意味では危険性が高いと言えます。

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

 7-Zip 共通のルーチンを使用していることから, 絶対パスをもつものや, 親ディレクトリーを示す ".." のパス情報をもつメンバーについては, 指定したディレクトリー配下へ展開が行われるように調整が行われます。

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

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

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

不正内容  結果
絶対パス
(/WORK/Test.TXT)
冒頭の "/" を無視して, 展開先の配下へ展開する。
不正パス 1
(../../WORK/Test.TXT)
"../" のパス情報を無視して, 展開先の配下へ展開する。
不正パス 2
(D/../../D/Test.TXT)
"../" のパス情報を無視して, 展開先の配下へ展開する。
不正パス 3
(D/.../Test.TXT)
そのまま展開しようとして失敗。 プラットフォームによっては ".." のパス情報として扱われてしまうので注意。
オーバーフロー
(Long~700字~.txt)
OS で扱える範囲であれば展開される。
拡張子偽造
(Test.c ←40字→ .exe)
関連付け実行しようとした際には, 拡張子偽造ファイルとしてエラーとなる。 展開は可能。
偽造を伴わない実行形式ファイルについては, 確認無く実行されるので多少注意が必要。
[→Page top] [→Home]