読み方 : トックトゥー

TOCTOU【Time-Of-Check to Time-Of-Use】TOCTTOU

概要

TOCTOUとは、コンピュータプログラムに含まれるバグ(欠陥)の類型の一つで、ある条件のチェック時点(time-to-check)から、チェックした結果を利用・行使する時点(time-to-use)までの間に環境が変化してしまい、意図せず競合状態が生じること。
TOCTOUのイメージ画像

この問題は、プログラムの処理が「確認」と「実行」の2段階に分かれていることに起因する。通常、プログラムは安全性を担保するために事前チェックを行う設計になっているが、確認を終えて実行に移るまでのわずかな時間的空白に、別のプロセスや攻撃者が対象の状態を変えてしまう可能性がある。確認した時点の状態が実行時まで維持されるという前提が崩れることで、誤作動が発生する。

例として、ファイルへの書き込み権限チェックが挙げられる。プログラムが「書き込み可能か」を確認した直後に、そのファイルの参照先が攻撃者によって別のファイルへのシンボリックリンクにすり替えられると、プログラムは権限チェックの結果を信じたまま処理を続け、本来アクセスできないはずのファイルを上書きしてしまう。情報漏洩権限昇格といった深刻な被害につながる場合もある。

TOCTOUはレースコンディション競合状態)の一形態である。複数のプロセスが並行動作するマルチタスク環境では、あるプロセスの処理と処理のわずかな間に別のプロセスが割り込む機会が常に存在する。処理速度が高速化した現代でも、並列処理が前提の環境である以上、この問題は原理的に生じうる。発見・再現ともに難しく、単独動作では正常に見えるコードが複数ユーザー環境で脆弱性として現れることもある。

対策の基本方針は、確認と実行の間に外部が介入できる余地をなくすことである。確認と実行をアトミック操作(原子的操作)としてひとまとまりに処理したり、オペレーティングシステム(OS)のロック機構で対象を保護したりする方法が用いられる。ファイル操作では、パス名を都度参照するのではなく、最初にファイルを開いて取得したファイル記述子を通じて以降の操作をすべて行う方法も有効で、確認した対象と操作する対象が一致し続けることを保証できる。

(2026.5.8更新)
 

他の辞典等による「TOCTOU」の解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。