第3回:セッション・ハイジャック、パス名パラメータを悪用したファイル参照、メールの第三者中継 (3/4)

安全なウェブサイト
安全なWebサイトの作成ガイド

第3回:セッション・ハイジャック、パス名パラメータを悪用したファイル参照、メールの第三者中継
著者:独立行政法人 情報処理推進機構セキュリティセンター
2006/2/21
前のページ  1  2  3   4  次のページ
パス名パラメータの未チェック/ディレクトリ・トラバーサル

   Webアプリケーションの中には、外部からのパラメータにWebサーバ内のファイル名を直接指定しているものがあります。このようなWebアプリケーションでは、ファイル名指定の実装に問題がある場合、攻撃者に任意のファイルを指定され、Webアプリケーションが意図しない処理を行ってしまう可能性があります。
パス名パラメータを悪用したファイル参照
図2:パス名パラメータを悪用したファイル参照

   Webアプリケーションの処理内容によっては、Webサイト運営者が公開を想定していないファイルの閲覧につながる場合があります。攻撃者による任意のファイル指定への対策として、次の内容をご検討ください。


根本的解決

   根本的解決として表3にあげた2つがあります。

  • 外部からのパラメータにWebサーバ内のファイル名を直接指定できる実装を避ける
  • ファイルを開く際は、固定のディレクトリを指定し、かつファイル名にディレクトリ名が含まれないようにする

表3:パス名パラメータを悪用したファイル参照の根本的解決

   それではそれぞれについて解説します。


外部からのパラメータにWebサーバ内のファイル名を直接指定できる実装を避ける

   これは、任意ファイルを参照される問題の原因を作らない実装です。

   外部からのパラメータにWebサーバ内のファイル名を指定できる場合、そのパラメータが改変され、任意のファイル名を指定され、公開を想定しないファイルの閲覧につながる可能性があります。外部パラメータからWebサーバ内のファイル名を指定する実装が本当に必要かどうか、他の処理方法で代替できないかどうかなど、仕様や設計から見直すことをお勧めします。

参照URL
セキュアPerl プログラミング「ファイルオープン時のパスにご用心」
http://www.ipa.go.jp/security/awareness/vendor/programming/a04_01.html


ファイルを開く際は、固定のディレクトリを指定し、かつファイル名にディレクトリ名が含まれないようにする

   これは、前述した根本的解決「外部からのパラメータにWebサーバ内のファイル名を直接指定できる実装を避ける」を実施できず、外部からの入力値でファイル名を指定する必要がある場合に、任意ディレクトリのファイルが指定されることを回避する実装です。

   例えば、カレントディレクトリ上のファイル「filename」を開くつもりで、open(filename)のような形でコーディングしている場合、open(filename)のfilenameに絶対パス名が渡されることにより、任意ディレクトリのファイルが開いてしまう場合があります。

   この絶対パス名による指定を回避する方法として、あらかじめ固定のディレクトリ「dirname」を指定し、open(dirname+filename)のような形でコーディングする方法があります。さらに、「../」などを利用したディレクトリ・トラバーサル攻撃を回避するために、basename()などの関数を利用して、filenameに与えられたパス名からファイル名のみを取り出すようにします。


保険的対策

   保険的対策には表4にあげた2つがあります。

  • Webサーバ内のファイルへのアクセス権限の設定を正しく管理する
  • ファイル名のチェックを行う

表4:パス名パラメータを悪用したファイル参照の保険的対策

   それではそれぞれについて解説していきます。


Webサーバ内のファイルへのアクセス権限の設定を正しく管理する

   これは、攻撃による影響を低減するための対策です。

   Webサーバ内に保管しているファイルへのアクセス権限が正しく管理されていれば、Webアプリケーションが任意ディレクトリのファイルを開く処理を実行しようとしても、Webサーバ側の機能でそのアクセスを拒否し、被害の低減が期待できます。


ファイル名のチェックを行う

   これは、上記根本的解決を実施できない場合にセーフティネットとなる対策です。

   ファイル名を指定したパラメータにチェックをかけ、"/"、"../"、"..\"などからはじまる文字列を検出した場合は、処理を中止します。

   ただし、デコード処理を行っている場合は、URLエンコードした"%2F"、"..%2F"、"..%5C"、さらに二重エンコードした"%252F"、"..%252F"、"..%255C" がファイル指定の入力値として有効な文字列となる場合があります。チェックを行うタイミングには注意してください。

参考URL
セキュアUnix/Linux プログラミング「Unix パス名の安全対策」
http://www.ipa.go.jp/security/awareness/vendor/programming/b07_07_main.html
セキュアWindows プログラミング「Windows パス名の落とし穴」
http://www.ipa.go.jp/security/awareness/vendor/programming/b08_01_main.html


前のページ  1  2  3   4  次のページ

安全なウェブサイトの作り方 - ウェブアプリケーションのセキュリティ実装とウェブサイトの安全性向上のための取り組み

2006年1月31日にIPAは、ウェブサイト運営者がウェブサイト上で発生しうる問題に対して、適切な対策ができるようにするため、「安全なウェブサイトの作り方」を取りまとめ公開いたしました。

本記事は、その報告書の転載です。詳しい内容に関しましては、以下のURLをご参照ください。

安全なウェブサイトの作り方
http://www.ipa.go.jp/security/vuln/documents/2005/website_security.pdf

脆弱性関連情報に関する届出について
http://www.ipa.go.jp/security/vuln/report/index.html

IPA(独立行政法人情報処理推進機構)
http://www.ipa.go.jp/index.html

IPA/ISEC(独立行政法人情報処理推進機構セキュリティセンター)
http://www.ipa.go.jp/security/index.html

独立行政法人情報処理推進機構セキュリティセンター
著者プロフィール
独立行政法人 情報処理推進機構セキュリティセンター
情報処理推進機構セキュリティセンター(IPA/ISEC)は、わが国において情報セキュリティ対策の必要性・重要性についての認識を啓発・向上し、具体的な対策実践情報・対策手段を提供するとともに、セキュアな情報インフラストラクチャ整備に貢献することをミッションとしています。


INDEX
第3回:セッション・ハイジャック、パス名パラメータを悪用したファイル参照、メールの第三者中継
  セッション管理の不備
  保険的対策
パス名パラメータの未チェック/ディレクトリ・トラバーサル
  メールの第三者中継
安全なWebサイトの作成ガイド
第1回 Webアプリケーション開発者が知っておくべきセキュリティ
第2回 OSコマンド・インジェクションとクロスサイト・スクリプティング
第3回 セッション・ハイジャック、パス名パラメータを悪用したファイル参照、メールの第三者中継
第4回 Webサイトの安全性向上のための取り組み - 運用レベルでの解決や対策
第5回 認証情報の不正取得とフィッシング詐欺

人気記事トップ10

人気記事ランキングをもっと見る