近日, freebuf等国内外安全机构发布了"脏牛"漏洞,即Dirty COW,该漏洞为Linux的一个本地提权漏洞,影响>=2.6.22的所有Linux内核版本,包括所有版本的Android系统,漏洞的原因是get_user_page内核函数在处理写时复制(Copy-on-Write)的过程中,可能产生出竞态条件造成写时复制过程被破坏,导致出现将数据写入进程地址空间只读内存区域的可能。如果我们向标记为MAP_PRIVATE的只读文件映射区域写数据时,系统会分配另外的内存空间,产生映射文件的复制,然后在复制的内容中修改,并不写回原来的文件。但如果竞态条件发生,就能写回原来的文件。黑客可以利用此漏洞修改su或者passwd程序提取root权限。
虽然只有在多种条件都满足的情况下才能触发内核的竞态条件,但"脏牛"漏洞年代久远,每个Linux用户应该尽早更新补丁以修复此漏洞。
freebuf的报告地址:
http://www.freebuf.com/vuls/117331.html
对于次漏洞,比特网内核函数层次的解释:
http://sec.chinabyte.com/491/13953491.shtml