令和7年度 春期 午前Ⅱ 問23
セキュリティ
排他制御に関する問題
プログラムの排他制御の不備によって,プロセスやスレッドが共有リソースに同時アクセスした場合に想定外の動作をするという問題はどれか。
- アクロスサイトリクエストフォージェリ
- イディレクトリトラバーサル
- ウバッファオーバーフロー
- エレースコンディション
答えと解説を見る
✓ これが正解エレースコンディション
解説
排他制御の不備で同時アクセス時に起こる問題はレースコンディションです。
レースコンディションは、複数のプロセスやスレッドが同じ共有リソースに同時にアクセスしたとき、処理が実行される順序やタイミングによって結果が変わり、想定外の動作を引き起こす問題です。見分ける軸は、問題の原因が排他制御の不備による同時アクセスにあるかどうかです。例えば、ある処理がファイルの権限を確認してから使うまでのわずかな隙に、別の処理がそのファイルを差し替えると、本来できない操作を許してしまうことがあります。対策としては、共有リソースへのアクセスをロックなどの排他制御で一つずつに制限することが基本になります。処理どうしの競争、つまりレースの勝ち負けで結果が変わる問題と、名前の意味から覚えると見分けられます。
ほかの選択肢はなぜ違うのか
- アクロスサイトリクエストフォージェリ:クロスサイトリクエストフォージェリは、利用者がログインしたままの状態を悪用し、罠のページなどから利用者の意図しないリクエストをWebアプリケーションに送らせる攻撃です。共有リソースへの同時アクセスとは関係がありません。
- イディレクトリトラバーサル:ディレクトリトラバーサルは、ファイル名の指定に上位のディレクトリをたどる文字列を紛れ込ませ、本来公開していないファイルにアクセスする攻撃です。パス名の扱いの不備が原因で、排他制御の不備によるものではありません。
- ウバッファオーバーフロー:バッファオーバーフローは、確保したメモリの領域を超える大きさのデータを書き込ませ、隣の領域を上書きして不正な動作を引き起こす問題です。入力の長さの確認の不備が原因であり、同時アクセスによる処理の順序の問題ではありません。
この問題の用語
- 排他制御同じデータを同時に更新しても、矛盾が起きないようにする仕組みです。先の処理が終わるまで、後の処理を待たせて防ぎます。
- ディレクトリトラバーサルパス名を使ってファイルを指定し、見せる気のないファイルを読む攻撃です。命令文を送り込んで実行させるSQLインジェクションとは別です。
- バッファオーバーフロー用意したメモリ領域を超えて書き込ませ、異常終了や不正な実行を招く攻撃です。入力欄にスクリプトを送り込む攻撃とは別のものです。
出典:令和7年度 春期 ITストラテジスト試験 午前Ⅱ 問23
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)