主にCGIプログラムを標的とした攻撃で、不正なパラメーターをプログラムに送信して行なう攻撃の総称。
外部から入力されるパラメーターに、SQLコマンド、OSコマンド、ファイル名、HTML、JavaScript、XMLなどを紛れ込ませ、(想定外の方法で)それがサーバーやユーザークライアントで実行ないし展開されることを狙った攻撃。
具体的な攻撃例と攻撃回避方法はディレクトリトラバーサルの項目を参照のこと。
攻撃を受けたときの被害としては、他愛の無いものから深刻なものまで、様々である。
インジェクション攻撃には、その攻撃対象によって以下のように分けられる。
プログラム側の対応
プログラムが受け取るパラメーターの値は信頼できないものとして、その値を念入りに確認して不正な文字や値を除外すれば、インジェクション攻撃を防ぐことができる(汚染除去)。
一部のプログラミング言語(例:Perl)には外部入力データの汚染除去を行なわないと強制終了する動作モードがあり(Taintモード)、これを使う方法もある。
ネットワーク側の対応
この攻撃手法は通信ログに特徴的な内容を残す。それゆえに、自動的に攻撃を検出するファイアウォールやIDSも存在する。
しかし、攻撃パターンは日々増えていて、この方法で対応するのは泥縄と言える。
Webプログラミング黎明期には知られていなかった攻撃手法であるため、現在もなお、この攻撃を簡単に受けてしまうCGIプログラムがたくさんあると考えられている。
最近ではインジェクション攻撃を自動化するツールも出回っていて、この攻撃の脅威は非常に高い。
用語の所属

アタック
関連する用語

サニタイジング

セキュリティホール