基本情報技術者試験「ディレクトリトラバーサル」の問題
T社のWebアプリは、利用者が指定したファイル名を受け取り、サーバ上の公開フォルダ内の文書を表示する。診断で『ファイル名に親ディレクトリを示す文字列を含めると、公開対象外のシステムファイルが読み取れる』脆弱性が指摘された。アプリ側で講じる対策として、最も適切なものはどれか。
ア表示処理の応答時間を短くし、利用者の待ち時間を改善する。
イ読み取った文書の内容を表示の直前にすべて暗号化して保護する。
ウ文書を開く前にログインを求め、未認証の者を画面から排除する。
エ指定値を直接使わず、許可済み文書を識別子から対応付けて開く。
正解
エ.指定値を直接使わず、許可済み文書を識別子から対応付けて開く。
脆弱性の原因は『利用者指定のファイル名を検証せずファイルアクセスに使う』点にある。指定された文字列を直接パスに用いず、あらかじめ許可した文書を識別子(番号など)から内部で対応付けて開く設計にすれば、親ディレクトリ指定など範囲外への参照が成立せず、ディレクトリトラバーサルによる不正な読み取りを防げる。
?選択肢ごとの解説
ア ×応答時間の短縮は性能改善であり、ファイルパスの不正操作という脆弱性とは無関係で対策にならない。
イ ×表示前の暗号化は内容の機密性に関わる処理で、そもそも範囲外のファイルが読み取られてしまう参照経路を塞がない。
ウ ×ログイン必須化は無認証の悪用を減らすが、認証後の正規利用者や奪取アカウントから範囲外参照が可能なままで根本対策にならない。
エ ○脆弱性の原因は『利用者指定のファイル名を検証せずファイルアクセスに使う』点にある。指定された文字列を直接パスに用いず、あらかじめ許可した文書を識別子(番号など)から内部で対応付けて開く設計にすれば、親ディレクトリ指定など範囲外への参照が成立せず、ディレクトリトラバーサルによる不正な読み取りを防げる。
✎くわしく
ディレクトリトラバーサルは『利用者入力をそのままファイルパスに用いる』ことが本質である。対策はパスの正規化と許可ベースの検証、あるいは入力からファイルを直接組み立てず識別子と実体を対応付ける設計が有効である。
✓本番での押さえどころ
試験のコツ
親ディレクトリ指定で範囲外ファイルを読まれるのはディレクトリトラバーサル。対策はパス正規化や識別子による間接参照。
覚え方
トラバーサルは『上の階に上がる』。階段(親ディレクトリ)をふさいで指定範囲から出させない。
よくある誤り
認証や暗号化の対策を当てがちだが、論点は『指定パスが許可範囲外を指しても通る』ことであり、参照の組み立て方を正さなければ防げない。
情報セキュリティの他の問題
A社の経理担当者が、取引先を装ったメールに添付された請求書ファイルを業務PCで開いたところ、見慣れない画面が一瞬表示されて消…B社のWebサービスで、複数の利用者アカウントに対し正しいIDとパスワードの組合せによるログインが短時間に外部から成立する事…C社では、退職予定者や異動者のアカウント権限の見直しが滞り、業務上不要になった共有フォルダへのアクセス権が残り続けている。情…D社のファイルサーバがランサムウェアに感染し、業務ファイルが暗号化された。D社は日次でバックアップを取得しているが、バックア…E社の従業員に、取引先銀行を名乗る『口座情報の更新が必要』というメールが届いた。本文中のリンク先URLにアクセスすると、銀行…F社は社外の従業員が、カフェなどの公衆無線LANを利用して社内システムへアクセスしている。通信内容が経路上で第三者に盗聴・改…
この問題を、AIの8-ways解説つきで。
無料ではじめる →基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。
ukamiru 過去問 · 基本情報技術者試験 · fe-b-sec-0020