在評(píng)估漏洞影響時(shí),人們關(guān)注的往往是漏洞風(fēng)險(xiǎn),而實(shí)際上,漏洞潛伏的時(shí)間也是一個(gè)非常重要的因素。時(shí)間跨度大,也就意味著在此期間使用這些含有漏洞的軟件的設(shè)備更多,影響的設(shè)備就更多;而時(shí)間跨度長(zhǎng),也就意味著被利用的概率也會(huì)更高。因此,潛伏的時(shí)間長(zhǎng)短也應(yīng)該是一個(gè)重要的因素,今天就大家細(xì)數(shù)那些潛伏多年的漏洞。
5年:Stagefright漏洞
2015年7月,Stagefright庫(kù)被爆出一個(gè)重大的安全問(wèn)題,這個(gè)漏洞由于觸發(fā)條件簡(jiǎn)單而備受關(guān)注。攻擊者只需給被攻擊對(duì)象發(fā)送一條精心設(shè)計(jì)的彩信,即可控制整個(gè)手機(jī),之后可以刪除之前發(fā)送的彩信,使用戶(hù)無(wú)法輕易察覺(jué)被攻擊。漏洞由以色列移動(dòng)信息安全公司Zimperium的研究員發(fā)現(xiàn)。Stagefright系列漏洞影響之大,危害之大,堪稱(chēng)移動(dòng)界的“心臟滴血”。
產(chǎn)生漏洞的原因,都是因?yàn)閷?duì)數(shù)據(jù)校驗(yàn)完善造成的。
而漏洞影響2.2-4.0/5.0/5.1版本的Android用戶(hù),Android 2.2發(fā)布于2010年5月,也就是說(shuō)這個(gè)漏洞潛伏了5年之久。
不過(guò)接下來(lái)的漏洞就沒(méi)有這么年輕了,有的甚至潛伏了幾十年。
7年:Linux系統(tǒng)double-free漏洞
今年3月研究人員曝光一個(gè)Linux內(nèi)核漏洞,這個(gè)漏洞影響的范圍涵蓋大多數(shù)主流的Linux發(fā)行版,包括Red Hat Enterprise Linux 6, 7, Fedora, SUSE, Debian和Ubuntu。
由于漏洞可以追溯至2009年7月,那些Linux設(shè)備存在漏洞長(zhǎng)達(dá)7年了,并且研究人員很難確定漏洞是否已經(jīng)被利用過(guò)。
這個(gè)Linux漏洞編號(hào)為CVE-2017-2636,根據(jù)CVSS v3標(biāo)準(zhǔn)漏洞評(píng)分為7.8分。未經(jīng)授權(quán)的攻擊者可以利用這個(gè)漏洞注入執(zhí)行任意代碼,獲取root權(quán)限,或者發(fā)動(dòng)DoS讓系統(tǒng)崩潰。
問(wèn)題存在于N_HLDC linux內(nèi)核驅(qū)動(dòng)的競(jìng)爭(zhēng)條件問(wèn)題。這個(gè)內(nèi)核驅(qū)動(dòng)負(fù)責(zé)處理高級(jí)數(shù)據(jù)鏈路控制(High-Level Data Link Control或簡(jiǎn)稱(chēng)HDLC)數(shù)據(jù),這就導(dǎo)致了double-free漏洞。
7年:Samba遠(yuǎn)程代碼執(zhí)行漏洞
Samba是Linux和UNIX系統(tǒng)的SMB協(xié)議服務(wù)軟件,可以實(shí)現(xiàn)與其他操作系統(tǒng)(如:微軟Windows操作系統(tǒng))進(jìn)行文件系統(tǒng)、打印機(jī)和其他資源的共享。
今年5月研究人員發(fā)現(xiàn)了這個(gè)漏洞,漏洞編號(hào)為:CVE-2017-7494。如果使用了該漏洞,當(dāng)惡意的客戶(hù)端連接上一個(gè)可寫(xiě)的共享目錄時(shí),通過(guò)上傳惡意的鏈接庫(kù)文件,使服務(wù)端程序加載并執(zhí)行它,從而實(shí)現(xiàn)遠(yuǎn)程代碼執(zhí)行。根據(jù)服務(wù)器的情況,攻擊者還有可能以root身份執(zhí)行。
Samba 3.5.0到4.6.4/4.5.10/4.4.14的中間版本都受波及,也就是最早影響到7年前的版本。
9年:“臟牛”0day漏洞
Linux內(nèi)核的內(nèi)存子系統(tǒng)在處理寫(xiě)入時(shí)復(fù)制(copy-on-write, COW)時(shí)產(chǎn)生了競(jìng)爭(zhēng)條件(race condition)。惡意用戶(hù)可利用此漏洞,來(lái)獲取高權(quán)限,對(duì)只讀內(nèi)存映射進(jìn)行寫(xiě)訪(fǎng)問(wèn)。
競(jìng)爭(zhēng)條件,指的是任務(wù)執(zhí)行順序異常,可導(dǎo)致應(yīng)用崩潰,或令攻擊者有機(jī)可乘,進(jìn)一步執(zhí)行其他代碼。利用漏洞(編號(hào)CVE-2016-5195),攻擊者可在其目標(biāo)系統(tǒng)提升權(quán)限,甚至可能獲得root權(quán)限。 由于漏洞影響大,研究人員們還把它取名為“臟牛”。
根據(jù)官方發(fā)布的補(bǔ)丁信息,這個(gè)問(wèn)題可以追溯到2007年發(fā)布的Linux內(nèi)核。
11年:Linux內(nèi)核漏洞”Phoenix Talon”
2017年5月,啟明星辰ADLab提交了四個(gè)存在于Linux內(nèi)核的遠(yuǎn)程漏洞,并命名為“Phoenix Talon”,其中一個(gè)漏洞為嚴(yán)重(Critical)級(jí)別,漏洞可導(dǎo)致遠(yuǎn)程DOS,在符合一定利用條件下可導(dǎo)致遠(yuǎn)程代碼執(zhí)行,包括傳輸層的TCP、DCCP、SCTP以及網(wǎng)絡(luò)層的IPv4和IPv6協(xié)議均受影響。
漏洞本質(zhì)上是double free的問(wèn)題,使用setsockopt()函數(shù)中MCAST_JOIN_GROUP選項(xiàng),并調(diào)用accept()函數(shù)即可觸發(fā)該漏洞。
盡管之后漏洞沒(méi)有引起足夠多的重視,但這四個(gè)漏洞的影響范圍包括所有Linux kernel 2.5.69 ~ Linux kernel 4.11的內(nèi)核版本。2.5.69發(fā)布于2003年5月5日,而4.11發(fā)布于今年的5月5日。也就是說(shuō),時(shí)間跨度相當(dāng)長(zhǎng)。
11年:Linux內(nèi)核提權(quán)漏洞
今年2月,Linux內(nèi)核曝出權(quán)限提升漏洞(CVE-2017-6074)。
漏洞存在于Linux系統(tǒng)中的DCCP協(xié)議。按現(xiàn)在的實(shí)現(xiàn),解析DCCP協(xié)議的流程中如果dccp_v6_conn_request有返回值,就會(huì)通過(guò)dccp_rcv_state_process中的__kfree_skb釋放掉解析過(guò)程中收到了DCCP_PKT_REQUEST返回包的SKB地址。但是,如果IPV6_RECVPKTINFO開(kāi)啟的情況下編譯內(nèi)核,skb地址就會(huì)被存儲(chǔ)在ireq->pktopts,而dccp_v6_conn_request中的引用計(jì)數(shù)會(huì)增加,這樣skb就仍然會(huì)被使用。直到dccp_rcv_state_process進(jìn)程中才會(huì)被釋放。
攻擊者使用某些內(nèi)核堆噴射技術(shù)就能控制任意對(duì)象,并用任意數(shù)據(jù)重寫(xiě)其內(nèi)容。如果重寫(xiě)過(guò)的對(duì)象中包含任何可觸發(fā)的函數(shù)指針,攻擊者便可在該內(nèi)核中執(zhí)行任意代碼。
該漏洞可追溯至2005年,漏洞影響Linux操作系統(tǒng)主要發(fā)行版本,包括Redhat、Debian、OpenSUSE和Ubuntu。利用該漏洞,攻擊者可以從低權(quán)限進(jìn)程中進(jìn)行內(nèi)核代碼執(zhí)行。目前已知受影響的最老版本是2.6.18(2006年9月),不過(guò)該漏洞可能在先前的版本中已經(jīng)存在,或許從支持DCCP開(kāi)始(2005年10月的2.6.14)就已經(jīng)存在問(wèn)題了。
16年:“永恒之藍(lán)”漏洞
5月12日晚,一款名為Wannacry 的蠕蟲(chóng)勒索軟件襲擊全球網(wǎng)絡(luò),這被認(rèn)為是迄今為止最巨大的勒索交費(fèi)活動(dòng),影響到近百個(gè)國(guó)家上千家企業(yè)及公共組織。 該軟件被認(rèn)為是一種蠕蟲(chóng)變種(也被稱(chēng)為“Wanna Decrypt0r”、“Wanna Cryptor”或“ Wcry”)。
中國(guó)教育網(wǎng)相連的中國(guó)高校也出現(xiàn)大規(guī)模的感染,感染甚至波及到了公安機(jī)關(guān)使用的內(nèi)網(wǎng)。在全球范圍內(nèi)感染的計(jì)算機(jī)超過(guò)230,000。
WannaCry使用了美國(guó)國(guó)家安全局的“永恒之藍(lán)”(EternalBlue)工具進(jìn)行攻擊。今年4月,黑客組織Shadow Brokers公布了NSA使用的這款工具,導(dǎo)致工具被黑客利用傳播病毒。
而永恒之藍(lán)實(shí)際上也是一個(gè)隱匿很久的漏洞。它利用了Windows服務(wù)器消息塊1.0(SMBv1)的數(shù)個(gè)漏洞,這些漏洞在通用漏洞披露(CVE)網(wǎng)站中分別被列為CVE-2017-0143至0148。而影響到的操作系統(tǒng)從Windows XP直到Windows 8的操作系統(tǒng),微軟在2017年3月14日推送了相關(guān)補(bǔ)丁。因此漏洞隱匿的時(shí)間可以說(shuō)至少有16年。
20年:Kerberos協(xié)議漏洞
Kerberos這一名詞來(lái)源于希臘神話(huà)“三個(gè)頭的狗——冥府守門(mén)狗”,在系統(tǒng)中是一種認(rèn)證協(xié)議,使用ticket讓節(jié)點(diǎn)在不安全的網(wǎng)絡(luò)環(huán)境下進(jìn)行安全的通信,它能夠防止竊聽(tīng)、防止replay攻擊、保護(hù)數(shù)據(jù)完整性。
而利用這個(gè)漏洞的黑客可以提升自己的網(wǎng)絡(luò)權(quán)限,還可以獲取內(nèi)網(wǎng)資源,比如竊取密碼。
發(fā)送到網(wǎng)絡(luò)時(shí),并非ticket的所有部分都會(huì)被加密,通常Kerberos會(huì)檢查消息中的加密部分從而進(jìn)行認(rèn)證。
因此,有方法能夠強(qiáng)制讓Kerberos協(xié)議使用純文本和未經(jīng)加密的部分進(jìn)行認(rèn)證。
三名研究員發(fā)現(xiàn)了這一漏洞,并且起了一個(gè)藝術(shù)的名字:“奧菲斯的豎琴”。但漏洞的危害卻沒(méi)有這么藝術(shù)了,漏洞影響的是Kerberos v5,也就是影響到了20年之前的軟件,而正因?yàn)槠錃v史悠久,眾多操作系統(tǒng)和應(yīng)用中都含有這個(gè)組件,Windows、Debian、FreeBSD和Samba都使用到了Kerberos協(xié)議,影響范圍十分廣泛。
22年:Shellshock漏洞
1987年,年輕的程序員??怂咕帉?xiě)了Bash(Bourne-Again Shell的簡(jiǎn)稱(chēng))。如今,逾70%連入網(wǎng)絡(luò)的機(jī)器都裝有該免費(fèi)軟件,比如服務(wù)器、電腦、路由器、某些類(lèi)型的手機(jī),乃至冰箱和相機(jī)等日常用品。
2014年,安全專(zhuān)家警告,Bash存在一個(gè)極其令人擔(dān)憂(yōu)的軟件漏洞,編號(hào)為CVE-2014-6271。當(dāng)用戶(hù)正常訪(fǎng)問(wèn)時(shí),只要shell是喚醒狀態(tài),這個(gè)漏洞就允許攻擊者執(zhí)行任意代碼命令,為各種各樣的黑客攻擊敞開(kāi)了大門(mén)。由于Bash存在于各種操作系統(tǒng)中,這一漏洞可以被用于控制世界范圍內(nèi)數(shù)以?xún)|計(jì)的機(jī)器,或許會(huì)危及蘋(píng)果電腦(Macintosh)和使用Android操作系統(tǒng)的智能手機(jī)。好在事件發(fā)生后,各大廠(chǎng)商都紛紛積極推出補(bǔ)丁,才成功減少了漏洞的影響。
很多人會(huì)把Shellshock漏洞與同年爆發(fā)的心臟出血漏洞相提并論,但實(shí)際上Shellshock的威脅更大。“心臟出血”漏洞可以被用于從服務(wù)器上盜取密碼等行動(dòng),而Shellshock則可以用于控制整臺(tái)機(jī)器,獲取最高權(quán)限,并且利用的方式更加簡(jiǎn)單,只需要復(fù)制粘貼一條命令。而從時(shí)間來(lái)看,“心臟出血”漏洞潛伏了兩年,給大約50萬(wàn)臺(tái)機(jī)器造成影響,而后者潛伏了22年后才被發(fā)現(xiàn),應(yīng)該可以說(shuō)是壽命最長(zhǎng)的漏洞了。
開(kāi)源漏洞更多?
從數(shù)據(jù)來(lái)看Linux的漏洞可能比Windows更多,其中也不乏一些潛伏幾十年的漏洞。這就打了那些盲目信奉開(kāi)源軟件的人的臉,開(kāi)源能夠防范軟件開(kāi)發(fā)商植入“后門(mén)”,但未必漏洞更少。
開(kāi)源軟件的支持者認(rèn)為:開(kāi)放源代碼不僅能夠推動(dòng)軟件發(fā)展,還可以讓更多的開(kāi)發(fā)者檢驗(yàn)代碼的安全性。
這種想法可能源于一種思想。我們知道,密碼學(xué)中有一個(gè)柯克霍夫原則(Kerckhoffs’s principle),由奧古斯特·柯克霍夫在19世紀(jì)提出:即使密碼系統(tǒng)的任何細(xì)節(jié)已為人悉知,只要密匙(key,又稱(chēng)密鑰或密鑰)未泄漏,它也應(yīng)是安全的。它和傳統(tǒng)上使用隱密的設(shè)計(jì)、實(shí)現(xiàn)、或其他等等來(lái)提供加密的隱晦式安全想法相對(duì)。
開(kāi)源運(yùn)動(dòng)的主要領(lǐng)導(dǎo)者之一埃里克·雷蒙(Eric J. Raymond)則將它引伸到開(kāi)放源代碼軟件,稱(chēng)一套未假定敵人可獲得源代碼的資安軟件并不可靠,因此,“永無(wú)可信的封閉源碼”。反過(guò)來(lái)說(shuō),開(kāi)放源代碼比封閉源碼更安全。此種論點(diǎn)稱(chēng)為透明式的安全(security through transparency)。
然而現(xiàn)實(shí)是,很多開(kāi)源軟件的漏洞不僅沒(méi)有減少,并且一些存在很久的漏洞也未曾被發(fā)現(xiàn)。
埃里克·雷蒙曾經(jīng)說(shuō)過(guò),“只要吸引足夠多的眼球,一切漏洞都很淺顯。”但是,哥倫比亞大學(xué)計(jì)算機(jī)科學(xué)教授史蒂夫·貝羅文說(shuō),在這件事情上,吸引更多眼球的是新功能,而不是質(zhì)量。“質(zhì)量需要干苦活、設(shè)計(jì)、檢查和測(cè)試,這些事情根本比不上編程有趣,”貝羅文說(shuō)。“如果不培養(yǎng)這些技能,開(kāi)源社區(qū)就會(huì)在質(zhì)量競(jìng)賽中落后得更遠(yuǎn)。”
2014年OpenSSL曝出Heartbleed漏洞時(shí),AlienVault公司的安全顧問(wèn)Javvad Malik說(shuō)過(guò):
“任何人都可以對(duì)代碼進(jìn)行審計(jì),但并非每個(gè)人都會(huì)這樣做,因?yàn)樗坪趺恳粋€(gè)人都認(rèn)為其他人已經(jīng)對(duì)這些代碼進(jìn)行過(guò)安全審查了,這也就是問(wèn)題之所在。”
或許正是源于這種“責(zé)任分散”,開(kāi)源軟件的安全性不如想象中完善。無(wú)論怎樣,開(kāi)源軟件的安全性還是需要大家共同的努力。