CyberGlossary

脆弱性

TOCTOU 脆弱性

別称: TOCTTOU, 検査と使用

定義

セキュリティ判断で参照した状態が、対応する処理を実行する前に変化してしまう、検査と使用の間のレースコンディション。

TOCTOU 脆弱性(Time-Of-Check to Time-Of-Use、CWE-367)はレースコンディションの一種で、プログラムがリソースの属性(所有者・パーミッション・内容など)を検査した後、検査が依然有効であるかのように処理を続行することで発生します。攻撃者が両ステップの間にリソースを差し替えられる(典型的にはシンボリックリンク、rename、共有メモリ)なら、検査は無意味になります。古典的な例は access() に続く open():access() 成功直後にパスを /etc/shadow へのシンボリックリンクへ差し替えるものです。防御としては、検査と使用を一体化するファイルシステム API(O_NOFOLLOW 付き openat、fstat)、パスではなくファイルディスクリプタを保持する、ファイルロック、より厳格なサンドボックス境界などが挙げられます。

  • stat() で所有者を確認してからパスを open する setuid プログラム。
  • bind-mount パスに対する TOCTOU を用いたコンテナエスケープ。

関連用語