TOCTOU 脆弱性
TOCTOU 脆弱性 とは何ですか?
TOCTOU 脆弱性セキュリティ判断で参照した状態が、対応する処理を実行する前に変化してしまう、検査と使用の間のレースコンディション。
TOCTOU 脆弱性(Time-Of-Check to Time-Of-Use、CWE-367)はレースコンディションの一種で、プログラムがリソースの属性(所有者・パーミッション・内容など)を検査した後、検査が依然有効であるかのように処理を続行することで発生します。攻撃者が両ステップの間にリソースを差し替えられる(典型的にはシンボリックリンク、rename、共有メモリ)なら、検査は無意味になります。古典的な例は access() に続く open():access() 成功直後にパスを /etc/shadow へのシンボリックリンクへ差し替えるものです。防御としては、検査と使用を一体化するファイルシステム API(O_NOFOLLOW 付き openat、fstat)、パスではなくファイルディスクリプタを保持する、ファイルロック、より厳格なサンドボックス境界などが挙げられます。
● 例
- 01
stat() で所有者を確認してからパスを open する setuid プログラム。
- 02
bind-mount パスに対する TOCTOU を用いたコンテナエスケープ。
● よくある質問
TOCTOU 脆弱性 とは何ですか?
セキュリティ判断で参照した状態が、対応する処理を実行する前に変化してしまう、検査と使用の間のレースコンディション。 サイバーセキュリティの 脆弱性 カテゴリに属します。
TOCTOU 脆弱性 とはどういう意味ですか?
セキュリティ判断で参照した状態が、対応する処理を実行する前に変化してしまう、検査と使用の間のレースコンディション。
TOCTOU 脆弱性 からどのように防御しますか?
TOCTOU 脆弱性 に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。
TOCTOU 脆弱性 の別名は何ですか?
一般的な別名: TOCTTOU, 検査と使用。