CVE:CVE-2004-0077
CNNVD:CNNVD-200403-026
Linux是一款开放源代码操作系统。
Linux内核中mremap(2)系统调用由于没有对函数返回值进行检查，本地攻击者可以利用这个漏洞获得root用户权限。
mremap系统调用被应用程序用来改变映射区段(VMAs)的边界地址。mremap()系统调用提供对已存在虚拟内存区域调整大小。从VMA区域移动部分虚拟内存到新的区域需要建立一个新的VMA描述符，也就是把由VMA描述的下面的页面表条目(page table entries)从老的区域拷贝到进程页表中新的位置。
要完成这个任务do_mremap代码需要调用do_munmap()内部内核函数去清除在新位置中任何已经存在的内存映射，也就是删除旧的虚拟内存映射。不幸的是代码没有对do_munmap()函数的返回值进行检查，如果可用VMA描述符的最大数已经超出，那么函数调用就可能失败。
isec利用这个漏洞通过页表缓冲(page table cache)使包含在页中的恶意指令被执行。详细方法可参看如下地址：
http://isec.pl/vulnerabilities/isec-0014-mremap-unmap.txt
solution:Upgrade redhat bigmem_kernel to a higher version than 2.4.20-8,and avoid the version 2.4.20-8; Upgrade redhat kernel to a higher version than 2.4.20-8,and avoid the version 2.4.20-8; Upgrade redhat kernel_doc to a higher version than 2.4.20-8,and avoid the version 2.4.20-8; Upgrade redhat kernel_source to a higher version than 2.4.20-8,and avoid the version 2.4.20-8; Upgrade linux linux_kernel to a higher version than 2.2.0,2.2.1,2.2.2,2.2.3,2.2.4,2.2.5,2.2.6,2.2.7,2.2.8,2.2.9,2.2.10,2.2.11,2.2.12,2.2.13,2.2.14,2.2.15,2.2.15:pre16,2.2.15_pre20,2.2.16,2.2.16:pre6,2.2.17,2.2.18,2.2.19,2.2.20,2.2.21,2.2.22,2.2.23,2.2.24,2.4.0,2.4.0:test1,2.4.0:test10,2.4.0:test11,2.4.0:test12,2.4.0:test2,2.4.0:test3,2.4.0:test4,2.4.0:test5,2.4.0:test6,2.4.0:test7,2.4.0:test8,2.4.0:test9,2.4.1,2.4.2,2.4.3,2.4.4,2.4.5,2.4.6,2.4.7,2.4.8,2.4.9,2.4.10,2.4.11,2.4.12,2.4.13,2.4.14,2.4.15,2.4.16,2.4.17,2.4.18,2.4.18:pre1,2.4.18:pre2,2.4.18:pre3,2.4.18:pre4,2.4.18:pre5,2.4.18:pre6,2.4.18:pre7,2.4.18:pre8,2.4.19,2.4.19:pre1,2.4.19:pre2,2.4.19:pre3,2.4.19:pre4,2.4.19:pre5,2.4.19:pre6,2.4.20,2.4.21,2.4.21:pre1,2.4.21:pre4,2.4.21:pre7,2.4.22,2.4.23,2.4.23:pre9,2.4.24,2.6.0,2.6.0:test1,2.6.0:test10,2.6.0:test11,2.6.0:test2,2.6.0:test3,2.6.0:test4,2.6.0:test5,2.6.0:test6,2.6.0:test7,2.6.0:test8,2.6.0:test9,2.6.1:rc1,2.6.1:rc2,2.6.2,2.6_test9_cvs,and avoid the version 2.2.0,2.2.1,2.2.2,2.2.3,2.2.4,2.2.5,2.2.6,2.2.7,2.2.8,2.2.9,2.2.10,2.2.11,2.2.12,2.2.13,2.2.14,2.2.15,2.2.15:pre16,2.2.15_pre20,2.2.16,2.2.16:pre6,2.2.17,2.2.18,2.2.19,2.2.20,2.2.21,2.2.22,2.2.23,2.2.24,2.4.0,2.4.0:test1,2.4.0:test10,2.4.0:test11,2.4.0:test12,2.4.0:test2,2.4.0:test3,2.4.0:test4,2.4.0:test5,2.4.0:test6,2.4.0:test7,2.4.0:test8,2.4.0:test9,2.4.1,2.4.2,2.4.3,2.4.4,2.4.5,2.4.6,2.4.7,2.4.8,2.4.9,2.4.10,2.4.11,2.4.12,2.4.13,2.4.14,2.4.15,2.4.16,2.4.17,2.4.18,2.4.18:pre1,2.4.18:pre2,2.4.18:pre3,2.4.18:pre4,2.4.18:pre5,2.4.18:pre6,2.4.18:pre7,2.4.18:pre8,2.4.19,2.4.19:pre1,2.4.19:pre2,2.4.19:pre3,2.4.19:pre4,2.4.19:pre5,2.4.19:pre6,2.4.20,2.4.21,2.4.21:pre1,2.4.21:pre4,2.4.21:pre7,2.4.22,2.4.23,2.4.23:pre9,2.4.24,2.6.0,2.6.0:test1,2.6.0:test10,2.6.0:test11,2.6.0:test2,2.6.0:test3,2.6.0:test4,2.6.0:test5,2.6.0:test6,2.6.0:test7,2.6.0:test8,2.6.0:test9,2.6.1:rc1,2.6.1:rc2,2.6.2,2.6_test9_cvs; Upgrade netwosix netwosix_linux to a higher version than 1.0,and avoid the version 1.0; Upgrade trustix secure_linux to a higher version than 1.5,2.0,and avoid the version 1.5,2.0