|
||||||||||||
| 前のページ 1 2 3 4 次のページ | ||||||||||||
| パス名パラメータの未チェック/ディレクトリ・トラバーサル | ||||||||||||
|
Webアプリケーションの中には、外部からのパラメータにWebサーバ内のファイル名を直接指定しているものがあります。このようなWebアプリケーションでは、ファイル名指定の実装に問題がある場合、攻撃者に任意のファイルを指定され、Webアプリケーションが意図しない処理を行ってしまう可能性があります。 ![]() 図2:パス名パラメータを悪用したファイル参照 Webアプリケーションの処理内容によっては、Webサイト運営者が公開を想定していないファイルの閲覧につながる場合があります。攻撃者による任意のファイル指定への対策として、次の内容をご検討ください。 |
||||||||||||
| 根本的解決 | ||||||||||||
|
根本的解決として表3にあげた2つがあります。
表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つがあります。
表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 |
||||||||||||
|
|
||||||||||||
|
||||||||||||
|
|
||||||||||||
|
||||||||||||
|
|
||||||||||||
|
||||||||||||


