1クロイツラス(宮城県) [US]2019/07/06(土) 10:36:18.27ID:LlPTBwZ00●?PLT(13121)
「非再帰的ZIP爆弾」は10MBのファイルが281TBに膨らむ
数十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%です。
https://i.gzn.jp/img/2019/07/05/zip-bomb/05.png
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)にまで膨らみます。
https://i.gzn.jp/img/2019/07/05/zip-bomb/06.png
元ファイルを10MBにすると、展開後サイズを元の2800万倍の281TBにまで増やせるとのこと。さらに、Zip64を用いると、
46MBのファイルを9800万倍の4.5PBにすることが可能。
この非再帰的ZIP爆弾は、ZIPコンテナ内のファイルを重複させることで、コピーを作ることなく複数ファイルに含まれる
圧縮率の高いカーネルを参照する仕組みとなっています。このため、入力サイズに比例して出力サイズが増大し、
「爆弾」が大きくなるほど圧縮率が向上するとのこと。
記事作成時点で、42.zipはアンチウイルスソフトが反応してダウンロードできないようになっていましたが、フィフィールド氏の
作った非再帰的ZIP爆弾ファイルには反応しなかったので、くれぐれも怪しいZIPファイルには気をつけてください。
26レインメーカー(東京都) [ニダ]2019/07/06(土) 10:56:44.98ID:LJjFXqlx0
こういう悪質な技術を良質に応用して、メールサーバーで弾かれる重たいファイルを軽いファイルとして送ったりできないの?