令和7年度 春期 午前 問42
セキュリティ
OSコマンドインジェクション対策
Web アプリケーションソフトウェアの開発における OS コマンドインジェクション対策はどれか。
- アSQL 文の組立ては全てプレースホルダで実装する。
- イシェルを起動できる言語機能を利用した実装を避ける。
- ウ直接メモリにアクセスできる言語機能を利用した実装を避ける。
- エ利用者が入力したファイル名にディレクトリが含まれていないかのエラーチェックを実装する。
答えと解説を見る
✓ これが正解イシェルを起動できる言語機能を利用した実装を避ける。
解説
シェルを呼び出す言語機能を避けることが対策です。
OS コマンドインジェクションは、利用者から受け取った文字列が、そのまま OS への命令の一部として解釈されてしまうことで起こります。成立する場所は決まっていて、プログラムが OS のシェルを呼び出す機能を使っている箇所です。そこに命令の区切りにあたる記号が混ざると、開発者が想定していない命令が続けて実行されます。ですから対策を選ぶときの軸は、狙われる経路がどこなのかという点になります。シェルを起動できる言語機能を使わずに済ませれば、その経路そのものが無くなるので、この攻撃は成立しません。やむを得ず使う場合でも、外から受け取った値を命令の組立てに混ぜない作りにするのが基本です。攻撃の名前がどの層を指しているのかを見て、その層に効く対策を選ぶ、という読み方をします。
ほかの選択肢はなぜ違うのか
- アSQL 文の組立ては全てプレースホルダで…:SQL 文の組立てを全てプレースホルダで実装すると述べています。データベースへの問合せ文に値が紛れ込む攻撃への備えであり、守っている相手がデータベースなので、この設問が問う攻撃には当たりません。
- ウ直接メモリにアクセスできる言語機能を利用…:直接メモリにアクセスできる言語機能を避けると述べています。領域からあふれた書込みによる乗っ取りへの備えで、記憶域の扱いの話であり、外部への命令の受渡しとは層が異なります。
- エ利用者が入力したファイル名にディレクトリ…:入力されたファイル名にディレクトリが含まれていないかを検査すると述べています。意図しない場所のファイルを読み書きされる攻撃への備えで、確かめている対象はファイルのパスで、OS への命令の受渡しではありません。
この問題の用語
- プレースホルダ問合せ文の値の部分を、あとから当てはめる形にしておく書き方です。値を文と分けて渡すので、文の使い回しや不正な文の混入防止に役立ちます。
- アプリケーションソフトウェア利用者の目的に直接こたえるソフトウェアで、表計算や会計、業務用の専用ソフトなどがあたります。機器そのものを動かす基本ソフトウェアの上で動きます。
出典:令和7年度 春期 応用情報技術者試験 午前 問42
同じ用語が出る問題
- 令和7年度 秋期 午前 問49:プログレッシブWebアプリの問題(アプリケーションソフトウェア)
- 令和5年度 秋期 午前 問47(アプリケーションソフトウェア)
- 令和5年度 秋期 午前 問19:Linuxカーネルの説明(アプリケーションソフトウェア)
- 平成26年度 春期 午前 問40(プレースホルダ)
- 平成24年度 秋期 午前 問41:SQLインジェクションの問題(プレースホルダ)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)