BUGTRAQ ID: 32904 Solaris是一款由Sun开发和维护的商业性质UNIX操作系统。 Solaris的IP隧道实现中存在空指针引用漏洞,本地攻击者可以通过发送特制的SIOCGTUNPARAM IOCTL请求导致拒绝服务或执行任意内核态代码。 以下是inet/ip/ip.c中的有漏洞代码段: [...] 26692 void 26693 ip_process_ioctl(ipsq_t *ipsq, queue_t *q, mblk_t *mp, void *arg) 26694 { [...] 26717 [1] ci.ci_ipif = NULL [...] 26735 case TUN_CMD: [...] 26740 [2] err = ip_extract_tunreq(q, mp, &ci.ci_ipif, ip_process_ioctl); 26741 if (err != 0) { 26742 ip_ioctl_finish(q, mp, err, IPI2MODE(ipip), NULL); 26743 return; 26744 } [...] 26782 if (!(ipip->ipi_flags & IPI_WR)) { [...] 26788 [3] err = (*ipip->ipi_func)(ci.ci_ipif, ci.ci_sin, q, mp, ipip, 26789 ci.ci_lifr); [...] [1] ci.ci_ipif的值设置为NULL。 [2] 当调用SIOCGTUNPARAM IOCTL时,会选择switch case语句TUN_CMD,调用ip_extract_tunreq()函数。 [3] 如果ip_extract_tunreq()函数的返回值为0,之后会将ci.ci_ipif变量用作ip_sioctl_tunparam()函数的第一个参数。 [...] 9468 int 9469 ip_sioctl_tunparam(ipif_t *ipif, sin_t *dummy_sin, queue_t *q, mblk_t *mp, 9470 ip_ioctl_cmd_t *ipip, void *dummy_ifreq) 9471 { ... 9499...
BUGTRAQ ID: 32904 Solaris是一款由Sun开发和维护的商业性质UNIX操作系统。 Solaris的IP隧道实现中存在空指针引用漏洞,本地攻击者可以通过发送特制的SIOCGTUNPARAM IOCTL请求导致拒绝服务或执行任意内核态代码。 以下是inet/ip/ip.c中的有漏洞代码段: [...] 26692 void 26693 ip_process_ioctl(ipsq_t *ipsq, queue_t *q, mblk_t *mp, void *arg) 26694 { [...] 26717 [1] ci.ci_ipif = NULL [...] 26735 case TUN_CMD: [...] 26740 [2] err = ip_extract_tunreq(q, mp, &ci.ci_ipif, ip_process_ioctl); 26741 if (err != 0) { 26742 ip_ioctl_finish(q, mp, err, IPI2MODE(ipip), NULL); 26743 return; 26744 } [...] 26782 if (!(ipip->ipi_flags & IPI_WR)) { [...] 26788 [3] err = (*ipip->ipi_func)(ci.ci_ipif, ci.ci_sin, q, mp, ipip, 26789 ci.ci_lifr); [...] [1] ci.ci_ipif的值设置为NULL。 [2] 当调用SIOCGTUNPARAM IOCTL时,会选择switch case语句TUN_CMD,调用ip_extract_tunreq()函数。 [3] 如果ip_extract_tunreq()函数的返回值为0,之后会将ci.ci_ipif变量用作ip_sioctl_tunparam()函数的第一个参数。 [...] 9468 int 9469 ip_sioctl_tunparam(ipif_t *ipif, sin_t *dummy_sin, queue_t *q, mblk_t *mp, 9470 ip_ioctl_cmd_t *ipip, void *dummy_ifreq) 9471 { ... 9499 [4] ill = ipif->ipif_ill; [...] 在ip_sioctl_tunparam()函数中,使用第一个参数ipif引用某些数据([4])。 当ci.ci_ipif设置为NULL的时候,可以以返回值0从ip_extract_tunreq()函数返回([2])。由于ipif与ci.ci_ipif值同为NULL,这可能导致空指针应用([4])。 在x86平台上这个空指针引用可能导致执行任意内核态代码,而在SPARC平台上只能导致拒绝服务。 Sun Solaris 10.0_x86 Sun Solaris 10.0 Sun OpenSolaris snv_01 - snv_76 Sun --- Sun已经为此发布了一个安全公告(Sun-Alert-242266)以及相应补丁: Sun-Alert-242266:Security Vulnerability in Solaris IP Tunnel Parameter Processing May Lead to a System Panic or Possible Execution of Arbitrary Code by Unprivileged Users 链接:<a href=http://sunsolve.sun.com/search/printfriendly.do?assetkey=1-66-242266-1 target=_blank>http://sunsolve.sun.com/search/printfriendly.do?assetkey=1-66-242266-1</a>