首页 -> 安全研究

安全研究

安全漏洞
BSD弱的初始序列号漏洞

发布日期:2000-10-07
更新日期:2000-10-07

受影响系统:
FreeBSD FreeBSD 4.1.1
FreeBSD FreeBSD 4.1
FreeBSD FreeBSD 4.0
FreeBSD FreeBSD 3.x
FreeBSD FreeBSD 2.x
描述:

在TCP三方握手过程中(连接初始化),接收到连接请求的主机负责产生“初始TCP序列号”。这个序列号是用来验证连接初始化的最后一步(即最终的ACK)由正确的主机完成(即只有原来发出该请求的主机才能以该序列号加1作出响应)。
传统上,由于初始序列号可猜测,这使得远程(LAN之外的)TCP连接伪装成为可能。初始序列号的可预测性是由其生成算法所决定的。4.4 BSD-Lite2及由其衍生出来的操作系统(例如FreeBSD)包含试图向初始序列号的生成中加入随机性因素的代码。但不幸的是,如果满足某些特定条件,由存在漏洞的基于BSD的操作系统所生成的初始化序列号是可预测的。以下引用FreeBSD就这个问题发布的公告:
“所使用的伪随机数发生器是一种简单的线性同余数生成程序,根据观察与服务器的合法连接中的一些初始序列号来推断,攻击者有很大可能可以猜测出用于下个连接的初始序列号的值。”
如果攻击者能监视建立在其主机和目标主机之间的一些合法连接,他就可能预测将来的初始化序列号。由于这种可能,攻击者可以对受害服务器上的基于主机地址的认证过程实施攻击。但是,为了成功利用这个漏洞,被伪装的主机必须是关机的,或者对不是预期中的SYN-ACK不作出响应。目标服务器上也必须存在一个只使用主机地址进行认证(这使得利用这个漏洞进行伪装成为可能)的服务或应用程序。
下面是个例子,演示了如何在一个使用主机地址进行认证的程序中利用该漏洞:
Berkeley “r-services”:如果受害主机运行有这类服务,而且使用了.rhosts认证,攻击者就有可能利用这个漏洞将自己伪装成来自受信任主机的连接(这种连接不需要密码认证)。所使用的地址(即被伪装的地址)必须是受害主机所信任的且列在受害主机的.rhosts文件中。被伪装的主机也必须已关机或者不响应,这可以由攻击者通过拒绝服务攻击来完成。如果成功的话,攻击者就可以在其控制下向受害用户的.rhosts文件中加入其主机地址,使得他可以通过合法的TCP连接进行登录而无需密码认证。
已证实FreeBSD存在这个漏洞,尚不清楚其它BSD系统是否存在这个漏洞。

<* 来源:Pascal Bouchareine (pb@hert.org) *>



测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!


    暂无。


建议:
厂商补丁:

FreeBSD已经发布针对4.x和3.x的补丁:

FreeBSD FreeBSD 4.1.1:
FreeBSD FreeBSD 4.1:
FreeBSD FreeBSD 4.0:
FreeBSD patch 4.x tcp-iss.patch
ftp://ftp.freebsd.org/pub/FreeBSD/CERT/patches/SA-00:52/tcp-iss.patch
# cd /usr/src/sys/netinet
# patch -p < /path/to/patch_or_advisory

然后按照http://www.freebsd.org/handbook/kernelconfig.html所描述的重新编译内核并重启系统



FreeBSD FreeBSD 3.x:

FreeBSD patch 3.x tcp-iss-3.x.patch
ftp://ftp.freebsd.org/pub/FreeBSD/CERT/patches/SA-00:52/tcp-iss-3.x.patch
# cd /usr/src/sys/netinet
# patch -p < /path/to/patch_or_advisory

然后按照http://www.freebsd.org/handbook/kernelconfig.html所描述的重新编译内核并重启系统



浏览次数:8115
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障