此仓库包含我在布加勒斯特大学FMI学院"操作系统:设计与安全"课程中撰写的关于CVE-2016-5195(Linux权限提升漏洞)的论文和演示幻灯片。
在我的论文中,我声称可以利用Dirty COW悄无声息地对二进制文件植后门,而无需立即提升至root权限以增加检测难度。
这实际上并不正确,因为当尝试回写被修改的页面时,内核会注意到该页面脏了(本来不应该如此),从而引发内核恐慌,导致系统崩溃。
为防止这种情况,你必须立即提权至root并禁用自动回写,通过执行"echo 0 > /proc/sys/vm/dirty_writeback_centisecs"。 我的概念验证代码没有这么做, 因此在虚拟机中测试时,在成功修改/etc/passwd后很快就会崩溃 (该修改不会被持久化到磁盘)。
https://www.exploit-db.com/exploits/40847 是一个漏洞利用代码示例,它会覆盖/etc/passwd,然后禁用回写以防止崩溃。
其他方法包括修补vDSO(https://github.com/scumjr/dirtycow-vdso)而不是文件映射页, 这会影响系统上所有进程且不会崩溃, 并且还有其他优点,比如可以逃逸容器,且不受SELinux限制的影响(SELinux可能阻止以只读方式打开/etc/passwd进行攻击)。
虽然你确实可以在提权至root后对系统植后门(与其他任何提权方法相同), 但这将涉及普通文件系统操作,可能被入侵检测系统发现;而如果回写像我最初设想的那样工作,它可能会绕过对写操作的监控,因为内核仅通过回写页面实现,不涉及写系统调用,但实际结果是内核直接恐慌。