■競合状態(race condition)
あるプロセスが使用しているリソースを、ほかのプロセスが干渉し、プログラムが本来の姿で動作しない状態のこと。
多くの場合、競合状態はプログラムが予期していない順序でイベントが発生するために起きる。例えば、テンポラリ・ファイルに処理の中間結果を書き込むようなタイプのプロセスに対し、そのテンポラリ・ファイルに異なる結果を書き込むようなプロセスが割り込んでしまった場合、処理結果は正しくなくなってしまう(テンポラリ・ファイルで競合状態が発生している場合)。場合によっては、処理が異常終了する。
意図的に競合状態を引き起こすようなプログラムを実行したり、ネットワーク・メッセージを送信したりすることで、特定の処理が異常終了してサービス拒否が引き起こされたり、場合によっては任意のコードが実行されたりすることがある。
このように競合状態はセキュリティ上の弱点となる可能性があるため、処理中に利用するリソースが、ほかのプロセスによって割り込まれないように注意する必要がある。
|