情報処理安全確保支援士暗記無料で始める

OSコマンドインジェクションとは?おーえすこまんどいんじぇくしょん

OSコマンドインジェクションとは、外部プログラムやシェルを呼び出す処理へ、区切り記号(;、|、&&、バッククォートなど)を含む値を渡し、開発者が意図しないOSコマンドを続けて実行させる攻撃。Webサーバの実行権限がそのまま奪われるため、ファイルの窃取から内部への足がかりまで一気に進む。

最終更新:2026-10-06

試験情報

情報処理安全確保支援士試験の過去問では6回出題されています(2017年度〜2023年度)。

情報処理安全確保支援士試験の頻出用語/午前II

この語が出る過去問を解く →

背景

Webアプリからメール送信や画像変換を行うとき、専用ライブラリを使うより既存のコマンドをシェル経由で呼ぶほうが早い、という実装の近道が入口になる。シェルは文字列を受け取って解釈する仕組みなので、値と命令の境界がそもそも存在しない。支援士では、この「値が命令として解釈される」構図をSQLインジェクションと同じ型として説明できるかが問われる。

具体例

問合せフォームの控えメールをシェル経由でsendmailに渡している実装では、宛先欄に区切り文字と別のコマンドを続けて書くと、そのコマンドがWebサーバ権限で動く。PHPのescapeshellargのような引数エスケープ関数は、この境界を守るために用意されている。

試験での引っ掛け

根本対策はシェルを介さないAPI(JavaのProcessBuilder、Pythonのsubprocessの配列渡し)で、引数を配列として渡し文字列連結をやめること。エスケープ処理やWAFは次善策にとどまる。SQLインジェクションと違い、狙われるのはDBではなくOSである点も混同しやすい。

関連用語

出た過去問

解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。

この語が出る過去問を解く →

試験での特徴
  • 試験では6回出題(2017年度〜2023年度)
  • 分野:午前II
  • 根本対策はシェルを介さないAPI(JavaのProcessBuilder、Pythonのsubprocessの配列渡し)で、引数を配列として渡し文字列連結をやめること。