令和7年春期試験問題 午前Ⅰ 問14

Webアプリケーションソフトウェアの開発におけるOSコマンドインジェクション対策はどれか。

  • SQL文の組立ては全てプレースホルダで実装する。
  • シェルを起動できる言語機能を利用した実装を避ける。
  • 直接メモリにアクセスできる言語機能を利用した実装を避ける。
  • 利用者が入力したファイル名にディレクトリが含まれていないかのエラーチェックを実装する。
正解 問題へ
分野 :テクノロジ系
中分類:セキュリティ
小分類:セキュリティ実装技術
解説
OSコマンドインジェクションは、ユーザー入力をOSに発行するコマンドの一部として使用するWebアプリケーションに対して、OSコマンドを含む不正な入力を与えることで、サーバ上で不正なOSコマンドを実行させる攻撃手法です。本来は許可されないコマンドが実行されることにより、不正なファイル操作、外部プログラムの実行、重要情報の窃取などの被害が発生するおそれがあります。
多くのプログラミング言語には、引数として指定された文字列をOSのシェルに渡して実行させる関数等が存在します。例えば、PHPのexec、Perlのopen、Pythonのsubprocess.callなどが該当します。外部からの入力値を適切に検証せずにこれらの関数を使用している場合、攻撃者に任意のコマンドを実行されるリスクがあります。
  • SQLインジェクション対策です。
  • 正しい。OSコマンドインジェクションは、OSコマンドの実行が可能な関数等を利用している場合に生まれる脆弱性なので、これらのシェルを起動できる言語機能を利用しないことが根本的な対策となります。
  • バッファオーバーフロー対策です。
  • ディレクトリトラバーサル対策です。

Pagetop