APUE: time-of-check-to-time-of-use(TOCTTOU)
Posted aristocracy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了APUE: time-of-check-to-time-of-use(TOCTTOU)相关的知识,希望对你有一定的参考价值。
APUE 52页:
关于time-of-check-to-time-of-use(TOCTTOU)配合软连接的漏洞:
TOCTTOU实质:检查的时机和状态,同使用无法完全一致。
举例如下:
如果调用open的进程的euid为超级用户,open就能够打开/etc/passwd
The implication is that applications cannot assume the state managed by the operating system (in this case the file system namespace) will not change between system calls.
derive/originate from 维基百科:https://en.wikipedia.org/wiki/Time_of_check_to_time_of_use
【创造漏洞分析】 以上例分析,要创造漏洞要就是绕过Check或者说欺骗Check,最终就是让Check通过,能够进入下一层逻辑,进程能够使用open调用。要明确,我们真正想要“利用”的文件是不可能过Check的,不然也就不叫漏洞了,是可以光明正大使用了。那么绕过Check 思路 :
使进程Check的其实是低权限可以使用的文件/目录,这样Check就必然很容易通过了,再想办法让open使用的是我们真正想打开的文件/目录(此法例如上例:Check的是普通file,但是在Check to Use的这个时间空挡,被软连接到我们想要的file)(只要TOCTTOU有空挡可钻,绕过了Check就有机会创造漏洞)
【解决办法 of TOCTTOU】让Check to Use是原子的(atomic)
【解决办法 of abusing symbolic link】 Windows举例,系统会检查对于被链接到的目标目录(例如将c:\\test\\low\\链接到目标c:\\windows\\目录),当前进程是否具备写入(包括写入、追加、删除、修改属性等)权限,如果不具备这些权限(但是其实这里的check也有可能通过分析底层实现绕开),或者无法打开目标目录(例如目标目录不存在),则会拒绝。
以上是关于APUE: time-of-check-to-time-of-use(TOCTTOU)的主要内容,如果未能解决你的问题,请参考以下文章