競合状態(レースコンディション)(Race Condition)
競合状態(Race Condition)とは、ひとことで言えば、複数のプロセスやスレッドが共有リソースに同時にアクセスした際、処理の実行順序によって予期しない結果が生じる脆弱性です。たとえば、銀行口座の残高が1万円の状態で、2つのトランザクションが同時に1万円を引き出そうとした場合、適切な排他制御がなければ残高チェックをすり抜けて2万円が引き出されてしまいます。TOCTOU(Time of Check to Time of Use)は代表的な競合状態の一種で、権限チェック時と実際の操作時の間にリソースの状態が変わることで、認可を回避されるリスクがあります。ミューテックスやセマフォによる排他制御、アトミック操作の使用、トランザクションの適切な分離レベル設定が主な対策です。

