57180
[高圧縮ファイル爆弾 -
Wikipedia](https://ja.wikipedia.org/wiki/%E9%AB%98%E5%9C%A7%E7%B8%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E7%88%86%E5%BC%BE)

展開すると容量をとても大きく消費してしまう zip ファイルを、 zip 爆弾というようです。

ただ、何らかの理由でユーザーがアップロードした zip ファイルをサーバー上で解凍しなければいけないような場合に、何かしらあらかじめこの zip
ファイルを本当に解凍しても問題ないのかを、確認する手段が欲しくなるな、と思いました。

### 質問

  * ある zip ファイルが、 zip 爆弾的であるかどうかを、サーバー上で判定する方法はありますか？
CC BY-SA 4.0
2019-08-05T08:26:43.330
57178
2019-08-05T10:11:51.113
2019-08-05T08:54:03.170
3060
754
question
linux centos unix
zip 爆弾を、爆発させずにそうであるかどうかを検証する方法はありますか？
容量の小さいループバックデバイスを作って、その中に解凍するようにしたらいいのでは。  
正常なら解凍ファイルを所定の位置に移せばいいし、爆弾なら解凍プロセスがエラーになるので分かるはずです。
CC BY-SA 4.0
2019-08-05T08:44:07.330
57179
2019-08-05T08:44:07.330
31146
57178
answer
`unzip`コマンドの`-l`や`-Z`オプションを使えば、アーカイブを展開せずに中身のファイル一覧や展開後のファイルサイズを確認することができます。

身構えてチェックする必要はありますが、不必要にファイルサイズが大きかったり、ZIPの中にZIPが入れ子になっているようなケースは確認できるのかなと。
CC BY-SA 4.0
2019-08-05T08:52:07.690
57180
2019-08-05T08:52:07.690
3060
57178
answer
自分でチェックせずに、サーバーサイドにインストールしたウイルス対策ソフトに任せてしまうとか。有名な `45.1.zip`
であれば今どきのアンチウィルスソフトはみな検出してくれるようです。

より新しい非再帰構造 zipbomb であっても  
<https://security.srad.jp/story/19/07/16/1351248/>  
によれば unzip 自体も対応済みとか。記事が書かれた当時に対策ソフトの対応まだでも、今頃はきっと対応済み（であろうことを強く期待する）
CC BY-SA 4.0
2019-08-05T10:11:51.113
57181
2019-08-05T10:11:51.113
8589
57178
answer