1: 2019/07/06(土) 02:34:22.48 ID:CAP_USER
「非再帰的ZIP爆弾」は10MBのファイルが281TBに膨らむ
https://gigazine.net/news/20190705-zip-bomb/
2019/7/5
GIGAZINE

画像:
https://i.gzn.jp/img/2019/07/05/zip-bomb/01.png


数十KBのZIPファイルに見えて解凍すると膨大なファイル容量を食う「ZIP爆弾(高圧縮ファイル爆弾)」は、ZIPファイルの中にZIPファイルを格納し、内側のZIPファイルの中にさらにZIPファイルが……という入れ子構造を用いることで圧縮アルゴリズムの限界をうまく回避していますが、それゆえに多くのアンチウイルスソフトで対策されています。この弱点を乗り越えた「非再帰的ZIP爆弾」は、展開後のサイズこそ高効率で作られた再帰的ZIP爆弾にかなわないものの、わずか10MBから281TBへ2800万倍に膨らみます。

ZIPの圧縮で一般的に用いられているアルゴリズムは「Deflate(デフレート)」と呼ばれるもので、圧縮・展開速度の速さが特徴的です。圧縮率が最高で1032:1(約0.096%)という点はZIP爆弾を作る際の「足かせ」となっており、この制限を回避するため、ZIP爆弾ではZIPファイル内にZIPファイルを格納する入れ子構造を利用して、入れ子1つごとに1032倍にできるだけ近い圧縮率を得ることで、巨大ファイルを極小に見せています。

たとえば、有名な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%。

「lib 0.zip」には、さらに「book 0.zip」から「book f.zip」というZIPファイルがあります。こちらは元サイズが29,446バイト(30KB)、圧縮後が2,084バイト(2.1KB)で、圧縮率7.1%。

続きはソースで
ダウンロード (2)


引用元: 【IT/ウィルス】「非再帰的ZIP爆弾」は10MBのファイルが281TBに膨らむ[07/06]

スポンサーリンク
3: 2019/07/06(土) 02:48:21.91 ID:e8eG/trn
ZIP爆弾ねぇ。懐かしい気がする。
真っ当な解凍ソフトならそこそこ対策されてんじゃないかな?
対策と言っても空き容量チェックする程度の話だけど。

それより普通のZIP爆弾って入れ子構造だったの? 知らんかった。
しかもZIPってハードリンクみたいな事もできるのか。
まぁできるだろうね。FATみたいなのに位置が記されてるだろうし。

41: 2019/07/06(土) 15:23:29.04 ID:mt7f2ZT8
少しは>>3を読んでから書け

50: 2019/07/06(土) 18:38:34.08 ID:e8eG/trn
>>41
なんか勘違いしてるっぽいけど合ってるよ。
・ZIP爆弾は非再帰的と再帰的二種類ある
・非再帰的な方は昔からある
・記事では再帰的→非再帰的の順で説明している
・引っかかるのはウィルス対策ソフト。解凍ソフトの動作の話はしてない

なんか勘違いしてそうな点はこの辺かな。
読み違えてんじゃない?

51: 2019/07/06(土) 18:39:51.39 ID:e8eG/trn
>>50
訂正:昔からあるのは再帰的の方

4: 2019/07/06(土) 03:03:07.62 ID:L4LQv+hP
単色ビットマップで巨大サイズ作るイタズラ昔有ったよね。
手口としては懐かしい感じw

6: 2019/07/06(土) 03:33:06.71 ID:K48Ls8FS
うちの会社で画像圧縮して復元すると巨大になるやつ作ってるアホいたなあ。
福島出身の陰気な野郎だったよ

7: 2019/07/06(土) 03:34:23.66 ID:eMKTeOzN
これでハードディスクが一瞬にして満杯になって作動不能になるわけだな。

8: 2019/07/06(土) 03:38:37.56 ID:MPiotHvc
アウトルックででかいファイル添付するバカのせいでメールサーバー止まったことがあったな

48: 2019/07/06(土) 17:30:23.85 ID:o09QgzYs
>>8
メールのサイズで弾かない設定にしてるのが悪い。

9: 2019/07/06(土) 03:46:04.04 ID:sjPV4wZp
xlsx とか docx とか、2007 以降の Office ファイルって、実態は zip ファイルなんだよな
>>1 を悪用すると、取引先に嫌がらせができちゃうw
嫌がらせどころじゃなく Windows が起動できなくなる破壊活動だけど

10: 2019/07/06(土) 03:57:26.49 ID:wBnTbA2Z
素zipはソリッド圧縮出来ないだろ
なんでカーネルファイルなんて手法が出てくるんだ?

11: 2019/07/06(土) 04:09:01.26 ID:uJHLNBXY
えげつない

13: 2019/07/06(土) 06:40:13.35 ID:sA9+Al5+
7zipのソフトは対策されてる?

14: 2019/07/06(土) 06:59:30.04 ID:2WMUeQXz
>>1
あまり使わないキャッシュファイルの収納に便利?
素数10億まで書き出したのが500MBあり
1000憶ぐらいまでファイルに書き出しておこうと思ってちょうど困ってたんだ
これでかすぎるぞ とな

素数の性質は大きな素数は存在するが濃度が薄い(大きな素数を追記しても
その数が少なく見積もれるのでたぶん1G ~2GB ぐらい1000億まで収まる可能性がある)
しかし1GBとか使わないときにはサイズ撮りすぎ

23: 2019/07/06(土) 10:12:15.76 ID:910UHNg7
>>14
ランダムなデータは圧縮効率が悪いが、素数はどうなんだろう

66: 2019/07/08(月) 09:35:03.09 ID:JIVwyeZ/
>>23
素数は知らんが手持ちの円周率データの場合こんな感じ

テキスト 7.5TB
バイナリ 3.16TB

テキストを bzip2 で圧縮したもの 3.23TB

17: 2019/07/06(土) 07:30:42.02 ID:qLr2gT98
今時こんなの対策してないソフトあるん?

19: 2019/07/06(土) 08:33:21.96 ID:7JyKRXAM
Win95時代に白一色のビットマップファイルで同じようなことをやったな。

20: 2019/07/06(土) 09:15:45.32 ID:IVRM4rOZ
しかし、展開先もどうせ仮想ディスクなのであった。

21: 2019/07/06(土) 10:08:26.86 ID:5WJD2H0H
ディスクの容量って2種類あって、
一つはGBとかの分かりやすい容量
もう一つはファイル数を扱う容量
ファイル数を何百万個扱えるかは4KB、8KBといったフォーマット時のブロック単位で変わってきて、専門用語ではi-node数が2つ目の容量になる
1ファイルあたり、1ブロック数(4KB)より少ない容量で大量のファイルを用意すると、i-nodeが枯渇してディスク容量不足が発生する
Windowsならフォルダのインデックス作成で爆死するレベル
素人に作りやすいのは1個の巨大ファイルを高効率で圧縮できるバイナリファイルの作成だろうけど、この攻撃によるダメージは無いに等しいくらい簡単に復旧できる

22: 2019/07/06(土) 10:12:03.41 ID:CYTBsbOx
なんと迷惑なw

25: 2019/07/06(土) 10:16:20.96 ID:T+jwW1Mz
数列ならともかく素数の並びじゃPC的にランダムなデータじゃないの?

27: 2019/07/06(土) 10:36:31.21 ID:4LJJ/RbW
他人に嫌がらせするために情熱燃やせる連中とは関わり合いたくねえな

29: 2019/07/06(土) 11:30:27.90 ID:vUgIhzxr
中身を確認すればOK

31: 2019/07/06(土) 11:45:09.30 ID:AlU5bwwx
FAT32なワイ高みの見物

33: 2019/07/06(土) 12:28:22.59 ID:PwFGGGw1
32KBしか容量がなかったファミコン時代のテクニックみたいな話だなあ

34: 2019/07/06(土) 12:54:54.28 ID:XaFcmuQ0
要するに「ZIPでくれw」は危険だ、ということかな?w

35: 2019/07/06(土) 13:04:08.67 ID:JiRM0ybp
>>34
そこで「LZHでくれw」

36: 2019/07/06(土) 13:05:13.84 ID:iRgQEo/l
つうか 今時怪しいZIPファイルだなんて・・・

28: 2019/07/06(土) 11:27:06.12 ID:CS/lEhIg
300TBのHDD積んどけば問題ないな