※黑客攻防指南※=>系统漏洞=>FreeBSD安全通告: telnetd包含远程缓存溢出
FreeBSD安全通告: telnetd包含远程缓存溢出  


作者:FreeBSD.ORG quany译 来源:http://www.freebsd.org 2001-08-10 19:06:02

--------------------------------------------------------------------------------

FreeBSD-SA-01:
安全通告
FreeBSD, 公司.


题目: telnetd 包含远程缓存溢出
类别: 核心
模块: telnetd
公布: 2001-07-23
修订: 2001-07-27
确认: Sebastian
影响: 所有FreeBSD4.4版本以前的FreeBSD 3.x, 4.x发行版本
   更正日期以前的FreeBSD 4.3-STABLE
改正日期: 2001-07-23
是否仅限于FreeBSD: 不是

0.修订历史

  2001-07-23 v1.0 最初发行
  2001-07-27 v1.1 更新补丁说明, kerberosIV补丁包可用,增加对SSH 的说明

I.背景

  telnetd 提供实现远程虚拟终端协议的服务。

II.问题描述

  FreeBSD的telnetd服务程序被发现含有缓存溢出漏洞,因为对用于远程客户输出数据缓存范围的不正确检查, 攻击者可以促使缓存溢出并崩溃,或者以telnetd运行者身份(通常是root)运行恶意代码, 利用该弱点并不需要一个正式的系统帐号和密码 ,只要能连接到服务器的telnet端口就行。

  如果安装FreeBSD时未选择"high"安全模式,telnetd都是默认运行的. 这个弱点可以被利用,并且经常被利用。

  在更正日期以前的所有发行版本FreeBSD包括3.5.1-RELEASE、4.3-RELEASE都因这个原因被攻击。在即将发行的4.4-RELEASE版本中不含这个漏洞。

III.效果

  远程用户可以用telnetd的运行者身份(通常是root)执行有害命令。

IV. 处理办法

1) 停止telnet服务,这个服务一般由inetd启动:
  在 /etc/inetd.conf文件中如果有以下行,将其注释掉,
telnet stream tcp nowait root /usr/libexec/telnetd telnetd
telnet stream tcp6 nowait root /usr/libexec/telnetd telnetd

  以root身份运行以下命令
# kill -HUP 'cat /var/run/inetd.pid'

  您可以选别的远程登陆协议来替代Telnet,比如说SSH安全shell 协议(这个在FreeBSD的默认安装中都有包括)。因其增强的安全性,SSH 协议被FreeBSD 系统推荐用于远程登陆,它比telnet能提供更安全和完整的保护。

2) 使用TCP wrappers (/etc/hosts.allow)增加访问限制,在周边防火墙或服务器上安装网络级的信息包过滤器,比如ipfw(8) or ipf,以限制只有信任的机器才能访问telnet服务。

V. 解决方案

  任选其一:
  1) 将您易受攻击的FreeBSD系统升级到更正日期以后的4.3-STABLE或RELENG_4_3 安全版本。
  2) FreeBSD 3.5.1, 4.x 更正日期以前的版本

  以系统是否装有/usr/src/crypto/telnet源码划分,有两种版本的补丁包可用,为检测您系统是否装有该源码,运行以下命令:

# ls /usr/src/crypto/telnet/telnetd

  可能的结果是:
ls: /usr/src/crypto/telnet/telnetd: No such file or directory

  这表示您没有crypto 源码,需要下载non-crypto-telnet补丁:详情请看下面的 2b)

  这些补丁已在下面的系统获得验证:2001-07-20以前的FreeBSD 4.2-RELEASE,4.3-RELEASE and 3.5.1-STABLE (使用3.5.1-RELEASE的用户必须先安装先前FreeBSD 安全通告00:69的补丁,然后安装该补丁). 这些补丁不使用于更早期的或别的非支持版本FreeBSD.

2a) 安装了crypto-telnet源码的系统

  在FreeBSD 4.x环境下,crypto-telnet客户程序有两种模式:有或没有对Kerberos IV 认证的支持,在FreeBSD 3.x 环境下,都有KerberosIV支持。

  检测您的系统是否安装了kerberosIV,运行以下命令:
# ls /usr/lib/libkrb.a

  可能的结果是:
/usr/lib/libkrb.a # 这表示您装了kerberosIV
ls: /usr/lib/libkrb.a: No such file or directory #这表示您没装kerberosIV

  下载补丁包,然后校验PGP信息

ftp://ftp.freebsd.org/pub/FreeBSD/CERT/patches/SA-01:49/telnetd-crypto.patch
ftp://ftp.freebsd.org/pub/FreeBSD/CERT/patches/SA-01:49/telnetd-crypto.patch.asc

2aa) 对于安装了crypto-telnet源码,但没有安装KerberosIV的

[FreeBSD 4.x systems]

# cd /usr/src/
# patch -p < /path/to/patch
# cd /usr/src/secure/lib/libtelnet
# make depend && make all
# cd /usr/src/secure/libexec/telnetd
# make depend && make all install

[FreeBSD 3.x systems]

# cd /usr/src/
# patch -p < /path/to/patch
# cd /usr/src/lib/libtelnet
# make depend && make all
# cd /usr/src/libexec/telnetd
# make depend && make all install

2ab)对于安装了crypto-telnet源码,也安装了KerberosIV的

# cd /usr/src/
# patch -p < /path/to/patch
# cd /usr/src/kerberosIV/lib/libtelnet
# make depend && make all
# cd /usr/src/kerberosIV/libexec/telnetd
# make depend && make all install

2b)对于没安装crypto-telnet源码的
  下载补丁包,然后校验PGP信息

ftp://ftp.freebsd.org/pub/FreeBSD/CERT/patches/SA-01:49/telnetd.patch
ftp://ftp.freebsd.org/pub/FreeBSD/CERT/patches/SA-01:49/telnetd.patch.asc

# cd /usr/src/
# patch -p < /path/to/patch
# cd /usr/src/lib/libtelnet
# make depend && make all
# cd /usr/src/libexec/telnetd
# make depend && make all install

3) 运行FreeBSD 4.3-RELEASE的系统:

  如果愿意就二进制直接打补丁方式进行测试和提供情况反馈,这里还有一个实验性质的补丁包可用。该补丁包只能安装于FreeBSD 4.3-RELEASE系统, 主要面向不便或不熟练使用源码补丁的人

  如果您使用这种这种补丁包,请将各种意见反馈至security-officer@FreeBSD.org以作为我们的将来参考。

  在安装过程中,被替换文件会被妥善备份.在将来删除安装包时,这些旧文件会被恢复,回到初始状态。有三个版本的升级package 可供选择,这取决于您的系统是否安装了crypto或kerberosIV

  判断您的系统是否装了crypto 运行以下命令:
# ls /usr/bin/openssl

  可能的结果是:
/usr/bin/openssl # 这表示您装了crypto
或ls: /usr/bin/openssl: No such file or directory # 这表示您没装crypto

  判断您的系统是否包含kerberosIV,运行以下命令:
# ls /usr/lib/libkrb.a

  可能的结果是:
/usr/lib/libkrb.a # 这表示您装了kerberosIV
或ls: /usr/lib/libkrb.a: No such file or directory # 这表示您没装kerberosIV

3a) 如果装了crypto
# 获取ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/packages/SA-01:49/security-patch-telnetd-crypto-01.49.tgz
# 获取ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/packages/SA-01:49/security-patch-telnetd-crypto-01.49.tgz.asc

  先校验PGP信息,然后运行
# pkg_add security-patch-telnetd-crypto-01.49.tgz

3b) 如果装了kerberosIV
# 获取ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/packages/SA-01:49/security-patch-telnetd-kerberosIV-01.49.tgz
#获取ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/packages/SA-01:49/security-patch-telnetd-kerberosIV-01.49.tgz.asc
  先校验PGP信息,然后运行
# pkg_add security-patch-telnetd-kerberosIV-01.49.tgz

3c) 如果crypto、kerberosIV都没装
# 获取ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/packages/SA-01:49/security-patch-telnetd-01.49.tgz
# 获取ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/packages/SA-01:49/security-patch-telnetd-01.49.tgz.asc

  先校验PGP信息,然后运行
# pkg_add security-patch-telnetd-01.49.tgz

主目录 分目录

Copyright By「黑白网络工作室」2002 All Rights Reserve