日前IOActive的安全研究員Dan Kaminsky揭露了一個DNS安全漏洞,由於這是基於DNS本身的設計而造成的安全漏洞,Kaminsky日前在自己的部落格上這樣寫著:「現在釋出的修補程式雖然有辦法讓攻擊難度提高個幾千倍,但是還是無法根本的解決這個問題。」

惡意攻擊者將有辦法透過這個漏洞來假冒DNS主要伺服器(DNS Master Server),將使用者導向惡意攻擊者假冒的網頁。由於使用者端輸入的網址是正確的,所以使用者會在毫無警覺性的狀況下誤入惡意網站,因而洩漏出各種個人資料,或是直接在假冒的網頁被植入木馬或是其他惡意程式。

DNS網域劫持,可以影響所有網站
由於這個漏洞最主要的問題是發生在DNS本身的設計上,這也使得所有的網站都有可能受到此一漏洞的影響。DNS全名是(Domain Name Service),是負責網址轉譯的機制,將網址轉譯為電腦可以識別的數字位址。舉例來說,使用者如果在瀏覽器上輸入一串「www.xxx.tw」的網址,透過DNS轉譯,會成為像「192.168.255.255」這樣的IP位址,讓伺服器和終端電腦可以識別,把使用者的流量導到正確的網站。

一般來說,整個DNS運作的流程是這樣的,DNS伺服器存有網域名稱比對的資料,當使用者要瀏覽某個網站時,電腦會發出一個UDP協定的請求到本地端的快取DNS伺服器(一般是電信商的快取DNS伺服器),等候快取DNS伺服器比對這個請求,如果快取DNS伺服器裡面存有該網站位址的記錄,就會把正確的網站IP位址轉送給終端電腦,引導使用者連上正確的網站。若快取DNS伺服器沒有此一位址,它會再進一步查詢上一層的根目錄DNS伺服器或主要DNS伺服器,找尋正確的位址,然後回應給使用者,引導進入正確的網站。快取DNS伺服器會將查詢過的位址暫存下來,加快使用者連網時比對DNS的速度。

由於UDP協定在設計上,不像TCP協定一般,包含有回應方與來源方的資訊,在這樣的狀況下,DNS機制為了比對是由哪一臺伺服器發出查詢的請求、哪一臺伺服器發出回應,會利用連接埠號和一個稱為TXID的16位元識別碼,作為連線辨識的依據,如此一來,即便2臺DNS伺服器使用相同的對外連接埠號,也能透過TXID辨識出是由哪一臺DNS伺服器發出查詢的請求。

由此可知,TXID的識別對於DNS機制來說,非常重要,可以說是DNS伺服器在查詢時辨識其他伺服器回應的主要依據,而此次被發現的漏洞,正是TXID這種設計本身的不足所造成。因為TXID本身只有16位元的長度,惡意攻擊者只要假造UDP封包的來源,欺騙使用者的暫存DNS伺服器,就可以把該暫存DNS伺服器下的所有使用者(數千,甚至是數萬臺終端電腦)流量,轉至任何他想轉到的網頁。

要欺騙暫存DNS伺服器,惡意攻擊者只需要做到2件事。一是設法讓暫存伺服器發出對外查詢的請求;其二則是取得回應DNS伺服器的TXID。第一點可以透過很多方式做到,第二點則就是本次發現漏洞的重點。

Dan Kaminsky發現,攻擊者可以用猜的。攻擊者只要在真的DNS伺服器發出回應給暫存DNS伺服器之前,發出大量的UDP封包,逐號猜測TXID,猜中了,就能假冒成回應查詢的DNS伺服器,劫持網域,然後就能為所欲為了。以16位元的長度來計算,這代表每一個攻擊者發出的偽造UDP回應,都有6萬5,335分之1的機會猜中(但實際上,如果DNS伺服器使用固定的連接埠,則攻擊者成功的機會就更高)。也因為這是利用DNS設計上的漏洞,無論暫存DNS伺服器使用的是哪一種DNS伺服器軟體,多數都會受到這種攻擊的影響。



還有5成DNS伺服器未更新,企業可自行檢測
負責管理網域名稱的臺灣網路資訊中心(TWNIC)技術組組長徐乃文表示,這種劫持網域的攻擊手法,並不是新的攻擊手法,但是隨著此一漏洞被發現,駭客組織已經釋出了攻擊的程式,讓惡意使用者能以更簡易的方式進行TXID的猜號,這的確是一個隱憂。

但是徐乃文也指出,由於這種攻擊手法耗時良久,攻擊者也必須偽造大量的UDP回應,目前還沒有聽過臺灣有傳出任何災情。他表示,企業如果想要防範這種攻擊方式,可以安裝各家DNS伺服器廠商所釋出的更新,安裝更新將會大幅減少被此種手法攻下的機會,比如說動態TXID、隨機連接埠等機制。

此外,企業提供的網路服務,如果沒有透過暫存伺服器,也不會受到影響。

不過,雖然更新已經釋出,但更新的速度似乎並沒有想像中快。
Dan Kaminsky在7月初發表此一漏洞,根據他7月底在部落格上發表的追蹤文章,目前全球至少還有52%的DNS伺服器沒有透過更新來遏止此一漏洞。

那麼,企業本身到底能做些什麼呢?難道只能被動的等待ISP更新其DNS伺服器?事實上,包括DNS-OARC、DNSstuff.com、Kaminsky的部落格等網站,都已經提供線上的DNS漏洞檢測工具,企業可以透過這些工具檢視自己網路服務所使用的DNS伺服器是不是還未更新,進而要求服務商更新,或是更新自己的DNS伺服器。

企業可先將內部使用的伺服器更新,要完全杜絕需靠DNSsec
此外,企業除了透過線上檢測DNS漏洞工具檢查,進而要求網路服務商或企業內部負責DNS伺服器的人員更新外,企業內部的伺服器也可以先做相關的更新。以微軟為例,7月8日時就已經釋出了包括Windows 2000、XP、Server 2003、Server 2008等系統平臺的更新,微軟的DNS伺服器使用者可以直接使用Microsoft Update進行更新,單獨更新則可安裝MS08-037的安全修補程式;ISC BIND的DNS伺服器使用者,可以更新至9.5.0-P1版本;RedHat、Fedora linux等DNS伺服器的使用者,則可以直接透過yum update更新。除了這些廠商之外,多數的DNS伺服器廠商也都已經推出更新,可以直接與廠商連繫,尋求修補程式。

要完全杜絕此一漏洞,現在看來安裝DNSsec(DNS安全性擴充)會是一個好方案,DNSsec是一個針對DNS傳送網域資料做金鑰加密的擴充通訊協定,在DNSsec的規範中,每個區域都有用來加密與解密數位簽章的私密金鑰與公開金鑰,用這樣的方式,沒有擁有金鑰的惡意攻擊者,即便用上述的攻擊手法,也無法成功的假冒主要DNS伺服器,這將能有效杜絕這種猜號的攻擊模式。但是要使用DNSsec,牽涉到終端電腦必須支援,並且所有拜訪網站的DNS伺服器也都必須支援,短期間看來,還是一個不可能的任務。這也代表短期之內,惡意攻擊者永遠都有機會透過這個漏洞,對DNS伺服器展開一場樂透猜號競賽。文⊙劉哲銘

熱門新聞

Advertisement