發布日期:2007-10-10
更新日期:2007-10-11
受影響系統:
Cisco IOS 12.3(22)
不受影響系統:
Cisco IOS 12.4(2)T6
Cisco IOS 12.4(16a)
Cisco IOS 12.2(18)SXF11
描述:
--------------------------------------------------------------------------------
BUGTRAQ ID: 26001
Cisco IOS是Cisco網絡設備中所使用的操作系統。
Cisco IOS的LPD服務在處理超長的設備名時存在緩沖區溢出漏洞,遠程攻擊者可能利用此漏洞控制設備或導致設備拒絕服務。
行式打印機服務(LPD)用于在Cisco IOS中提供打印服務。如果IOS中配置了LPD守護程序的話,該服務會監聽于默認的LPD端口TCP 515。如果任何非515的源TCP端口進行連接時,就會顯示以下錯誤:
$ telnet 172.30.3.101 515
Trying 172.30.3.101...
Connected to 172.30.3.101 (172.30.3.101).
Escape character is '^]'.
hostname_of_the_router: /usr/lib/lpd: Malformed from address
如果主機名大于等于99個字符的話,就會由于調用sprintf()函數而導致溢出。盡管技術上是棧溢出,但由于IOS為進程棧分配堆內存,因此所覆蓋的內存實際為堆。由于堆內存用作了棧,在出現溢出時主機名可以覆蓋存儲在字符緩沖區開始之前的返回地址,但由于某些原因在緩沖區到達堆塊邊界處的red zone之前不會出現崩潰,因此在出現崩潰和路由器重啟后,內存dump顯示的是堆破壞。
必須要控制主機名才能利用這個漏洞。如果設備上在運行SNMP且知道rw團體字符串(通常為默認值private),就可以如下設置主機名:
$ snmpset -Os -c private -v 1 10.0.0.1 system.sysName.0 s long_hostname
<*來源:Andy Davis (advisories@irmplc.com)
鏈接:http://www.irmplc.com/index.php/155-Advisory-024
http://www.cisco.com/warp/public/707/cisco-sr-20071010-lpd.shtml
http://secunia.com/advisories/27169/
*>
建議:
--------------------------------------------------------------------------------
臨時解決方法:
* 使用no printer命令禁用LPD服務。
* 配置訪問列表限制對TCP 515端口的訪問。
廠商補丁:
Cisco
-----
目前廠商已經發布了升級補丁以修復這個安全問題,請到廠商的主頁下載: