OSコマンド・インジェクション
OSコマンド・インジェクション
外部からの攻撃により、OSコマンドを不正に実行されてしまう問題を持つ可能性があります。
発生する可能性のある脅威
サーバー内のファイル閲覧/改ざん/削除
システム操作
不正なプログラムのダウンロード/実行
他のシステムへ攻撃を行うための踏み台
実装例
以下Perlのプログラム例
$form = ~s/"|;|'|<|>|\|| //ig; open (MAIL, "|usr/sbin/sendmail| -t -i -f $form");
一行目でシェルで特別な意味を持つ記号を除外しようとしており、 除外後、差出人のアドレスとし、コマンドライン引数に渡しています。
通常のアドレスを指定した際には、値が正常に引き渡され、メール送信の処理は 正常な働きを行いますが、攻撃を意図した入力によっては不正なコマンドが実行 され、脆弱性を突かれた攻撃が成立してしまいます。(下記コマンド例)
/usr/sbin/sendmail -t -i -f `touch[0x09]/tmp/foo`
バッククォートで囲まれた部分を実行して、その出力をコマンドラインに反映すると いうunixにおけるシェルの機能です。
実装例の1行目で可能性のある記号などを排除していましたが、バッククォートは 削除していなかったため、脆弱性を突かれています。
可能性のあるものを自身で入力する方法では、不完全な対策となる可能性があるので 、注意が必要となります。
対策
ライブラリを利用する。
コマンドライン中に値を埋め込まない。
シェルを経由せずにコマンドを呼び出す。