レースコンディション(TOCTOU)とは?れーすこんでぃしょん
レースコンディション(TOCTOU)とは、同時に走る処理の順序次第で結果が変わってしまう状態と、それを突く攻撃。とくに、条件を確認した時点と実際に使う時点のあいだに割り込まれる形をTOCTOU(Time of Check to Time of Use)と呼ぶ。確認と実行を分けずに一連の操作として行わせる設計が対策の要点になる。
最終更新:2026-10-06
この語が出る過去問を解く →背景
処理を一つずつ順に行う前提で書かれた手順は、同時実行が当たり前になると成り立たなくなる。確認と実行のあいだに他の処理が入り込む余地があると、確認した内容がすでに古いものになりうるからである。試験環境では利用者が少なく再現しないため、本番の繁忙期に金銭や在庫の食い違いとして初めて表面化する種類の欠陥として押さえたい。
具体例
在庫が残り一つの商品に同時に注文が入ると、どちらの処理も在庫ありと確認したうえで引き落とすため、在庫が負になり出荷できない注文が生まれる。対策は、データベース側の排他制御や分離水準の設定に判断を委ね、確認と更新を一つの不可分な操作として扱うことである。
試験での引っ掛け
デッドロックと混同されやすいが別物である。デッドロックは互いに待ち合って先へ進めなくなる状態、こちらは順序次第で誤った結果が出る状態を指す。負荷が低いうちは発生しないため、通常のテストでは見つからず、件数が少ないうちは誤差として見過ごされる点も出題される。
関連用語
出た過去問
出典:令和7年度 春期 ITストラテジスト試験 午前Ⅱ 問23(IPA)
プログラムの排他制御の不備によって、プロセスやスレッドが共有リソースに同時アクセスした場合に想定外の動作をするという問題はどれか。
正解:レースコンディション
要点:レースコンディションは排他制御不備による競合状態
レースコンディション(競合状態)は、複数のプロセスやスレッドが共有資源に同時アクセスした際、処理の実行順序やタイミングによって結果が変わってしまう問題である。排他制御(ロックや不可分操作(途中で割り込まれない一体の処理))の不備が原因で、権限昇格などのセキュリティ上の脆弱性にもつながる。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。