TOCTTOU
Overview
There is a special type of race condition in software; it occurs when checking for a condition before using a resource. Sometimes, the condition can change between the time of check and the time of use. The security vulnerability resulting from this is called time-of-check to time-of-use (TOCTTOU) race condition vulnerability.
Example
Consider the root-owned Set-UID program below:
In this case:
TOC =>
if (!access("/tmp/X", W_OK))
TOU =>
f = open("/tmp/X", O_WRITE)
There is a window between the time when the file is checked (TOC) and the time when the file is opened (TOU). If we make a symlink /tmp/X => /etc/passwd
in this window, /etc/passwd
will be opened with eUID 0 therefore we can write to it. At this stage, we can add an entry to /etc/passwd
and su
that new user.
Reference
Last updated
Was this helpful?