NWネットワークスペシャリスト試験 午前Ⅰ

令和7年度春期 ネットワークスペシャリスト 午前Ⅰ 問14

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

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

選択肢

  1. ア
    SQL文の組立ては全てプレースホルダで実装する。
  2. イ
    シェルを起動できる言語機能を利用した実装を避ける。
  3. ウ
    直接メモリにアクセスできる言語機能を利用した実装を避ける。
  4. エ
    利用者が入力したファイル名にディレクトリが含まれていないかのエラーチェックを実装する。
解き方のヒントを見る

入力の扱いを見直す観点

この分野では、外部から受け取った値が処理の構造にどのような影響を与えるかを中心に、入力の流れ、境界、検証の役割を順に整理すると、各選択肢の妥当性を落ち着いて比較できます。

この問題で問われていること

確認の中心は、利用者由来のデータが意図しない処理へ結び付く可能性を、受け取りから実行までの流れに沿って評価できているかです。個別の方式名や式ではなく、境界ごとの扱いに注目してください。

視点

入力値がどの経路を通り、どの段階で解釈や処理の対象になるかを整理します。そのうえで、データと命令の境界が保たれているか、想定外の内容を受けた場合の扱いが一貫しているかという観点から、説明の前提と適用範囲を比較してください。

確認ポイント

  • 入力が外部由来かどうかを、処理の流れに沿って確認する。
  • データと処理上の指示が混同される境界を確認する。
  • 対策の説明が、想定する入力経路と適用範囲に対応しているか確認する。
正解と解説を見る

正解

イ

解説

OSコマンドインジェクションは、利用者の入力がOSコマンドの一部として解釈されることで発生する。対策として、シェルを起動する機能に依存した実装を避け、必要な処理を安全なAPIなどで実装する。

理由

シェルを介して外部入力を含む文字列を実行すると、入力中の特殊文字や追加コマンドがOSによって解釈される危険がある。そのため、シェルを起動できる言語機能を避けることが、OSコマンドインジェクション対策になる。

比較

プレースホルダは主にSQLインジェクション対策、直接メモリアクセスの回避はメモリ安全性に関する対策です。ファイル名のディレクトリ検査はパス・トラバーサル対策に近く、OSコマンドインジェクションの本質的な対策とは異なる。

選択肢ア

これは不正解だよ。SQL文の組立てにプレースホルダを使う方法は、入力値がSQL文として解釈されるSQLインジェクションへの対策である。OSコマンドの実行時にシェルを通じて入力が解釈される問題を直接防ぐ対策ではない。

選択肢イ(正解)

これは正解だよ。シェルを起動できる言語機能を利用すると、利用者の入力がOSコマンドの一部として解釈され、意図しないコマンドを実行される危険がある。その機能を避けることは、攻撃経路そのものを減らす対策になる。

選択肢ウ

これは不正解だよ。直接メモリにアクセスできる言語機能を避けることは、バッファオーバーフローなどのメモリ安全性に関する問題への対策である。OSコマンドとして入力が解釈される脆弱性を直接防ぐ説明にはならない。

選択肢エ

これは不正解だよ。ファイル名にディレクトリが含まれていないかを検査する方法は、想定外のパスを指定されるパス・トラバーサルなどへの対策である。シェル経由で入力がOSコマンドとして解釈される問題とは、確認すべき対象が異なる。

学習のポイント

入力値がどの実行環境で解釈されるかを見極め、脆弱性の種類と対策を対応付ける。

出典:独立行政法人 情報処理推進機構(IPA)令和7年度春期 ネットワークスペシャリスト試験 午前Ⅰ 問14(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針