首页 -> 安全研究

安全研究

安全公告
绿盟科技安全公告(SA2003-02)

NSFOCUS安全小组(security@nsfocus.com)
http://www.nsfocus.com

Solaris lpq 堆栈缓冲区溢出漏洞

发布日期:2003-03-31

CVE ID:CAN-2003-0091

受影响的软件及系统:
====================
Sun Solaris 2.5.1 (SPARC/x86)
Sun Solaris 2.6 (SPARC/x86)
Sun Solaris 7   (SPARC/x86)

综述:
======
NSFOCUS安全小组发现Sun Solaris系统的一个应用程序lpq中存在一个缓冲区溢出漏洞,本地攻击者可能利用这个漏洞获取root用户权限。

分析:
======
lpq是SunOS/BSD兼容软件包中的一个命令,用来显示打印队列中的内容。它缺省设置了suid root属性,由于在处理用户提供的数据时没有进行有效的边界检查,攻击者可以造成一个堆栈中的固定缓冲区发生溢出。小心地构造溢出数据攻击者可以
以root权限执行任意代码。

/usr/ucb/lpq其实是一个指向/usr/bin/lpstat的符号链接,lpstat根据调用时的程序名来进行操作, 如果是"lpq"则按照BSD风格执行,否则按System V执行。lpq中bsd_queue()函数会调用strcat()将用户提供的数据拷贝到一个固定大小的缓冲区中,由于没有检查所拷贝数据的长度,如果攻击者提供一个超长的字符串,就会造成堆栈缓冲区溢出,通过覆盖保存在堆栈中的返回地址等数据,本地攻击者可以获取root权限。

Solaris 8/9采用strlcat()进行串拷贝,因而避免了缓冲区溢出,不受此问题影响。

解决方法:
==========
NSFOCUS建议您暂时去掉lpstat(lpq)的suid root属性:
# chmod a-s /usr/bin/lpstat

厂商状态:
==========
2002-12-11  通知厂商
2002-12-13  厂商证实漏洞存在
2003-03-31  厂商发布了一个安全警告和相应补丁

Sun的安全警告可以通过下列地址访问:
http://sunsolve.Sun.COM/pub-cgi/retrieve.pl?doc=fsalert/52443

Sun已经提供了下列补丁以修复此安全漏洞:

Solaris 2.6     106235-12
Solaris 2.6_x86 106236-12
Solaris 7       107115-12
Solaris 7_x86   107116-12

附加信息:
==========
通用漏洞披露(Common Vulnerabilities and Exposures)组织CVE已经为此问题分配了一个候选名CAN-2003-0091。此名字是为了收录进CVE列表做候选之用,(http://cve.mitre.org)CVE列表致力于使安全问题的命名标准化。候选名在被正式加入CVE列表之前可能会有较大的变化。

声 明
==========

本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。

关于绿盟科技
============

绿盟科技(NSFOCUS Co., Ltd.)是中国网络安全领域的领导企业,致力于网络和系统安全问题的研究、高端网络安全产品的研发、销售与网络安全服务,在入侵检测/保护、远程评估、 DDoS攻击防护等方面提供具有国际竞争能力的先进产品,是国内最具安全服务经验的专业公司。有关绿盟科技的详情请参见: http://www.nsfocus.com

© 2019 绿盟科技