web-dev-qa-db-ja.com

Zip爆弾や参照爆弾からWebサイトを保護する方法は?

Zip爆弾 (概念 ここ )は、Zipファイルのアップロードが許可されているWebサイトに対して、非常に「スマート」で簡単な脆弱性のようです。このようなサイトは脅威にさらされています(少なくともある程度の損害を与えるため)-誰かがサイトに100 KBのファイル(50 GBの圧縮)をアップロードし、サイトが抽出した(またはファイルを開いた)リソースが不足した場合、結果として生じる損害を引き起こします。

ウイルス対策ソフトウェアは、再帰の深さや一般的なパターンを検出することで、このようなZip爆弾を検出すると言われていますが、Windows OSについては質問しません(可能な場合) AVで保護される)しかし、プログラミング言語を使用しているWebサイト(つまり、vpsまたは共有ホスティング)で話します(PHPに興味がありますが、他の人にはJavaまたはASPも必要です)。

  1. PHP(など)に組み込みのソリューションがあり、それがすでに発生するのを防ぎますか?そうでない場合、それをどのように制限できますか? (任意のコード例)

  2. サーバー上のこれらの種類のファイルを(抽出せずに)検出するにはどうすればよいですか?

  3. 別の攻撃層が Gzip爆弾 を含むリクエストを送信しているようです。どうすればそれを防ぐことができますか?

5
T.Todua
  1. Zip爆弾は、抽出しなければ無害です。ウイルス対策ソフトウェアは、一度にファイルを通過します。
  2. この効果を得るために悪意は必要ありません。多くの適切にコーディングされていないWebサイトは、ブラウザーをフリーズまたはクラッシュさせます。
  3. 防御はリンクで説明されています:パーサースレッドに割り当てられたメモリを制限し、制限に達したら停止します。

逸話:すべての信頼されたユーザーのシステムにメソッド(3)を実装する必要がありました。 「信頼されている」は少し控えめな表現です。これには、5つの異なる保証レイヤーが含まれていました。デフォルトの最大解像度と圧縮なしに設定された紙スキャナーの多くのモデルに対して防御が必要でした。その後、ユーザーがアップロードしています...典型的なスキャナーの解像度制限を確認して計算してください。

このような攻撃の影響を受けるのは最も単純なソフトウェアだけではありませんが、その影響は、悪意のない無能によって定期的にすでに起こっていることと同じです。

2
ZOMVID-20