ディレクトリトラバーサル
ディレクトリトラバーサル攻撃の説明はどれか。
- アWeb ページに悪意のあるスクリプトを埋め込み,閲覧者のブラウザ上で実行させる。
- イファイル名を指定するパラメタに「../」などを含めることで,本来公開されていないディレクトリのファイルに不正にアクセスする。
- ウOS コマンドを呼び出す処理に不正な入力を与え,サーバ上で任意のコマンドを実行させる。
- エWeb サーバに大量の HTTP リクエストを送り付け,サービスを提供できない状態にする。
正解と解説を見る
正解 イ
この問題の基礎知識
- Web アプリケーションが利用者の入力をそのままファイル名に使うと,「../」(親ディレクトリ)を含む相対パスによって,公開ディレクトリの外のファイルを指定されるおそれがある。
- 対策には,外部からのパラメタでファイル名を直接指定させない実装や,固定のディレクトリを指定した上でファイル名からディレクトリ名を取り除いて扱う方法がある。
- 紛らわしい攻撃として,XSS は閲覧者のブラウザでスクリプトを実行させる攻撃,OS コマンドインジェクションはサーバで任意のコマンドを実行させる攻撃,DoS 攻撃はサービスを停止させる攻撃である。
アWeb ページに悪意のあるスクリプトを埋め込み,閲覧者のブラウザ上で実行させる。
閲覧者のブラウザ上で不正なスクリプトを実行させるのはクロスサイトスクリプティングである。Cookie の窃取や偽の入力フォームの表示などに悪用される。
イファイル名を指定するパラメタに「../」などを含めることで,本来公開されていないディレクトリのファイルに不正にアクセスする。正解
ディレクトリトラバーサル攻撃は,相対パスの「../」などを用いて上位ディレクトリへたどり,公開を意図していないファイルを閲覧・取得する攻撃である。
ウOS コマンドを呼び出す処理に不正な入力を与え,サーバ上で任意のコマンドを実行させる。
外部プログラムを呼び出す処理に細工した入力を与えて任意のコマンドを実行させるのは OS コマンドインジェクションである。
エWeb サーバに大量の HTTP リクエストを送り付け,サービスを提供できない状態にする。
大量のリクエストでサーバの資源を枯渇させ,サービスを停止させるのは DoS 攻撃(HTTP フラッド)である。ファイルへの不正アクセスを目的とした攻撃ではない。
検証用の出典出典照合済み
IPA 安全なウェブサイトの作り方 / CWE-22 Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')照合の根拠(4 件)
- イ(正解): 「../」などで制限されたディレクトリの外のファイルにアクセスするのがパストラバーサル
By using special elements such as ".." and "/" separators, attackers can escape outside of the restricted location to access files or directories that are elsewhere on the system. One of the most common special elements is the "../" sequence,
CWE-22 · Extended Description(新しいタブで開きます) - イ(正解): ファイル名を指定するパラメタに含まれる「../」等が攻撃に使われる
ファイル名を指定した入力パラメータの値から、「/」、「../」、「..\」等、OSのパス名解釈でディレクトリを指定できる文字列を検出した場合は、処理を中止します。
IPA 安全なウェブサイトの作り方 1.3 ディレクトリ・トラバーサル · 保険的対策 3-(iii)(新しいタブで開きます) - ア: 入力を無害化せずに他の利用者向けの Web ページに出力する(スクリプトを実行させる)のはクロスサイトスクリプティング
The product does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users.
CWE-79 · Description(新しいタブで開きます) - ウ: 外部入力で OS コマンドを組み立てて改変させるのは OS コマンドインジェクション
The product constructs all or part of an OS command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended OS command before it is sent to a downstream component.
CWE-78 · Description(新しいタブで開きます)
エ(大量リクエストによるサービス妨害)はファイルへの不正アクセスではないので,CWE-22 の定義から論理的に排除される。