
セキュリティの不十分なサーバーを見つけるためにウェブサイトには日々多数の不審なアクセスが行われています。そうしたアクセスをしてくる相手に対して解凍すると容量が膨れ上がる「ZIP爆弾」を送りつけて撃退する方法がブログにまとめられています。
How to defend your website with ZIP bombs
https://blog.haschek.at/2017/how-to-defend-your-website-with-zip-bombs.html

ZIP爆弾とは、ZIPの圧縮アルゴリズムを最大限に活用することで巨大なファイルを小さなZIPファイルに収めたものです。例えば下記の記事ではたった10MBのZIPファイルを解凍すると281TBになってしまうZIP爆弾が登場しています。
「非再帰的ZIP爆弾」は10MBのファイルが281TBに膨らむ - GIGAZINE

サーバーをSSH可能な状態でインターネットに接続していると、中国やロシアなどのIPから数多くのログイン試行が行われます。

SSHだけでなく、世界で最も普及しているCMSのWordPressのセキュリティに穴が空いていないかをチェックするためのアクセスも日常的に行われています。

テキサス州で会社を経営しているエンジニアのChristianさんは、こうしたハッカーのスキャン行為で何GBものログが埋め尽くされてしまうのに嫌気がさしたため、ZIP爆弾で反撃しようと考えました。ブラウザはZIPを扱うことはできませんが、同じアルゴリズムのGZIPを扱えます。そこで、Christianさんは10GBのゼロ埋めファイルをGZIPで圧縮し、10MBのファイルを作成しました。
そしてそのGZIPファイルを配信するコードを記述。一般的なブラウザでは、GZIPファイルを自動で解凍する設定になっているためこのGZIP爆弾が設置されたページを開くといきなり10GBのファイルが展開されることになります。
Christianさんが主要ブラウザで動作を試してみると下記のような結果になったとのこと。
・Chrome
メモリ使用量が上昇し、その後エラーが発生する
・Edge
メモリ使用量が上昇した後急減し、永遠にロードが終わらない
・Safari
メモリ使用量が上昇した後クラッシュし、ページが再読み込みされる
なお、このZIP爆弾が設置されているページへのリンクは元ブログの最下部の「Try it yourself」に設置されています。もし自分のデバイスで動作を実験してみたいという人がいれば試してみて下さい。

