V12: ファイルとリソース
管理目標
検証対象のアプリケーションが以下の上位要件を満たすことを確認します。
信頼できないファイルデータはそれに応じてセキュアに処理する必要があります。
信頼できない情報源から取得した信頼できないファイルデータは Web ルートの外部に、かつ制限されたパーミッションで保存されています。
V12.1 ファイルアップロード
zip 爆弾はペネトレーションテスト技法を使用して大いにテスト可能ですが、慎重な手動テストによる設計と開発への配慮を促し、サービス拒否状態となる自動ペネトレーションテストや未熟な手動ペネトレーションテストを避けるために、L2 以上とみなされています。
12.1.1
アプリケーションはストレージをいっぱいにしたり、サービス拒否を引き起こす可能性のある大きなファイルを受け付けない。
✓
✓
✓
400
12.1.2
アプリケーションが圧縮ファイル (zip, gz, docx, odt など) を展開する前に最大許容非圧縮サイズおよび最大ファイル数と照合している。
✓
✓
409
12.1.3
一人のユーザが非常に多くのファイルや極端に大きなファイルでストレージをいっぱいにすることができないように、ファイルサイズクォータとユーザあたりの最大ファイル数が適用されている。
✓
✓
770
V12.2 ファイル整合性
12.2.1
信頼できない情報源から取得されたファイルはファイルのコンテンツに基づいて予想される種類であることを確認されている。
✓
✓
434
V12.3 ファイル実行
12.3.1
パストラバーサルから保護するために、ユーザが送信したファイル名メタデータがシステムやフレームワークファイルにより直接使用されていない、および URL API が使用されている。
✓
✓
✓
22
12.3.2
ローカルファイルの開示、作成、更新、削除 (LFI) を防ぐために、ユーザが送信したファイル名メタデータが確認または無視されている。
✓
✓
✓
73
12.3.3
リモートファイルインクルージョン (Remote File Inclusion, RFI) やサーバサイドリクエストフォージェリ (Server-side Request Forgery, SSRF) によるリモートファイルの開示や実行を防ぐために、ユーザが送信したファイル名メタデータが確認または無視されている。
✓
✓
✓
98
12.3.4
JSON, JSONP, URL パラメータでユーザが送信したファイル名を確認または無視することにより、アプリケーションが反射型ファイルダウンロード (Reflective File Download, RFD) に対して保護している。レスポンスの Content-Type ヘッダは text/plain に設定し、Content-Disposition は固定ファイル名である。
✓
✓
✓
641
12.3.5
OS コマンドインジェクションから保護するために、信頼できないファイルメタデータがシステム API やライブラリで直接使用されていない。
✓
✓
✓
78
12.3.6
未検証のコンテンツ配信ネットワーク、JavaScript ライブラリ、node npm ライブラリ、サーバサイド DLL など、信頼できないソースからの機能がアプリケーションに含まれて実行されていない。
✓
✓
829
V12.4 ファイルストレージ
12.4.1
信頼できないソースから取得したファイルが、限られたパーミッションで、Web ルートの外側に保存されている。
✓
✓
✓
552
12.4.2
信頼できないソースから取得したファイルが、既知の悪意のあるコンテンツのアップロードと配信を防ぐためにウィルス対策スキャナによりスキャンされている。
✓
✓
✓
509
V12.5 ファイルダウンロード
12.5.1
意図しない情報漏洩やソースコード漏洩を防ぐために、Web 層が特定のファイル拡張子を持つファイルのみを処理するように設定されている。例えば、バックアップファイル (.bak など) 、一時作業ファイル (.swp など) 、圧縮ファイル (.zip, .tar.gz など) やエディタで一般的に使用されるその他の拡張子は、必要でない限りブロックする。
✓
✓
✓
552
12.5.2
アップロードされたファイルへの直接のリクエストが HTML/JavaScript コンテンツとして決して実行されない。
✓
✓
✓
434
V12.6 SSRF 保護
12.6.1
Web サーバまたはアプリケーションサーバが、サーバが要求を送信したりデータやファイルをロードしたりできるリソースやシステムの許可リストで構成されている。
✓
✓
✓
918
参考情報
詳しくは以下の情報を参照してください。
Last updated
Was this helpful?