 |
|
1 2 3 4 次のページ
|
 |
OSコマンド・インジェクション
|
Webアプリケーションによっては、外部からの攻撃により、WebサーバのOSコマンドを不正に実行されてしまう問題を持つものがあります。この問題を悪用した攻撃手法は、一般に「OSコマンド・インジェクション」と呼ばれています。
OSコマンド・インジェクションの脆弱性がある場合、悪意あるリクエストにより、Webサーバ側で意図しないOSコマンドを実行させられ、重要情報が盗まれたり、攻撃の踏み台に悪用される可能性があります。

図1:OSコマンド・インジェクション
OSコマンド・インジェクション攻撃を受けた場合、Webサーバに保存されている重要情報を不正に取得されたり、Webサーバが攻撃の踏み台として悪用される可能性があります。
OSコマンド・インジェクションの対策として、次の内容をご検討ください。
|
根本的解決
|
根本的解決には「シェルを起動できる言語機能の利用を避ける」があります。
これは、OSコマンド・インジェクションの原因を作らない実装です。Webアプリケーションに利用されている言語によっては、シェルを起動できる機能を持つものがあります。
例えば、Perl言語のopen関数は、引数として与えるファイルパスに「|」(パイプ)を使うことでOSコマンドを実行できるため、外部からの入力値を引数として利用する実装は危険です。
このような、シェルを起動できる言語機能の利用は避けてください。処理の目的によっては、他の関数などで代替できる場合があります。例えば、Perl言語でファイルを開きたい場合は、open関数ではなく、sysopen関数を利用します。
|
保険的対策
|
保険的対策には「シェルを起動できる言語機能を利用する場合は、その引数を構成するすべての変数に対してチェックを行い、あらかじめ許可された処理のみが実行されるようにする」があります。
これは、根本的解決「シェルを起動できる言語機能の利用を避ける」を実施できない場合や、実施に漏れがあった場合にセーフティネットとなる対策です。
シェルを起動できる言語機能の引数を構成する変数に対し、引数に埋め込む前にチェックをかけ、本来想定する動作のみが実行されるようにしてください。チェック方法には、その引数に許可する文字の組み合わせを洗い出し、その組み合わせ以外は許可しない「ホワイトリスト方式」をお勧めします。
チェックの結果、許可しない文字の組み合わせが確認された場合は、引数へ渡さず、処理を中止させます。なお、チェック方法には、OSコマンド・インジェクション攻撃に悪用される記号文字(「|」、「<」、「>」など)など、問題となりうる文字を洗い出し、これを許可しない「ブラックリスト方式」もありますが、この方法はチェックに漏れが生じる可能性があるため、お勧めできません。
|
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)は、わが国において情報セキュリティ対策の必要性・重要性についての認識を啓発・向上し、具体的な対策実践情報・対策手段を提供するとともに、セキュアな情報インフラストラクチャ整備に貢献することをミッションとしています。
|
|
|
|