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也有可能通过分析底层实现绕开),或者无法打开目标目录(例如目标目录不存在),则会拒绝。

转载于:https://www.cnblogs.com/aristocracy/p/8215754.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值