OWASP ASVS 4.0
管理目標 †
検査対象のアプリケーションが次の高次の要件を満たすことを確認します。
- 信頼できないファイルのデータがセキュアな方法で適切に処理される
- 信頼できない情報源から取得したデータは,Webルート(webroot) の外に保存され,アクセスが制限される
V12.1 ファイルアップロード要件 †
高圧縮ファイル爆弾(zip bombs)はペネトレーションテスト技法を用いて充分テスト可能ですが、慎重な手動テストによる設計と開発の配慮を奨励し、かつ自動または不十分な手動ペネトレーションテストによるサービス運用妨害状態(DoS)を回避するために、L2以上と見なされます。
項番 | 説明 | L1 | L2 | L3 | CWE No | タイトル | 概要 |
12.1.1 | ストレージを圧迫させたり、DoS 攻撃を引き起こしたりする可能性のある大きなファイルをアプリケーションが受け付けない。 | ✓ | ✓ | ✓ | 400 | 制御されていないリソース消費 | ソフトウェアが限られたリソースの割り当てとメンテナンスを適切に制御していないため、アクターがリソースの消費量に影響を与え、最終的には利用可能なリソースを使い果たしてしまいます。 |
12.1.2 | 圧縮ファイルが「高圧縮ファイル爆弾(zip bombs)」でないことを確認する。(高圧縮ファイル爆弾(zip bombs):小さい入力ファイルが解凍されて巨大なファイルになり、ファイルの保存容量の限界を超えて、ストレージを使用不能にする悪意のある圧縮ファイル。) | | ✓ | ✓ | 409 | 高圧縮データの不適切な処理 (データ増幅) | ソフトウェアは、大きな出力を生成する非常に高い圧縮率の圧縮入力を処理しないか、または不適切に処理します。 |
12.1.3 | 1人のユーザがあまりにも多くのファイルまたは極端に大きいファイルでストレージを圧迫させることができないように、ユーザあたりのファイルサイズクォータと最大ファイル数が適用されている。 | | ✓ | ✓ | 770 | 制限やスロットルのないリソースの割り当て | ソフトウェアは、アクターのために意図されたセキュリティポリシーに反して、割り当て可能なリソースのサイズや数に制限を課すことなく、アクターに代わって再利用可能なリソースまたはリソースのグループを割り当てます。 |
V12.2 ファイルの完全性の要件 †
項番 | 説明 | L1 | L2 | L3 | CWE No | タイトル | 概要 |
12.2.1 | 信頼できない場所から取得したファイルが、期待されるファイルであることをファイルの内容に基づいて判断する。 | | ✓ | ✓ | 434 | 解釈の衝突 | 製品 A が製品 B とは異なる入力やステップを処理するため、A は B の状態に対する認識に基づいて誤ったアクションを実行してしまいます。 |
V12.3 ファイル実行の要件 †
項番 | 説明 | L1 | L2 | L3 | CWE No | タイトル | 概要 |
12.3.1 | パストラバーサルから保護するために、ユーザが送信したファイル名のメタデータがシステムまたはフレームワークファイルやURL APIで直接使用されていない。 | ✓ | ✓ | ✓ | 22 | 制限されたディレクトリへのパス名の不適切な制限(「パストラバーサル」) | ソフトウェアは、外部入力を使用して、制限された親ディレクトリの下にあるファイルまたはディレクトリを識別することを目的としたパス名を作成しますが、ソフトウェアは、パス名を特定の場所に解決する原因となるパス名内の特別な要素を適切に無効にしません。制限されたディレクトリの外にあります。 |
12.3.2 | ローカルファイル(LFI)の漏えい、作成、更新、または削除を防止するために、ユーザが送信したファイル名のメタデータをバリデートもしくは無視する。 | ✓ | ✓ | ✓ | 73 | ファイル名またはパスの外部制御 | このソフトウェアを使用すると、ユーザー入力により、ファイルシステム操作で使用されるパスまたはファイル名を制御または制御できます。 |
12.3.3 | SSRFにも繋がる可能性があるリモートファイル(RFI)の漏えいまたは実行を防ぐために、ユーザが送信したファイル名のメタデータをバリデートもしくは無視する。 | ✓ | ✓ | ✓ | 98 | PHP プログラムの Include/Require ステートメントでのファイル名の不適切な制御 ('PHP Remote File Inclusion') | PHPアプリケーションは上流のコンポーネントから入力を受け取りますが、"require "や "include "などの関数で使用する前に入力を制限したり、誤って制限したりすることはありません。 |
12.3.4 | アプリケーションを反射型ファイルダウンロード(RFD)から保護するため、ユーザが送信したファイル名(JSON、JSONPまたはURLパラメータの中にある)をバリデートまたは無視し、レスポンスの Content-Type ヘッダは text/plain に設定、および Content-Disposition ヘッダは固定ファイル名を指定する。 | ✓ | ✓ | ✓ | 641 | ファイルやその他のリソースの名前の不適切な制限 | アプリケーションは、上流コンポーネントからの入力を使用してファイルやその他のリソースの名前を構築しますが、その結果として得られる名前を制限しなかったり、不適切に制限したりします。 |
12.3.5 | OS コマンドインジェクションから保護するために、信頼できないファイルメタデータをシステム API またはライブラリで直接使用しない。 | ✓ | ✓ | ✓ | 78 | OSコマンド(「OSコマンドインジェクション」)で使用される特殊要素の不適切な無効化 | ソフトウェアは、上流コンポーネントからの外部から影響を受ける入力を使用してOSコマンドのすべてまたは一部を構築しますが、下流コンポーネントに送信されたときに目的のOSコマンドを変更する可能性のある特別な要素を無効化または誤って無効化しません。 |
12.3.6 | アプリケーションは、未検証のコンテンツ配信ネットワーク、JavaScriptライブラリ、ノードnpmライブラリ、サーバサイドDLLなどの信頼できない場所からの機能を含まず、かつ実行されない。 | | ✓ | ✓ | 829 | 信頼されていない制御領域からの機能の包含 | ソフトウェアは、意図された制御領域外のソースから実行可能な機能(ライブラリなど)をインポート、要求、またはインクルードします。 |
V12.4 ファイル保存の要件 †
項番 | 説明 | L1 | L2 | L3 | CWE No | タイトル | 概要 |
12.4.1 | 信頼できない場所から取得したファイルは、Webルート以外にパーミッションを制限した上で保存し、可能な限り厳密なバリデーションを行う。 | ✓ | ✓ | ✓ | 922 | 機密情報の安全でない保存 | このソフトウェアは、権限のない行為者による読み取りアクセスや書き込みアクセスを適切に制限することなく、機密情報を保存します。 |
12.4.2 | 信頼できない場所から取得したファイルが、アプリケーションが想定する種類であることを検証し、既知の悪性コンテンツがアップロードされるのを防止するためにアンチウイルスソフトで検査する。 | ✓ | ✓ | ✓ | 509 | 悪意のあるコードの複製 (ウイルスまたはワーム) | ウイルスやワームを含む悪意のあるコードの複製は、対象となるシステムやソフトウェアに侵入することに成功すると、他のシステムを攻撃しようとします。 |
V12.5 ファイルダウンロードの要件 †
項番 | 説明 | L1 | L2 | L3 | CWE No | タイトル | 概要 |
12.5.1 | 意図しない情報やソースコードの漏えいを防ぐために、特定のファイル拡張子を持つファイルのみを処理するようにWeb層が構成されている。例えば、バックアップファイル(.bakなど)、一時作業ファイル(.swpなど)、圧縮ファイル(.zip、.tar.gzなど)およびエディタで一般的に使用されるその他の拡張子は、必要ない限り処理しない。 | ✓ | ✓ | ✓ | 552 | 外部の関係者がアクセス可能なファイルまたはディレクトリ | 本製品を使用すると、ファイルまたはディレクトリは、本来はアクセスできないはずのものであっても、権限のないアクターがアクセスできるようになります。 |
12.5.2 | アップロードされたファイルへの直接のリクエストがHTML/JavaScript コンテンツとして実行されない。 | ✓ | ✓ | ✓ | 434 | 解釈の衝突 | 製品 A が製品 B とは異なる入力やステップを処理するため、A は B の状態に対する認識に基づいて誤ったアクションを実行してしまいます。 |
V12.6 SSRFからの保護要件 †
項番 | 説明 | L1 | L2 | L3 | CWE No | タイトル | 概要 |
12.6.1 | Webサーバまたはアプリケーションサーバが、リクエストを送信したりデータ/ファイルをロードしたりできるように、リソースまたはシステムにホワイトリストが構成されている。 | ✓ | ✓ | ✓ | 918 | Server-Side Request Forgery (SSRF) | ウェブサーバは、上流のコンポーネントから URL またはそれに類する要求を受信し、この URL の内容を取得しますが、その要求が期待される宛先に送信されていることを十分に確認していません。 |
参考情報 †
詳しくは以下の情報を参照してください。