再生してください!
確実にする唯一の方法は、問題のタイプのビデオをデコードするコードを用意し、それを確認することです(そして、ゼロ以外の継続時間など、賢明な結果があることを確認してください)。
それ以外の場合でも、リスクは低いです。
悪意のないシナリオ:
- アップローダーは、video/*コンテンツタイプでビデオをアップロードします。
- オクテットとコンテンツタイプを保存します。
- ダウンローダーはビデオをダウンロードし、受け取ったコンテンツタイプを使用します。
- ダウンローダーはビデオを見る(またはコーデックなどについて不平を言う)
悪意のあるシナリオ1:
- Uploaderは、ビデオ/*コンテンツタイプを使用して厄介なトロイの木馬をアップロードします。
- オクテットとコンテンツタイプを保存します。
- ダウンローダーは厄介なトロイの木馬をダウンロードし、受け取ったコンテンツタイプを使用します。
- Downloaderは、ビデオプレーヤーで厄介なトロイの木馬を開きます。厄介なトロイの木馬はビデオではないので何もしません。ユーザーはコーデックについて不平を言います。最悪のシナリオは、独自のフォーマットのサポートの欠如についてubuntuフォーラムに暴言を書いたり、ビデオが機能しなかったためにサイトがどのように悪いかについてあなたのページにスペルト小麦のコメントを追加したりすることです。
悪意のあるシナリオ2:
- Uploaderは、人気のあるビデオプレーヤーでのバッファオーバーフローの問題を悪用するビデオに書き込まれる厄介なトロイの木馬をアップロードします。
- あなたは保存します...
- ダウンローダー...
- 上記のいずれかのようになりますが、エクスプロイトに見舞われる可能性もあります(影響を受けるプレーヤーを使用している場合)。
ただし、シナリオ2について注意すべき3つのこと:
- 一部のプレーヤーでも問題なく動作する可能性があるため、ビデオであるかどうかをテストしても安全性は保証されません。
- 脆弱性がffmpegにある場合、それがビデオであることをテストすると、サーバーがエクスプロイトに対して脆弱になる可能性があります。
- このタイプのエクスプロイトはまれであり、実行するのは困難です。一般的なリスクは、jpegまたはpngのアップロードとダウンロードと同じです。確かにそれは少し小さいです(実際、しばらくの間、一般的に使用されるjpegライブラリに影響を与えるこのタイプのエクスプロイトがありました)。
全体として、受け入れるコンテンツタイプのみを出力するようにし、ファイル拡張子をそれらと一致させるようにします。ユーザーがhahaha.exeというビデオ/mpegをアップロードした場合は、名前をhahaha.mpgに変更します。
編集:ああ、また:
悪意のあるシナリオ3:
アップローダーは、多くのリソースを使用する方法で一部のプレーヤーを悪用するビデオをアップロードします。この場合、ダウンローダーは単にkill-9 / ctrl-alt-delete / your-OSs-kill-them-all-of-choiceになりますが、サーバーがビデオをテストしている場合は、問題が発生する可能性があります。誰も介入して200を殺す(そしてスクリプトキディのスクリプトがさらにアップロードし続けるにつれて成長する)「ビデオ」を解釈しようとしています。
通常のビデオ処理を行うだけで、DoS機能を導入できます(ビデオ処理は結局のところ比較的重いです)。そのため、ファイルをテストすると、節約できるよりも多くの危険が生じる可能性があります。