【脅威】新手のウィルス「非再帰的ZIP爆弾」がマジでヤバすぎる・・・怪しいZIPファイルには要注意!!

トレンド

zip00.JPG

1: 一般国民 ★ 2019/07/06(土) 02:34:22.48 ID:CAP_USER

https://gigazine.net/news/20190705-zip-bomb/
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%。

外側の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億倍。

ただし、これは「再帰的な展開が行われる実装なら」という前提が必要で、最上位層しか展開されない場合、展開後サイズはわずかに558,432バイト(558KB)で、元の13.2倍にしかなりません。

一方、デビッド・フィフィールド氏の提唱する非再帰的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ファイルには気をつけてください。

11: ニュースソース検討中@自治議論スレ 2019/07/06(土) 04:09:01.26 ID:uJHLNBXY

えげつない
22: ニュースソース検討中@自治議論スレ 2019/07/06(土) 10:12:03.41 ID:CYTBsbOx

なんと迷惑なw
4: ニュースソース検討中@自治議論スレ 2019/07/06(土) 03:03:07.62 ID:L4LQv+hP

単色ビットマップで巨大サイズ作るイタズラ昔有ったよね。
手口としては懐かしい感じw
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

しかし、展開先もどうせ仮想ディスクなのであった。
7: ニュースソース検討中@自治議論スレ 2019/07/06(土) 03:34:23.66 ID:eMKTeOzN

これでハードディスクが一瞬にして満杯になって作動不能になるわけだな。
9: ニュースソース検討中@自治議論スレ 2019/07/06(土) 03:46:04.04 ID:sjPV4wZp

xlsx とか docx とか、2007 以降の Office ファイルって、実態は zip ファイルなんだよな
>>1 を悪用すると、取引先に嫌がらせができちゃうw
嫌がらせどころじゃなく Windows が起動できなくなる破壊活動だけど
14: ニュースソース検討中@自治議論スレ 2019/07/06(土) 06:59:30.04 ID:2WMUeQXz

あまり使わないキャッシュファイルの収納に便利?
素数10億まで書き出したのが500MBあり
1000憶ぐらいまでファイルに書き出しておこうと思ってちょうど困ってたんだ
これでかすぎるぞ とな

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

23: ニュースソース検討中@自治議論スレ 2019/07/06(土) 10:12:15.76 ID:910UHNg7

>>14
ランダムなデータは圧縮効率が悪いが、素数はどうなんだろう
2: ニュースソース検討中@自治議論スレ 2019/07/06(土) 02:41:26.87 ID:78Te2//l

破壊度

 貧者の爆弾 >>>非再帰的ZIP爆弾

貧者の生物化学兵器
https://www.newsweekjapan.jp/stories/world/2017/05/post-7597.php

5: ニュースソース検討中@自治議論スレ 2019/07/06(土) 03:06:49.50 ID:Xiu0iszY

>>2
両爆弾はコンセプトとしては似ている。
同じ思想系の系譜。
8: ニュースソース検討中@自治議論スレ 2019/07/06(土) 03:38:37.56 ID:MPiotHvc

アウトルックででかいファイル添付するバカのせいでメールサーバー止まったことがあったな
12: ニュースソース検討中@自治議論スレ 2019/07/06(土) 04:39:05.85 ID:dEVPeXr3

>>8
20年前か?
3: ニュースソース検討中@自治議論スレ 2019/07/06(土) 02:48:21.91 ID:e8eG/trn

ZIP爆弾ねぇ。懐かしい気がする。
真っ当な解凍ソフトならそこそこ対策されてんじゃないかな?
対策と言っても空き容量チェックする程度の話だけど。

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

21: ニュースソース検討中@自治議論スレ 2019/07/06(土) 10:08:26.86 ID:5WJD2H0H

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

うちの会社で画像圧縮して復元すると巨大になるやつ作ってるアホいたなあ。
福島出身の陰気な野郎だったよ
10: ニュースソース検討中@自治議論スレ 2019/07/06(土) 03:57:26.49 ID:wBnTbA2Z

素zipはソリッド圧縮出来ないだろ
なんでカーネルファイルなんて手法が出てくるんだ?
25: ニュースソース検討中@自治議論スレ 2019/07/06(土) 10:16:20.96 ID:T+jwW1Mz

数列ならともかく素数の並びじゃPC的にランダムなデータじゃないの?
27: ニュースソース検討中@自治議論スレ 2019/07/06(土) 10:36:31.21 ID:4LJJ/RbW

他人に嫌がらせするために情熱燃やせる連中とは関わり合いたくねえな

$(function(){
var c = 0;
if($(“div.mtpro-tweet-outer”).length){
var ad = “div.mtpro-tweet-outer”
}if($(“.twitter-tweet”).length){
var ad = “.twitter-tweet”
}if($(“div.t_h”).length){
var ad = “div.t_h”
}
$(ad).each(function() {
if (c !== 0) {
if(c == 4 ){
$(this).before(‘

‘);
}
else if(c == 8 ){
$(this).before(‘

‘);
}
else if(c == 12 ){
$(this).before(‘

‘);
}
else if (c >= 16 && c%4 == 0) {
$(this).before(‘

‘);
}
}
c++;
});
});

元スレ:http://egg.5ch.net/test/read.cgi/scienceplus/1562348062/

Source: mindhack
【脅威】新手のウィルス「非再帰的ZIP爆弾」がマジでヤバすぎる・・・怪しいZIPファイルには要注意!!