Webセキュリティの小部屋

Twitter のフォローはこちらから Facebook ページはこちら Google+ページはこちら RSSフィードのご登録はこちらから
公開日:2013年3月20日

OSコマンド・インジェクションと対策

OS コマンド・インジェクションとは

OSCommandInjection

OS コマンド・インジェクションとは、リクエストパラメーターに OS コマンドを含めることで、Web サーバー上で OS コマンドを実行されてしまう脆弱性です。

OS コマンド・インジェクションがあると、攻撃者が何でも実行できる状態になるため、Webアプリケーションの脆弱性の中でも深刻なものになります。万が一、OS コマンド・インジェクションの脆弱性が発見された場合は、緊急に対処することが必要です。

発生する被害には以下のようなものがあります。

  • 情報漏えい、ファイルの改ざん・削除
  • 不正なシステム操作
  • ウィルスなどのマルウェア感染
  • 踏み台にされ他サイトへ攻撃

OS コマンド・インジェクションの対策

  • シェルを起動可能な言語機能の利用を避ける
  • 外部から渡された文字列をコマンドラインのパラメーターに渡さない

■シェルを起動可能な言語機能の利用を避ける

OS コマンド・インジェクションの脆弱性を防ぐためには、シェルを起動可能な言語機能の利用を避け、言語が提供する機能を利用するのが原則です。シェルとは、Windows なら cmd.exe, Linux 系なら sh, bash などのプログラムインターフェイスです。

例えば、Perl の open 関数は、引数に | (パイプ)を付けることで | 以降で任意の OS コマンドを実行できます。sysopen 関数を利用すればこの問題は回避出来ます。

■外部から渡された文字列をコマンドラインのパラメーターに渡さない

外部から渡された文字列をコマンドラインのパラメーターとして渡さないことも、OSコマンド・インジェクションの根本的対策となります。

  • シェルを起動可能な言語機能の利用時は、ホワイトリスト方式で引数をチェック

OS コマンドを実行することがシステム要件上避けられない場合は、利用可能なコマンドのみを許可するホワイトリスト方式で引数をチェックするようにします。危険な文字をエラーとするブラックリスト方式では漏れが発生するため避けましょう。


スポンサーリンク




カテゴリー:Webアプリケーションセキュリティ

Twitter でも、いろんな情報を発信しています。



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA