5

Webベースのアプリケーション用に次の機能を作成したいと思います。

  1. ユーザーがアーカイブファイル(zip / rar / tar.gz / tar.bzなど)をアップロードします(コンテンツ-いくつかの画像ファイル)
  2. アーカイブはアップロード後に自動的に抽出されます
  3. 画像はHTMLリストに表示されます(何でも)

抽出プロセスに関連するセキュリティの問題はありますか?たとえば、アップロードされたファイル(または十分に準備されたアーカイブファイル)に含まれる悪意のあるコード実行の可能性、またはその他?

4

2 に答える 2

7

注意深く実装されていない場合、バッファオーバーフローなどでシステムを悪用する可能性は別として、冗長パターンを含む大きなファイル(zip爆弾)を含む巧妙に作成された圧縮ファイルを盲目的に抽出すると問題が発生する可能性があります。圧縮バージョンは非常に小さいですが、解凍するとディスク全体を占有し、サービス拒否を引き起こし、システムをクラッシュさせる可能性があります。

また、十分に注意しないと、クライアントはサーバー側の実行可能コンテンツ(、、、 ...)を含むzipファイルを.php内部.asp.aspx渡し、HTTP経由でファイルを要求する可能性があります。これは、適切に構成されていない場合、任意のコードが実行される可能性があります。サーバー上。

于 2009-12-14T21:27:55.197 に答える
3

Medrdadの答えに加えて:ユーザー提供のコンテンツをホストするのは少し注意が必要です。zipファイルをホストしている場合は、Javaクラスファイル(他の形式でも使用されます)を保存するために使用できるため、「同一生成元ポリシー」が破られる可能性があります。(zipが別のファイルの末尾に添付されたGIFAR攻撃がありましたが、Java PlugIn / WebStartでは機能しなくなりました。)画像ファイルは、少なくとも実際に画像ファイルであることを確認する必要があります。明らかに、バッファオーバーフローの脆弱性があるWebブラウザには問題があり、サイトが訪問者を攻撃するために使用される可能性があります(これにより人気がなくなる可能性があります)。たとえば、regexを使用してデータを渡すクライアント側のソフトウェアがいくつかある場合があります。これにより、イメージファイルの途中のデータを実行できます。Zipファイルにはいたずらなファイル名が付いている場合があります(たとえば、../と奇妙な文字)。

何をすべきか(必ずしも網羅的なリストではありません):

  • ホストユーザーが完全に異なるドメインでファイルを提供しました。
  • ユーザーファイルのあるドメインは、異なるIPアドレスを使用する必要があります。
  • 可能であれば、データをデコードして再エンコードします。
  • zip爆弾に関する別のstackoverflowの質問があります-ZipInputStreamそれが大きくなりすぎた場合は、使用して解凍し、停止することをお勧めします。
  • ネイティブコードがユーザーデータにアクセスする場合は、chrootgaolで実行します。
  • 文字をホワイトリストに登録するか、ファイル名を完全に置き換えます。
  • 潜在的に、何らかの説明のIDSを使用して、疑わしいデータをスキャンすることができます(これがどれだけ行われるかは本当にわかりません。IDSがCで書かれていないことを確認してください!)。
于 2009-12-14T22:22:42.650 に答える