IT用語
入力値にOSのコマンドを紛れ込ませ、サーバー上で不正なコマンドを実行させる攻撃。
- 別名・略称
- OSコマンドインジェクション
コマンドインジェクション(OSコマンドインジェクション)は、Webアプリケーションが入力値を使って OS のコマンドを実行している場合に、入力にコマンドの区切り記号やほかのコマンドを紛れ込ませ、サーバー上で不正なコマンドを実行させる攻撃です。
仕組み
例えば、入力されたファイル名やホスト名をそのままコマンドの文字列に組み込んでいると、「;」や「|」などの記号を使って、別のコマンドを続けて実行させることができてしまいます。
起きる被害
サーバー上で任意のコマンドを実行されるため、RCE と同じく、情報の窃取や改ざん、Webシェル や マルウェア の設置、サーバーの乗っ取りにつながります。
対策
- OS のコマンドを呼び出さずに済む方法(言語の関数やライブラリ)を使う
- どうしても呼び出す場合は、入力値を引数として安全に渡す。PHP では escapeshellarg() を使う
- 入力値を、許可した文字や値だけに限る
- アプリケーションを必要最小限の権限で動かす(最小権限)

