インジェクション攻撃

更新日:

用語解説

外部入力がデータではなくSQL、OSコマンド、LDAP式、HTTPヘッダなどの命令・構造として解釈され、攻撃者が意図しない処理を実行させる攻撃です。

■ 試験で押さえるポイント

  • SQLインジェクションは入力をSQL文字列へ連結する実装で生じます。プレースホルダを用いたパラメータ化、DB権限の最小化、動的識別子の許可リストで防ぎます。

  • OSコマンドインジェクションはシェルへ入力を渡す実装で起きます。シェルを介さない安全なAPIを使い、引数を分離し、実行権限を限定します。

  • HTTPヘッダインジェクションは改行等でヘッダ構造を壊します。フレームワークのヘッダAPIを使い、改行を拒否します。

  • 単一のエスケープ処理を全注入先へ流用できません。SQL、シェル、HTML、URLなど解釈文脈ごとの対策が必要です。

  • WAFは緩和・検知に役立ちますが、アプリケーションの安全な実装を置き換えません。

■ 過去問での着眼点

注入先がSQLならSQLインジェクション、OSのシェルならOSコマンドインジェクション、HTTPヘッダならヘッダインジェクションです。根本対策は、命令と外部入力を構造的に分離することです。

例: 検索値を`SELECT ... WHERE name = ?`のプレースホルダへ束縛すれば、入力中の引用符やSQL断片は命令ではなく値として扱われます。

音声で聞く

同じ分野の用語