「主要形式書庫の作成に加え展開については多数の形式に対応し, 業務用途としてもフリーで使用可能」といった理由から, 利用が増えてきている (らしい) CubeICE の 0.3.0β が登場しましたので, 試してみました。
このページでは, CubeICE 0.3.0β での制限等について簡単に記述してあります。
●CubeICE が作成する書庫について
CubuICE は LZH 書庫の作成に対応していません。 一応念のため。 (^^;)
●属性について
笑えることに, CubeICE は LZH 書庫の属性情報を扱うことが出来ません。 h0~h2 の どの形式であったとしても, 属性情報については失われます。 恐らく属性拡張ヘッダーの存在を知らない上に, 基本ヘッダーの属性項目を未定義データーとして扱っているのでしょう。 h1 形式以降でもブランクではないのですけれどね。
●タイムスタンプについて
基本ヘッダーに記録されている情報のみ扱われますので, 多くのツールと同様, 更新日時のみ復元が行われ, h2 形式ヘッダー未満の書庫については, NTFS ファイルシステムであっても ftime 形式 (2 秒単位) でタイムスタンプが扱われます。
この辺りについては, オリジナルの LHA.EXE を含めた多くのアプリと同様となっていますので, 大きな問題は発生しないものと思われます。
●ファイルサイズについて
2GB 以上 4GB 未満のファイルについては正常に扱われます。 4GB を超えるものについては UNLHA32.DLL の独自ヘッダーに対応していないことから正常に扱われません。 基本ヘッダーに記録されている 32 ビットのサイズ情報に基づいて展開を行ってしまい, その結果エラーとなります。
●lhd 形式 (ディレクトリー) メンバーについて
正常に扱われますが, タイムスタンプは比較的多くのアプリと同様に復元されません。
●圧縮形式について
lh4 / lh5 / lh6 / lh7 形式が扱えます。 その他の形式については, 一覧表示は行えるものの扱うことはできません。 (エラーとなります。)
メソッド ID と実際のメソッドが異なるメンバー (lh6 と lh7 形式メソッドの区別されていなかった時期が存在するため, そのような書庫が存在します。) の主なものについては, 以下のとおりです。 展開に失敗した場合, 当該メンバーの残骸が残ってしまうことのある点に注意が必要となります:
メソッド (ヘッダー/実際)
|
結果
|
コメント
|
|
lh4/lh5
|
○
|
|
|
lh5/lh4
|
○
|
|
|
lh5/lh6
|
×
|
普通は展開できない。
|
|
lh6/lh5
|
×
|
普通は展開できない。
|
|
lh6/lh7
|
○
|
DJLHA を始めとした一時期のツールで作成される。
|
|
lh7/lh6
|
○
|
|
●書庫形式について
h0/h1/h2 形式が扱えますので, 通常, 問題は発生しないものと思われます。
●ヘッダー CRC チェックについて
CubeICE では基本ヘッダーの SUM チェックしか行われず, ヘッダー CRC については読込が行われません。 従って, h2 形式の全て, 多くの h1 形式, そして (Linux 上などで作成された) h0 形式の書庫については, ヘッダー改竄・破損の確認が行われません。 攻撃書庫の多くはヘッダー改竄を伴っていますので, そういった意味では危険性が高いと言えます。
●「指定外の場所へファイルが展開されてしまう脆弱性」の問題について
絶対パスをもつものや, 親ディレクトリーを示す ".." のパス情報をもつメンバーについては, 不正なものとしてエラー扱いされるようになっています。 が, 情報に含まれているパス情報に基づいて, ディレクトリーの構築を行ってしまいます。 (展開先の配下となる部分のみ。)
●「バッファーオーバーフロー」の問題について
1000 文字といった長い名前をもったメンバー等の存在する書庫については, 不正書庫としてエラーが表示され扱われないようになっています。
これらの不正なパス情報等をもったファイルについては以下のとおりです:
|
不正内容
|
結果
|
絶対パス (/WORK/Test.TXT)
|
不正メンバーとしてエラー扱いとなる。
|
不正パス 1 (../../WORK/Test.TXT)
|
不正メンバーとしてエラー扱いとなる。
|
不正パス 2 (D/../../D/Test.TXT)
|
不正メンバーとしてエラー扱いとなるが, 展開先に "D" が複数作成されてしまう点に注意。
|
不正パス 3 (D/.../Test.TXT)
|
不正メンバーとしてエラー扱いとなるが, 展開先に "D" が複数作成されてしまう点に注意。
|
オーバーフロー (Long~700字~.txt)
|
不正書庫としてエラーとなる。
|
拡張子偽造 (Test.c ←40字→ .exe)
|
特に何も行わないので, アイコン等による確認が必要。
|