HP-UX 中的很多程序都使用libc库中的catopen()/catgets()等函数来显示本地化的信息。catopen()函数在检测到NLSPATH环境变量之后,会打开其指定的文件并从中读取消息。 然而,catopen()函数并没有对suid root程序使用NLSPATH变量进行限制,这允许本地攻击者通过设置NLSPATH变量指定自己构造的locale文件,当suid root程序将使用catopen()打开该消息文件并将其中的数据传递给*printf()函数时,就可能造成格式串漏洞。 任何使用catopen()/catgets()函数的suid root程序都可能受此漏洞影响,本地攻击者可以利用此漏洞获取root权限。 根据我们的测试,至少如下程序是受影响的: -r-sr-xr-x 1 root bin 45056 Nov 14 2000 /usr/bin/at -r-sr-xr-x 1 root bin 24576 Nov 14 2000 /usr/bin/crontab -r-sr-xr-x 1 root bin 45056 Nov 14 2000 /usr/bin/ct -r-sr-xr-x 1 root bin 36864 Apr 19 2001 /usr/bin/cu -r-sr-xr-x 1 root bin 20480 Nov 14 2000 /usr/lbin/exrecover -r-sr-xr-x 1 root bin 40960 Aug 16 2001 /usr/bin/lp -r-sr-sr-x 2 root mail 45056 Nov 14 2000 /usr/bin/mail -r-sr-xr-x 5 root bin 45056 Nov 14 2000 /usr/bin/passwd -r-sr-xr-x 1 root bin 24576 Nov 14 2000 /usr/bin/su -r-sr-xr-x 11 root bin 1921024 Nov 6 2001 /usr/sbin/swinstall -r-sr-xr-x 2 root bin 1028096 Nov 6 2001 /usr/sbin/swpackage
HP-UX 中的很多程序都使用libc库中的catopen()/catgets()等函数来显示本地化的信息。catopen()函数在检测到NLSPATH环境变量之后,会打开其指定的文件并从中读取消息。 然而,catopen()函数并没有对suid root程序使用NLSPATH变量进行限制,这允许本地攻击者通过设置NLSPATH变量指定自己构造的locale文件,当suid root程序将使用catopen()打开该消息文件并将其中的数据传递给*printf()函数时,就可能造成格式串漏洞。 任何使用catopen()/catgets()函数的suid root程序都可能受此漏洞影响,本地攻击者可以利用此漏洞获取root权限。 根据我们的测试,至少如下程序是受影响的: -r-sr-xr-x 1 root bin 45056 Nov 14 2000 /usr/bin/at -r-sr-xr-x 1 root bin 24576 Nov 14 2000 /usr/bin/crontab -r-sr-xr-x 1 root bin 45056 Nov 14 2000 /usr/bin/ct -r-sr-xr-x 1 root bin 36864 Apr 19 2001 /usr/bin/cu -r-sr-xr-x 1 root bin 20480 Nov 14 2000 /usr/lbin/exrecover -r-sr-xr-x 1 root bin 40960 Aug 16 2001 /usr/bin/lp -r-sr-sr-x 2 root mail 45056 Nov 14 2000 /usr/bin/mail -r-sr-xr-x 5 root bin 45056 Nov 14 2000 /usr/bin/passwd -r-sr-xr-x 1 root bin 24576 Nov 14 2000 /usr/bin/su -r-sr-xr-x 11 root bin 1921024 Nov 6 2001 /usr/sbin/swinstall -r-sr-xr-x 2 root bin 1028096 Nov 6 2001 /usr/sbin/swpackage