文/江健 梁錦津 段海新
刪不掉的“鬼”域名
文/江健 梁錦津 段海新
攻擊者進(jìn)行特定的操控,就有可能將緩存中的授權(quán)記錄長期保持,使得一個被刪除的域名持續(xù)保持可解析的狀態(tài),成為所謂的“鬼”域名。鬼域名的存在,如達(dá)摩克利斯之劍一樣懸于互聯(lián)網(wǎng)之上。
假設(shè)攻擊者注冊了一個域名,比如phishing.com,用來進(jìn)行網(wǎng)絡(luò)釣魚攻擊,但很快被人發(fā)現(xiàn)并通知域名注冊商把這個域名刪掉。在正常情況下,一段時間之后,phishing.com這個域名應(yīng)該會在互聯(lián)網(wǎng)上消失,無法解析。然而,攻擊者卻可以通過操作域名服務(wù)器,使得這個域名保持可解析狀態(tài),“釣魚”依然進(jìn)行著!
我們在研究過程中發(fā)現(xiàn)現(xiàn)有域名系統(tǒng)(Domain Name System,DNS)的標(biāo)準(zhǔn)確實(shí)可能導(dǎo)致這一問題,其原因在于DNS授權(quán)機(jī)制的邏輯不完備,我們將這一現(xiàn)象稱為鬼域名(Ghost Domain Name)問題。這一問題的相關(guān)論文發(fā)表在2012年2月于美國加州圣地亞哥舉行的第19屆網(wǎng)絡(luò)與分布式系統(tǒng)安全(NDSS)會議,并引起業(yè)界的關(guān)注和積極響應(yīng)。在本文中,我們簡單介紹發(fā)現(xiàn)這一問題的背景、基本原理以及可能的解決方法。
DNS將人們可以理解的名字,如網(wǎng)址和電子郵箱中的域名,翻譯成計(jì)算機(jī)可尋址的IP地址,是互聯(lián)網(wǎng)最重要的基礎(chǔ)設(shè)施之一。在DNS系統(tǒng)中,域名服務(wù)器通過從上到下的授權(quán)形成一個倒置的樹狀結(jié)構(gòu)。當(dāng)用戶通過一個域名如www.example.com來訪問一個網(wǎng)站時,用戶的計(jì)算機(jī)通常詢問一個由本地ISP所設(shè)置的遞歸解析服務(wù)器(Recursive Resolver)來獲得對應(yīng)的IP地址,域名解析過程見圖1。遞歸解析服務(wù)器通過一個迭代查詢的過程來完成域名的解析。首先通過詢問預(yù)先配置的根域名服務(wù)器(Root Server)來獲得相關(guān)的.com 頂級域名服務(wù)器(TLD Server)的地址,再得到Example.com的權(quán)威域名服務(wù)器(Authoritative Server)地址,最后從權(quán)威服務(wù)器得到最終結(jié)果。為提高后續(xù)查詢的效率,遞歸解析服務(wù)器通常在查詢過程中將中間結(jié)果緩存起來,所以遞歸解析服務(wù)器也被稱為緩存服務(wù)器(Caching Server)。
保證DNS的健壯運(yùn)行主要體現(xiàn)在兩個方面:一是性能,即保證域名解析過程的速度;二是安全,即保證域名和IP地址對應(yīng)關(guān)系的正確性。性能是DNS設(shè)計(jì)之初著重考慮的因素。其整體架構(gòu)的高度可擴(kuò)展性和簡潔的查詢協(xié)議使得DNS從1980年以來的20多年中,面對持續(xù)指數(shù)級增長的網(wǎng)絡(luò)用戶和應(yīng)用,在初始設(shè)計(jì)幾乎沒有任何變化的情況下仍然能夠高效穩(wěn)定運(yùn)行,但是安全性卻始終是DNS的弱點(diǎn)。與很多其他互聯(lián)網(wǎng)協(xié)議和系統(tǒng)一樣,DNS的初始設(shè)計(jì)場景為可信環(huán)境,并沒有過多考慮安全問題。互聯(lián)網(wǎng)在發(fā)展過程中出現(xiàn)多種針對DNS的攻擊。早期Steve Bellovin所發(fā)現(xiàn)的DNS欺騙攻擊,以及2008年Dan Kaminsky發(fā)現(xiàn)的一種高效的緩存污染攻擊(DNS Cache Poisoning)都曾震動整個網(wǎng)絡(luò)安全學(xué)術(shù)界和工程界。

圖1 域名解析過程
對于普通用戶來說,注冊域名通常需要選擇一個域名注冊商(Domain Registrar),由這個注冊商在上級域名服務(wù)器(比如頂級域TLD)中添加相應(yīng)的授權(quán)記錄(delegation data)來完成注冊。在用戶注冊期限過期后,相應(yīng)注冊機(jī)構(gòu)會刪除授權(quán)記錄,并對域名進(jìn)行回收。
近幾年來攻擊者利用域名解析相對靜態(tài)IP地址的靈活性,注冊大量的域名用于各種攻擊活動,比較典型的有網(wǎng)絡(luò)釣魚(Phishing)以及僵尸網(wǎng)絡(luò)的命令與控制(Botnet Command and Control)等,及時發(fā)現(xiàn)并強(qiáng)制刪除惡意域名成為對付相應(yīng)攻擊最為有效的手段之一。微軟在2010年聯(lián)合全球范圍內(nèi)多個域名注冊機(jī)構(gòu)同時刪除200多個惡意域名,成功關(guān)停大規(guī)模垃圾郵件僵尸網(wǎng)絡(luò)Waledac,在2011年又以同樣的方式成功關(guān)停垃圾郵件僵尸網(wǎng)絡(luò)Rustock。
如果一個惡意域名在被刪除后仍然能夠解析,則無法實(shí)現(xiàn)停止相關(guān)攻擊活動的目的。事實(shí)上由于緩存的作用,一個域名在授權(quán)記錄被刪除后的一段時間仍可能被一些遞歸解析服務(wù)器解析,這種現(xiàn)象僅僅只是DNS緩存的一種副作用,隨著緩存中的授權(quán)記錄過期(最長不超過一個星期),被刪除的域名最終將從整個域名系統(tǒng)中清除。
但我們發(fā)現(xiàn)如果攻擊者進(jìn)行一些特定的操控,就有可能將緩存中的授權(quán)記錄長期保持,使得一個被刪除的域名持續(xù)保持可解析的狀態(tài),成為所謂的“鬼”域名。
鬼域名問題的根源在于DNS對于授權(quán)方式以及緩存更新策略沒有明確定義。如圖2所示,遞歸解析器在解析過程中會同時從一個域名的上級服務(wù)器(父節(jié)點(diǎn))和其本身權(quán)威服務(wù)器(子節(jié)點(diǎn))獲得這個域名的授權(quán)記錄。根據(jù)DNS的協(xié)議規(guī)范,遞歸解析器應(yīng)該優(yōu)先接受子節(jié)點(diǎn)的記錄(包括授權(quán)記錄)。同時,為了提高緩存效率,DNS允許遞歸解析器對已經(jīng)緩存的記錄進(jìn)行更新。這兩個特性導(dǎo)致攻擊者能夠通過變更域名自身權(quán)威服務(wù)器上的授權(quán)記錄來不停刷新遞歸解析服務(wù)器中的緩存記錄,使得被父節(jié)點(diǎn)刪除的惡意域名持續(xù)保持解析。我們在實(shí)驗(yàn)中證實(shí)大多數(shù)的遞歸解析服務(wù)器實(shí)現(xiàn)均存在這一問題。

圖2 域名授權(quán)記錄優(yōu)先級及更新策略問題
由于DNS的重要性,鬼域名問題在NDSS會議上公布以后引起業(yè)界的積極響應(yīng)。公共安全漏洞庫增加一個新的條目C V E-2012-1033;部署最廣泛的域名服務(wù)器軟件BIND的開發(fā)廠商ISC發(fā)布了相關(guān)的安全公告并進(jìn)行驗(yàn)證;微軟公司安全組已經(jīng)受理我們的安全報告;美國最大的ISP之一comcast也通過郵件告知他們的初步測試結(jié)果。
不過,ISC后來決定暫時不對現(xiàn)有的軟件進(jìn)行修改。因?yàn)楣碛蛎F(xiàn)象的出現(xiàn)不是由于軟件實(shí)現(xiàn)上的漏洞,而是DNS標(biāo)準(zhǔn)設(shè)計(jì)的問題。而且,關(guān)于如何修改標(biāo)準(zhǔn),甚至是否修改標(biāo)準(zhǔn),目前DNS業(yè)界還沒有達(dá)成共識。盡管單從授權(quán)機(jī)制看來,來自上一級域名服務(wù)器的授權(quán)記錄似乎應(yīng)該有更高的優(yōu)先級,但是權(quán)威服務(wù)器有權(quán)修改自己域名空間里的記錄也符合DNS的策略。
無論如何,鬼域名的問題依然存在,盡管目前并沒有發(fā)現(xiàn)利用這種機(jī)制進(jìn)行攻擊的案例。如果不解決,始終是個安全隱患。我們期待IETF或者其他DNS相關(guān)的組織會進(jìn)一步討論這一問題的解決方案。
從技術(shù)的角度,解決鬼域名問題從邏輯上并不復(fù)雜。從運(yùn)行的角度只需要網(wǎng)絡(luò)管理員定期對遞歸解析服務(wù)器的緩存進(jìn)行刷新,從協(xié)議本身完備的角度也有多種解決方法,如只接受父節(jié)點(diǎn)的授權(quán)記錄或者接受子節(jié)點(diǎn)的授權(quán)記錄但不允許刷新等。考慮到DNS系統(tǒng)的重要性,具體采取哪種方法,是否需要對原有協(xié)議規(guī)范進(jìn)行修訂還需要對可能的影響進(jìn)行進(jìn)一步評估,這也是為什么目前DNS業(yè)界并沒有馬上認(rèn)同某種解決方案的部分原因。
DNS作為最重要的互聯(lián)網(wǎng)基礎(chǔ)服務(wù)之一,它的成功運(yùn)行一定程度上得益于遍布世界各地的緩存。然而,像所有分布式系統(tǒng)一樣,這么大規(guī)模的緩存更新是個相當(dāng)復(fù)雜的問題。鬼域名的出現(xiàn)主要因?yàn)樵诰彺娓聲r,優(yōu)先選擇來自權(quán)威域名服務(wù)器而不是它的父節(jié)點(diǎn)的信息, 并允許持續(xù)自我更新,導(dǎo)致被刪除的域名無法可靠地回收。
盡管鬼域名作為一種安全隱患,已經(jīng)是學(xué)術(shù)界、工業(yè)界的廣泛共識,但是對如何解決仍然存在一些爭議。DNSSEC的進(jìn)一步廣泛布署也許是包括鬼域名在內(nèi)的許多DNS安全問題的比較完整的解決方案。我們也希望借此推進(jìn)中國DNSSEC的布署,防患于未然。DNS的任何小問題都是互聯(lián)網(wǎng)的大問題,因?yàn)镈NS對互聯(lián)網(wǎng)、對整個社會都太重要了。
(作者單位為清華大學(xué)信息網(wǎng)絡(luò)工程研究中心)