情報セキュリティスペシャリスト試験対策として、「インジェクション」と名前の付く攻撃についてまとめてみました。 試験では「SQLインジェクション攻撃」と「OSコマンドインジェクション攻撃」が出題されます。
SQLインジェクション攻撃
SQLインジェクション攻撃とは、外部からSQLのコマンドを送信しデータベースに不正なコマンドを混入させる攻撃です。
別名「ダイレクトSQLコマンドインジェクション」とも呼ばれます。
WEBサービス上のフォーム(入力欄)に、SQL文を入力して送信するなどして、データベースを不正に操作してデータを抜き出す、改ざんするなどが行われます。
WEBアプリケーション側でエスケープ処理を行う、データベース側で静的プレースホルダを設定するなどで対策することができます。
注:SQLインジェクション攻撃で送信するコマンドはSQL文に限られます。
OSコマンドインジェクション攻撃
OSコマンドインジェクション攻撃とは、OSのコマンドを起動する入力を行うことで不正にOSを操作する攻撃です。
一部のプログラミング言語には、PerlのSystem関数やPHPのexec関数など、OSのコマンドを直接呼び出せるものがあります。
これら呼び出し情報に不正なコマンドを挿入させることで、攻撃者の意図する動作をOSに行わせることができます。
Webアプリケーション側でエスケープ処理を行う、そもそもOSのコマンドを直接呼び出す関数を使わない、などで対策できます。
出題例
質問
Webアプリケーションの脆弱性を悪用する攻撃手法のうち,Perlのsystem関数やPHPのexec関数など外部プログラムの呼出しを可能にするための関数を利用し,不正にシェルスクリプトや実行形式のファイルを実行させるものはどれに分類されるか。
ア:HTTPヘッダインジェクション
イ:OSコマンドインジェクション
ウ:クロスサイトリクエストフォージェリ
エ:セッションハイジャック
(平成26年度春季試験 午前2/問15)
解法
- 典型的な「OSコマンドインジェクション」の説明です。ノータイムで解答します。
- 知識問題ですので、特別な解法はありません。知っていれば答えられます。
解答
イ
備考
同系統の攻撃として下記があります。(過去に試験で出題されたことはありません)
* LDAPインジェクション攻撃 (LDAPの検索条件に干渉する)
* XMLインジェクション攻撃 (XMLのタグ付けに干渉する)
* Xpathインジェクション攻撃 (XMLの検索条件に干渉する)
* SSIインジェクション攻撃 (SSIによるHTML生成に干渉する)