数十KBのZIPファイルに見えて解凍すると膨大なファイル容量を食う「ZIP爆弾(高圧縮ファイル爆弾)」は、
ZIPファイルの中にZIPファイルを格納し、内側のZIPファイルの中にさらにZIPファイルが……という入れ子構造を
用いることで圧縮アルゴリズムの限界をうまく回避していますが、それゆえに多くのアンチウイルスソフトで
対策されています。この弱点を乗り越えた「非再帰的ZIP爆弾」は、展開後のサイズこそ高効率で作られた
再帰的ZIP爆弾にかなわないものの、わずか10MBから281TBへ2800万倍に膨らみます。
A better zip bomb
https://www.bamsoftware.com/hacks/zipbomb/
■従来の「ZIP爆弾」
たとえば、有名なZIP爆弾に「42.zip」というファイルがあります。このZIPファイルは2種類存在して、古いバージョンは
展開時のパスが不要でファイルサイズが「42,374バイト」、新しいバージョンは展開時にパスが必要でファイルサイズが
「42,838バイト」。以下は古いバージョンのプロパティです。
中をのぞいてみると「lib 0.zip」から「lib f.zip」まで連番のつけられた16個のZIPファイルが格納されています。
ファイルの元サイズは34,902バイト(35KB)で、圧縮後は2,533バイト(2.6KB)。圧縮率は7.3%。
(略)
外側の42.zipから数えて5層目の「page 0.zip」を開くと、とうとう入れ子が終了して「0.dll」というファイルが登場しました。
元サイズは4,294,967,295バイト(4.3GB)で、圧縮後は4,168,158バイト(4.2MB)なので、圧縮率は実に0.1%です。
6層目には同じように0.1%にまで圧縮された巨大ファイルが他にも大量にあるので、もし42.zipを展開をすると、
わずか42KBのところから4,507,981,343,026,016バイト(4.5PB)ものファイルが出現することです。その膨張率は1060億倍。
■新開発された「非再帰的ZIP爆弾」
一方、デビッド・フィフィールド氏の提唱する非再帰的ZIP爆弾は、1層目に0.1%まで圧縮されたファイルが250個並んでおり、
元ファイルサイズは42.zipと同じ42KBですが、展開すると元の12万9000倍となる5,461,307,620バイト(5.5GB)にまで膨らみます。
元ファイルを10MBにすると、展開後サイズを元の2800万倍の281TBにまで増やせるとのこと。さらに、Zip64を用いると、
46MBのファイルを9800万倍の4.5PBにすることが可能。
この非再帰的ZIP爆弾は、ZIPコンテナ内のファイルを重複させることで、コピーを作ることなく複数ファイルに含まれる
圧縮率の高いカーネルを参照する仕組みとなっています。このため、入力サイズに比例して出力サイズが増大し、
「爆弾」が大きくなるほど圧縮率が向上するとのこと。
記事作成時点で、42.zipはアンチウイルスソフトが反応してダウンロードできないようになっていましたが、フィフィールド氏の
作った非再帰的ZIP爆弾ファイルには反応しなかったので、くれぐれも怪しいZIPファイルには気をつけてください。
引用元: ・10MBのzipファイルが281TBに膨張 「ZIP爆弾」が新開発される 現時点でアンチウイルスソフト反応せず
うるせぇよオッサン
おっさんのわりに無知だなおまえ
HDDが膨れて爆発するんだろ?
ヘルメット必要だな
昔ならzipでクレクレ言ってたけど、いまは無いわなぁ
超巨大BMPファイルか出てきてウンコ漏れた思い出
フラクタルって言いたかっただけだけど
ZIP爆弾添付したら女部長の悲鳴が聞こえた
あなたの心は汚れています
ふえるわかめって名前だったのに
何がZIP爆弾だよふざけんな
コメント
コメントを投稿