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行目で可能性のある記号などを排除していましたが、バッククォートは 削除していなかったため、脆弱性を突かれています。

可能性のあるものを自身で入力する方法では、不完全な対策となる可能性があるので 、注意が必要となります。

対策

ライブラリを利用する。

コマンドライン中に値を埋め込まない。

シェルを経由せずにコマンドを呼び出す。