翻译:m6aa8k
预估稿费:100RMB(不服你也来投稿啊!)
投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿
前言
最近,一个针对OpenSSL红色警戒(SSL Death Alert)漏洞的安全补丁引起了我们的关注。与其他严重的安全漏洞一样,这个漏洞同样也引起了我们的注意,因为据漏洞的发现者称,有此漏洞的OpenSSL Web服务器可能会受到拒绝服务攻击的威胁。为了更好地保护我们的客户免受这种攻击,McAfee Labs IPS漏洞研究小组针对这个问题展开了深入的调查,以便提供针对该漏洞的检测和预防措施。
漏洞分析
我们的分析工作是从最近推出的代码的补丁差异报告开始着手的。
从以上报告可以看到,为了解决这个问题,已经对多个文件进行了相应的修改。
其中,利用diff命令检查include/openssl/ssl.h后发现,它引入了新的错误代码SSL_R_TOO_MANY_WARN_ALERTS(409)。
在ssl/record/record_locl.h中,我们可以看到其中引入了MAX_WARN_ALERT_COUNT,并将其设为5。
现在,让我们来深入考察实际的补丁代码,它位于文件ssl/record/rec_layer_d1.c和ssl/record/rec_layer_s3.c中。
下图显示了两个文件中的补丁更改情况。
ssl/record/rec_layer_d1.c
ssl/record/rec_layer_s3.c
正如我们所看到的那样,这个补丁非常简单。它只是对连续的SSL3_AL_WARNING警报包的层数进行累加,并检查计数是否大于5。如果计数大于5,它会引发错误。
利用这个安全问题
为了针对这种DoS攻击提供相应的检测和预防措施,我们创建了一个最简单的概念证明代码。虽然没有公开的漏洞利用代码可用,但是该漏洞的通报已经提供了大量的技术细节。要想利用这个安全漏洞,我们必须引发SSL握手过程。作为握手过程的一部分,攻击者必须向服务器发送一个正常的客户端 Hello数据包。以下屏幕截图显示了攻击的第一阶段捕获的数据包,即正常的客户端Hello数据包。
如安全公告中所述,为了耗尽CPU,我们需要向服务器发送大量精心设计的明文SSL3_AL_WARNING警报数据包。为此,我们必须了解警报包的结构。根据这个TLS协议备忘录的规定,该消息如下所示。
该警报消息可以进行加密,但就这里而言,我们必须向有此漏洞的服务器发送明文警报。
以下屏幕截图显示了在我们的测试环境中捕获的SSL3_AL_WARNING数据包。
接下来,我们看一下在单个消息中打包的多个警报。
该警报包的结构如下所示:
为了对开发的漏洞利用代码进行测试,我们配置了一个支持OpenSSL、自签名证书和私钥的测试服务器。以下屏幕截图表明,该服务器正在侦听4433端口,并且正在与SSL客户端进行通信。
当服务器与客户端进行正常SSL通信的时候,该服务器进程的CPU消耗并未出现异常。
然而,一旦通过该漏洞利用代码对服务器发动攻击,我们就会发现该服务器进程立即就会停止响应,因为CPU使用率马上高达99%,并且几秒钟后会达到100%。
当CPU利用率爆表的时候,自然会导致OpenSSL服务器拒绝服务,因为它已经无法访问了。在上述测试环境中,我们注意到,只要该漏洞利用代码一旦停止发送恶意数据包,SSL服务就会立即恢复。
总结
服务器管理员应尽快给OpenSSL服务器安装相应的补丁程序。McAfee网络安全平台(IPS)的0x45c09000签名可以用来检测和预防该攻击。
发表评论
您还未登录,请先登录。
登录