信息來(lái)源:nosec
近期,有安全研究人員在發(fā)現(xiàn)了Linux、Unix系統(tǒng)上一個(gè)新的漏洞,可讓攻擊者劫持受影響設(shè)備上的VPN連接,將任意payload注入IPv4和IPv6的TCP數(shù)據(jù)流中。
他們已向發(fā)行版Linux廠商和Linux內(nèi)核安全團(tuán)隊(duì),以及其他受影響的公司(例如Systemd,Google,Apple,OpenVPN和WireGuard)通報(bào)了該漏洞(CVE-2019-14899)。
根據(jù)研究人員的說(shuō)法,該漏洞會(huì)影響絕大多數(shù)Linux發(fā)行版和類(lèi)Unix操作系統(tǒng),包括FreeBSD、OpenBSD、macOS、iOS和Android在內(nèi)。
目前可以找到的受影響的操作系統(tǒng)如下所示,未來(lái)這個(gè)列表可能還會(huì)增長(zhǎng):
? Ubuntu 19.10 (systemd)
? Fedora (systemd)
? Debian 10.2 (systemd)
? Arch 2019.05 (systemd)
? Manjaro 18.1.1 (systemd)
? Devuan (sysV init)
? MX Linux 19 (Mepis+antiX)
? Void Linux (runit)
? Slackware 14.2 (rc.d)
? Deepin (rc.d)
? FreeBSD (rc.d)
? OpenBSD (rc.d)
所有VPN應(yīng)用都受到影響
根據(jù)新墨西哥大學(xué)的研究人員William J. Tolley, Beau Kujath和Jedidiah R. Crandall所發(fā)布的報(bào)告,這個(gè)安全漏洞可讓鄰近網(wǎng)絡(luò)攻擊者了解到是否有另一個(gè)用戶(hù)連接到VPN,其被分配的虛擬IP地址,是否訪(fǎng)問(wèn)了某個(gè)特定網(wǎng)站。
此外,攻擊者可以通過(guò)計(jì)算加密包的數(shù)量或檢查它們的大小來(lái)確定確切的seq和ack數(shù)目。這樣就能將惡意數(shù)據(jù)注入TCP流,劫持連接。
目前已確定CVE-2019-14899可以對(duì)OpenVPN、WireGuard和IKEv2/IPSec發(fā)起攻擊,研究人員正在測(cè)試如何對(duì)Tor進(jìn)行攻擊。
研究人員還指出,漏洞和所使用的VPN技術(shù)無(wú)關(guān),即使VPN流量都經(jīng)過(guò)了各種加密,但根據(jù)數(shù)據(jù)包的大小以及數(shù)據(jù)包的數(shù)量就足以確定數(shù)據(jù)包的類(lèi)型。
在Ubuntu 19.10發(fā)布之前,這種攻擊對(duì)我們所測(cè)試的任何Linux發(fā)行版都不起作用,此時(shí)我們注意到rp_filter被設(shè)置為loose模式,也就是在2018年11月28日,systemd存儲(chǔ)庫(kù)中的sysctl.d/50-default.conf的默認(rèn)設(shè)置從“strict”模式更改為“l(fā)oose”模式,而在此日期之后使用默認(rèn)配置的systemd都會(huì)受到該攻擊的影響。我們測(cè)試的大多數(shù)其他init系統(tǒng)的Linux發(fā)行版系統(tǒng)都將該值設(shè)置為0(Linux內(nèi)核的默認(rèn)值)。
總而言之,研究人員發(fā)現(xiàn),在2018年11月28日之后發(fā)布的所有systemd版本的發(fā)行版系統(tǒng)都存在漏洞。
因此,在此日期之后出現(xiàn)的systemd版本的Linux發(fā)系統(tǒng)若沒(méi)有更改默認(rèn)配置,都容易受到攻擊。
而且這個(gè)漏洞會(huì)影響各種init系統(tǒng),并不僅是與systemd相關(guān)。
此外,網(wǎng)絡(luò)安全顧問(wèn)Noel Kuntze在回應(yīng)漏洞報(bào)告時(shí)表示,只有基于路由的VPN應(yīng)用受到該漏洞的影響。
一名據(jù)稱(chēng)是亞馬遜網(wǎng)絡(luò)服務(wù)的員工表示,亞馬遜的Linux發(fā)行版系統(tǒng)和AWS VPN產(chǎn)品不受這一漏洞影響。
防御方法
根據(jù)研究人員的說(shuō)法,可以通過(guò)啟用反向路徑過(guò)濾、偽造IP過(guò)濾或借助加密數(shù)據(jù)包大小和時(shí)間來(lái)實(shí)現(xiàn)防御。
以下是進(jìn)行攻擊所需的步驟,旨在劫持目標(biāo)的VPN連接:
1.確定VPN客戶(hù)機(jī)的虛擬IP地址
2.根據(jù)虛擬IP地址得到活動(dòng)鏈接
3.使用加密回復(fù)主動(dòng)發(fā)包,以確定連接的seq和ack數(shù)目,從而劫持TCP會(huì)話(huà)