文/江健 梁錦津 段海新
刪不掉的“鬼”域名
文/江健 梁錦津 段海新
攻擊者進(jìn)行特定的操控,就有可能將緩存中的授權(quán)記錄長(zhǎng)期保持,使得一個(gè)被刪除的域名持續(xù)保持可解析的狀態(tài),成為所謂的“鬼”域名。鬼域名的存在,如達(dá)摩克利斯之劍一樣懸于互聯(lián)網(wǎng)之上。
假設(shè)攻擊者注冊(cè)了一個(gè)域名,比如phishing.com,用來(lái)進(jìn)行網(wǎng)絡(luò)釣魚攻擊,但很快被人發(fā)現(xiàn)并通知域名注冊(cè)商把這個(gè)域名刪掉。在正常情況下,一段時(shí)間之后,phishing.com這個(gè)域名應(yīng)該會(huì)在互聯(lián)網(wǎng)上消失,無(wú)法解析。然而,攻擊者卻可以通過(guò)操作域名服務(wù)器,使得這個(gè)域名保持可解析狀態(tài),“釣魚”依然進(jìn)行著!
我們?cè)谘芯窟^(guò)程中發(fā)現(xiàn)現(xiàn)有域名系統(tǒng)(Domain Name System,DNS)的標(biāo)準(zhǔn)確實(shí)可能導(dǎo)致這一問(wèn)題,其原因在于DNS授權(quán)機(jī)制的邏輯不完備,我們將這一現(xiàn)象稱為鬼域名(Ghost Domain Name)問(wèn)題。這一問(wèn)題的相關(guān)論文發(fā)表在2012年2月于美國(guó)加州圣地亞哥舉行的第19屆網(wǎng)絡(luò)與分布式系統(tǒng)安全(NDSS)會(huì)議,并引起業(yè)界的關(guān)注和積極響應(yīng)。在本文中,我們簡(jiǎn)單介紹發(fā)現(xiàn)這一問(wèn)題的背景、基本原理以及可能的解決方法。
DNS將人們可以理解的名字,如網(wǎng)址和電子郵箱中的域名,翻譯成計(jì)算機(jī)可尋址的IP地址,是互聯(lián)網(wǎng)最重要的基礎(chǔ)設(shè)施之一。在DNS系統(tǒng)中,域名服務(wù)器通過(guò)從上到下的授權(quán)形成一個(gè)倒置的樹狀結(jié)構(gòu)。當(dāng)用戶通過(guò)一個(gè)域名如www.example.com來(lái)訪問(wèn)一個(gè)網(wǎng)站時(shí),用戶的計(jì)算機(jī)通常詢問(wèn)一個(gè)由本地ISP所設(shè)置的遞歸解析服務(wù)器(Recursive Resolver)來(lái)獲得對(duì)應(yīng)的IP地址,域名解析過(guò)程見圖1。遞歸解析服務(wù)器通過(guò)一個(gè)迭代查詢的過(guò)程來(lái)完成域名的解析。首先通過(guò)詢問(wèn)預(yù)先配置的根域名服務(wù)器(Root Server)來(lái)獲得相關(guān)的.com 頂級(jí)域名服務(wù)器(TLD Server)的地址,再得到Example.com的權(quán)威域名服務(wù)器(Authoritative Server)地址,最后從權(quán)威服務(wù)器得到最終結(jié)果。為提高后續(xù)查詢的效率,遞歸解析服務(wù)器通常在查詢過(guò)程中將中間結(jié)果緩存起來(lái),所以遞歸解析服務(wù)器也被稱為緩存服務(wù)器(Caching Server)。
保證DNS的健壯運(yùn)行主要體現(xiàn)在兩個(gè)方面:一是性能,即保證域名解析過(guò)程的速度;二是安全,即保證域名和IP地址對(duì)應(yīng)關(guān)系的正確性。性能是DNS設(shè)計(jì)之初著重考慮的因素。其整體架構(gòu)的高度可擴(kuò)展性和簡(jiǎn)潔的查詢協(xié)議使得DNS從1980年以來(lái)的20多年中,面對(duì)持續(xù)指數(shù)級(jí)增長(zhǎng)的網(wǎng)絡(luò)用戶和應(yīng)用,在初始設(shè)計(jì)幾乎沒(méi)有任何變化的情況下仍然能夠高效穩(wěn)定運(yùn)行,但是安全性卻始終是DNS的弱點(diǎn)。與很多其他互聯(lián)網(wǎng)協(xié)議和系統(tǒng)一樣,DNS的初始設(shè)計(jì)場(chǎng)景為可信環(huán)境,并沒(méi)有過(guò)多考慮安全問(wèn)題。互聯(lián)網(wǎng)在發(fā)展過(guò)程中出現(xiàn)多種針對(duì)DNS的攻擊。早期Steve Bellovin所發(fā)現(xiàn)的DNS欺騙攻擊,以及2008年Dan Kaminsky發(fā)現(xiàn)的一種高效的緩存污染攻擊(DNS Cache Poisoning)都曾震動(dòng)整個(gè)網(wǎng)絡(luò)安全學(xué)術(shù)界和工程界。
圖1 域名解析過(guò)程
對(duì)于普通用戶來(lái)說(shuō),注冊(cè)域名通常需要選擇一個(gè)域名注冊(cè)商(Domain Registrar),由這個(gè)注冊(cè)商在上級(jí)域名服務(wù)器(比如頂級(jí)域TLD)中添加相應(yīng)的授權(quán)記錄(delegation data)來(lái)完成注冊(cè)。在用戶注冊(cè)期限過(guò)期后,相應(yīng)注冊(cè)機(jī)構(gòu)會(huì)刪除授權(quán)記錄,并對(duì)域名進(jìn)行回收。
近幾年來(lái)攻擊者利用域名解析相對(duì)靜態(tài)IP地址的靈活性,注冊(cè)大量的域名用于各種攻擊活動(dòng),比較典型的有網(wǎng)絡(luò)釣魚(Phishing)以及僵尸網(wǎng)絡(luò)的命令與控制(Botnet Command and Control)等,及時(shí)發(fā)現(xiàn)并強(qiáng)制刪除惡意域名成為對(duì)付相應(yīng)攻擊最為有效的手段之一。微軟在2010年聯(lián)合全球范圍內(nèi)多個(gè)域名注冊(cè)機(jī)構(gòu)同時(shí)刪除200多個(gè)惡意域名,成功關(guān)停大規(guī)模垃圾郵件僵尸網(wǎng)絡(luò)Waledac,在2011年又以同樣的方式成功關(guān)停垃圾郵件僵尸網(wǎng)絡(luò)Rustock。
如果一個(gè)惡意域名在被刪除后仍然能夠解析,則無(wú)法實(shí)現(xiàn)停止相關(guān)攻擊活動(dòng)的目的。事實(shí)上由于緩存的作用,一個(gè)域名在授權(quán)記錄被刪除后的一段時(shí)間仍可能被一些遞歸解析服務(wù)器解析,這種現(xiàn)象僅僅只是DNS緩存的一種副作用,隨著緩存中的授權(quán)記錄過(guò)期(最長(zhǎng)不超過(guò)一個(gè)星期),被刪除的域名最終將從整個(gè)域名系統(tǒng)中清除。
但我們發(fā)現(xiàn)如果攻擊者進(jìn)行一些特定的操控,就有可能將緩存中的授權(quán)記錄長(zhǎng)期保持,使得一個(gè)被刪除的域名持續(xù)保持可解析的狀態(tài),成為所謂的“鬼”域名。
鬼域名問(wèn)題的根源在于DNS對(duì)于授權(quán)方式以及緩存更新策略沒(méi)有明確定義。如圖2所示,遞歸解析器在解析過(guò)程中會(huì)同時(shí)從一個(gè)域名的上級(jí)服務(wù)器(父節(jié)點(diǎn))和其本身權(quán)威服務(wù)器(子節(jié)點(diǎn))獲得這個(gè)域名的授權(quán)記錄。根據(jù)DNS的協(xié)議規(guī)范,遞歸解析器應(yīng)該優(yōu)先接受子節(jié)點(diǎn)的記錄(包括授權(quán)記錄)。同時(shí),為了提高緩存效率,DNS允許遞歸解析器對(duì)已經(jīng)緩存的記錄進(jìn)行更新。這兩個(gè)特性導(dǎo)致攻擊者能夠通過(guò)變更域名自身權(quán)威服務(wù)器上的授權(quán)記錄來(lái)不停刷新遞歸解析服務(wù)器中的緩存記錄,使得被父節(jié)點(diǎn)刪除的惡意域名持續(xù)保持解析。我們?cè)趯?shí)驗(yàn)中證實(shí)大多數(shù)的遞歸解析服務(wù)器實(shí)現(xiàn)均存在這一問(wèn)題。
圖2 域名授權(quán)記錄優(yōu)先級(jí)及更新策略問(wèn)題
由于DNS的重要性,鬼域名問(wèn)題在NDSS會(huì)議上公布以后引起業(yè)界的積極響應(yīng)。公共安全漏洞庫(kù)增加一個(gè)新的條目C V E-2012-1033;部署最廣泛的域名服務(wù)器軟件BIND的開發(fā)廠商ISC發(fā)布了相關(guān)的安全公告并進(jìn)行驗(yàn)證;微軟公司安全組已經(jīng)受理我們的安全報(bào)告;美國(guó)最大的ISP之一comcast也通過(guò)郵件告知他們的初步測(cè)試結(jié)果。
不過(guò),ISC后來(lái)決定暫時(shí)不對(duì)現(xiàn)有的軟件進(jìn)行修改。因?yàn)楣碛蛎F(xiàn)象的出現(xiàn)不是由于軟件實(shí)現(xiàn)上的漏洞,而是DNS標(biāo)準(zhǔn)設(shè)計(jì)的問(wèn)題。而且,關(guān)于如何修改標(biāo)準(zhǔn),甚至是否修改標(biāo)準(zhǔn),目前DNS業(yè)界還沒(méi)有達(dá)成共識(shí)。盡管單從授權(quán)機(jī)制看來(lái),來(lái)自上一級(jí)域名服務(wù)器的授權(quán)記錄似乎應(yīng)該有更高的優(yōu)先級(jí),但是權(quán)威服務(wù)器有權(quán)修改自己域名空間里的記錄也符合DNS的策略。
無(wú)論如何,鬼域名的問(wèn)題依然存在,盡管目前并沒(méi)有發(fā)現(xiàn)利用這種機(jī)制進(jìn)行攻擊的案例。如果不解決,始終是個(gè)安全隱患。我們期待IETF或者其他DNS相關(guān)的組織會(huì)進(jìn)一步討論這一問(wèn)題的解決方案。
從技術(shù)的角度,解決鬼域名問(wèn)題從邏輯上并不復(fù)雜。從運(yùn)行的角度只需要網(wǎng)絡(luò)管理員定期對(duì)遞歸解析服務(wù)器的緩存進(jìn)行刷新,從協(xié)議本身完備的角度也有多種解決方法,如只接受父節(jié)點(diǎn)的授權(quán)記錄或者接受子節(jié)點(diǎn)的授權(quán)記錄但不允許刷新等??紤]到DNS系統(tǒng)的重要性,具體采取哪種方法,是否需要對(duì)原有協(xié)議規(guī)范進(jìn)行修訂還需要對(duì)可能的影響進(jìn)行進(jìn)一步評(píng)估,這也是為什么目前DNS業(yè)界并沒(méi)有馬上認(rèn)同某種解決方案的部分原因。
DNS作為最重要的互聯(lián)網(wǎng)基礎(chǔ)服務(wù)之一,它的成功運(yùn)行一定程度上得益于遍布世界各地的緩存。然而,像所有分布式系統(tǒng)一樣,這么大規(guī)模的緩存更新是個(gè)相當(dāng)復(fù)雜的問(wèn)題。鬼域名的出現(xiàn)主要因?yàn)樵诰彺娓聲r(shí),優(yōu)先選擇來(lái)自權(quán)威域名服務(wù)器而不是它的父節(jié)點(diǎn)的信息, 并允許持續(xù)自我更新,導(dǎo)致被刪除的域名無(wú)法可靠地回收。
盡管鬼域名作為一種安全隱患,已經(jīng)是學(xué)術(shù)界、工業(yè)界的廣泛共識(shí),但是對(duì)如何解決仍然存在一些爭(zhēng)議。DNSSEC的進(jìn)一步廣泛布署也許是包括鬼域名在內(nèi)的許多DNS安全問(wèn)題的比較完整的解決方案。我們也希望借此推進(jìn)中國(guó)DNSSEC的布署,防患于未然。DNS的任何小問(wèn)題都是互聯(lián)網(wǎng)的大問(wèn)題,因?yàn)镈NS對(duì)互聯(lián)網(wǎng)、對(duì)整個(gè)社會(huì)都太重要了。
(作者單位為清華大學(xué)信息網(wǎng)絡(luò)工程研究中心)