Linux不可读的文件跟踪

受影响的系统:



Linux内核2.2.17



Linux内核2.2.16



Linux内核2.2.15



Linux内核2.2.14



Linux内核2.2.13



Linux内核2.2.12



Linux内核2.2.10



受影响的系统:



Linux内核2.4



描述:



是一个UNIX系统调用ptrace。它通常用于分析断点调试中的运行过程。GDB,strace和其他调试工具使用这个系统调用,Linux 2.2改成实现。x内核的内核,甚至更早的版本,有一个漏洞,允许攻击者获取敏感信息的未授权访问。



出于安全原因,普通用户不能使用ptrace()系统调用跟踪分析setuid程序,而不能使用这些调试工具与其他用户运行的进程。如果二进制文件是不可读的酒吧用户foo(R权限删除)、foo用户无权使用ptrace()系统调用跟踪条执行程序。



所有这些限制是在实施检查的ptrace(pt_attach,…)。然而,当ptrace()用于跟踪的子进程,它不能正确地检查安全限制。bar程序可以为富用户执行。即使它们不可读,它们也可以根据子进程跟踪bar程序的执行过程。在这个时候,我们可以观察栏程序内存映射,恶意用户可以利用这个技术来获取敏感信息,这原本是敏感信息通过chmod go-r防止这种窥探像琴弦吧。这个漏洞可以被用来进一步损害系统的安全性。



试验方法:



警告



下列程序(方法)可能是攻击性的,仅供安全研究和教学使用,用户的风险自负!



下一个例子是使用ptrace(pt_attach,…)来追踪一个非可执行文件:



$ ls -l测试文件



——————×1×rwx根216916个12月4日11:59



美元/个。



等待...假设测试文件不能运行后,立即结束



从另一个shell执行跟踪命令:



11535个信息元P 11535是假设的过程



附:ptrace(ptrace_attach,…):不允许操作



因为测试文件是不可读的,跟踪失败,这是正确的安全限制。



--------------------------------------------------------------------------



下一个例子成功的跟踪不可读的文件使用子过程:



$ strace测试文件



sys_197(0x3,0xbffff650,0x40197d40,0x80cca38,0x3)= - 1 enosys(功能未实现)



fstat(3,{ st_mode = s_ifreg | st_size = 0644,1744,…})= 0



mmap(0, 4096,prot_read | prot_write,map_private | map_anonymous,- 1, 0)= 0x40015000







建议:



将内核升级到2.4