DNS緩衝漏洞直指我們應用中互連網脆弱的安全系統,而安全性差的根源在於設計缺陷。利用該漏洞輕則可以讓使用者無法開啟網頁,重則是網路釣魚和金融詐騙,給受害者造成巨大損失。
DNS緩衝漏洞,瞭解緩衝中毒攻擊
緩衝中毒攻擊者(cachepoisoning)給DNS伺服器注入非法網路網域名稱地址,如果伺服器接受這個非法地址,那說明其緩衝就被攻擊了,而且以後響應的網域名稱請求將會受駭客所控。當這些非法地址進入伺服器緩衝,使用者的瀏覽器或者郵件伺服器就會自動跳轉到DNS指定的地址。
這種攻擊往往被歸類為域欺騙攻擊(pharmingattack),由此它會導致出現很多嚴重問題。首先,使用者往往會以為登陸的是自己熟悉的網站,而它們卻並不是。與釣魚攻擊採用非法URL不同的是,這種攻擊使用的是合法的URL地址。
另外一個問題是,成百上千的使用者會被植入緩衝中毒攻擊的伺服器重新導向,引導至駭客設立的圈套網站上。這種問題的嚴重性,會與使用網域名稱請求的使用者多少相關。在這樣的情況下,即使沒有豐富技術的駭客也可以造成很大的麻煩,讓使用者稀裡糊塗的就把自己網銀帳號密碼,網遊帳號密碼告訴給他人。
用這種類似的技巧,郵件系統也會受到駭客攻擊。只不過不是給Web伺服器,而是給郵件伺服器非法地址,從而讓系統引導至受到控制的郵件伺服器中。
那麼,駭客究竟是怎麼做到使快取服務器接受非法地址呢?當一個DNS快取服務器從使用者處獲得網域名稱請求時,伺服器會在緩衝中尋找是否有這個地址。如果沒有,它就會上級DNS伺服器發出請求。
在出現這種漏洞之前,攻擊者很難攻擊DNS伺服器:他們必須通過發送偽造查詢響應、獲得正確的查詢參數以進入快取服務器,進而控制合法DNS伺服器。這個過程通常持續不到一秒鐘,因此駭客攻擊很難獲得成功。
但是,現在有安全人員找到該漏洞,使得這一過程朝向有利於攻擊者轉變。這是因為攻擊者獲悉,對快取服務器進行持續不斷的查詢請求,伺服器不能給與回應。比如,一個駭客可能會發出類似請求:1q2w3e.google.com,而且他也知道快取服務器中不可能有這個網域名稱。這就會引起快取服務器發出更多查詢請求,並且會出現很多欺騙應答的機會。
當然,這並不是說攻擊者擁有很多機會來猜測查詢參數的正確值。事實上,是這種開放源DNS伺服器漏洞的公布,會讓它在10秒鐘內受到危險攻擊。
要知道,即使1q2w3e.google.com受到緩衝DNS中毒攻擊危害也不大,因為沒有人會發出這樣的網域名稱請求,但是,這正是攻擊者發揮威力的地方所在。通過欺騙應答,駭客也可以給快取服務器指向一個非法的伺服器網域名稱地址,該地址一般為駭客所控制。而且通常來說,這兩方面的資訊快取服務器都會儲存。
應對漏洞
由於攻擊者現在可以控制網域名稱伺服器,每個查詢請求都會被重新導向到駭客指定的伺服器上。這也就意味著,駭客可以控制所有網域名稱下的子域網址:www.bigbank.com,mail.bigbank.com,ftp.bigbank.com等等。這非常強大,任何涉及到子域網址的查詢,都可以引導至由駭客指定的任何伺服器上。
如何應對?
為瞭解決這些問題,用於查詢的UDP連接埠不應該再是預設的53,而是應該在UDP連接埠範圍內隨機播放(排除預留連接埠)
但是,很多企業發現他們的DNS伺服器遠落後於提供網路位址轉譯(networkaddresstranslation,NAT)的各種裝置。大部分NAT裝置會隨機播放NDS伺服器使用的UDP連接埠,這樣就會使得新的安全補丁會失去效果。IT經理也不會在防火牆中開放全方位的UDP連接埠。更嚴重的是,有安全研究員證明,即使提供64000UDP連接埠中隨機播放的保護,DNS伺服器也照樣有可能受到中毒攻擊。
現在是時候考慮保護DNS的其他方案了。UDP源連接埠隨機化選擇是一種比較有用的防護舉措,但是這會打破UDP源連接埠隨機化給與DNS伺服器的保護,同由此全方位開放連接埠面臨的風險或者降低防火牆效能這兩者間的平衡關係。還有一種比較有效防護措施就是,當檢測到面臨潛在攻擊風險時,讓DNS伺服器切換到使用TCP串連。
如果攻擊者猜測到了必要的參數以欺騙查詢響應,那麼就需要額外的防禦措施了。這意味著DNS伺服器需要更智能化,能夠準確分析每個查詢響應,以便剔除攻擊者發送的非法應答中的有害資訊