情報セキュリティ

基本情報技術者試験ディレクトリトラバーサル」の問題

情報セキュリティ情報セキュリティ難易度:hard
T社のWebアプリは、利用者が指定したファイル名を受け取り、サーバ上の公開フォルダ内の文書を表示する。診断で『ファイル名に親ディレクトリを示す文字列を含めると、公開対象外のシステムファイルが読み取れる』脆弱性が指摘された。アプリ側で講じる対策として、最も適切なものはどれか。
表示処理の応答時間を短くし、利用者の待ち時間を改善する。
読み取った文書の内容を表示の直前にすべて暗号化して保護する。
文書を開く前にログインを求め、未認証の者を画面から排除する。
指定値を直接使わず、許可済み文書を識別子から対応付けて開く。
正解
指定値を直接使わず、許可済み文書を識別子から対応付けて開く。

脆弱性の原因は『利用者指定のファイル名を検証せずファイルアクセスに使う』点にある。指定された文字列を直接パスに用いず、あらかじめ許可した文書を識別子(番号など)から内部で対応付けて開く設計にすれば、親ディレクトリ指定など範囲外への参照が成立せず、ディレクトリトラバーサルによる不正な読み取りを防げる。

?選択肢ごとの解説

ア ×応答時間の短縮は性能改善であり、ファイルパスの不正操作という脆弱性とは無関係で対策にならない。
イ ×表示前の暗号化は内容の機密性に関わる処理で、そもそも範囲外のファイルが読み取られてしまう参照経路を塞がない。
ウ ×ログイン必須化は無認証の悪用を減らすが、認証後の正規利用者や奪取アカウントから範囲外参照が可能なままで根本対策にならない。
エ ○脆弱性の原因は『利用者指定のファイル名を検証せずファイルアクセスに使う』点にある。指定された文字列を直接パスに用いず、あらかじめ許可した文書を識別子(番号など)から内部で対応付けて開く設計にすれば、親ディレクトリ指定など範囲外への参照が成立せず、ディレクトリトラバーサルによる不正な読み取りを防げる。

くわしく

ディレクトリトラバーサルは『利用者入力をそのままファイルパスに用いる』ことが本質である。対策はパスの正規化と許可ベースの検証、あるいは入力からファイルを直接組み立てず識別子と実体を対応付ける設計が有効である。

本番での押さえどころ

試験のコツ

親ディレクトリ指定で範囲外ファイルを読まれるのはディレクトリトラバーサル。対策はパス正規化や識別子による間接参照。

覚え方

トラバーサルは『上の階に上がる』。階段(親ディレクトリ)をふさいで指定範囲から出させない。

よくある誤り

認証や暗号化の対策を当てがちだが、論点は『指定パスが許可範囲外を指しても通る』ことであり、参照の組み立て方を正さなければ防げない。

情報セキュリティの他の問題

この問題を、AIの8-ways解説つきで。

基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。

無料ではじめる →

ukamiru 過去問 · 基本情報技術者試験 · fe-b-sec-0020

【基本情報技術者試験】ディレクトリトラバーサルの問題 — 解答・解説|ukamiru 過去問