CyberGlossary

Уязвимости

TOCTOU-уязвимость

Также известно как: TOCTTOU, Check-then-Use

Определение

Состояние гонки между моментом проверки и моментом использования: проверенное условие безопасности меняется до выполнения связанной операции.

TOCTOU-уязвимость (Time-Of-Check to Time-Of-Use, CWE-367) — частный случай состояния гонки: программа проверяет свойство ресурса (владелец, права, содержимое) и затем работает с ним, словно проверка всё ещё актуальна. Атакующий, способный заменить ресурс между двумя шагами — обычно через симлинки, rename или общую память, — полностью обходит проверку. Классический пример — access(), а затем open(): после успешного access() атакующий подменяет путь символической ссылкой на /etc/shadow. Защита — API, объединяющие проверку и использование (openat с O_NOFOLLOW, fstat), работа с дескрипторами вместо путей, файловые блокировки и более строгие границы песочниц.

Примеры

  • Setuid-программа, проверяющая владельца через stat() и затем открывающая путь.
  • Побег из контейнера через TOCTOU на путях bind-mount.

Связанные термины