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)的主要内容,如果未能解决你的问题,请参考以下文章

apue配置问题

apue.h头文件(UNIX环境高级编程)

apue 在 mac 环境编译错误

APUE之对于系统中缺失的error.c文件的阶段性总结

UNIX环境高级编程(第三版)关于apue.h的用法

APUE学习心得