工作來源

Usenix Security 2023

工作背景

2008 年,Dan Kaminsky 揭露了有史以來最嚴重的 DNS 攻擊之一:緩存投毒。從那一年開始,根服務器開始重視 DNS 解析的安全性。

由于猜測 DNS 請求的源端口(16 位)與 TXID(16 位)是 DNS 緩存投毒的關鍵,抵御攻擊的首選就是源端口隨機化與 TXID 隨機化,其他措施包括 0x20 encoding、DNSSEC 與 DNS cookies。而對于 DNS 反射放大攻擊來說,DNS cookies 是唯一的防御措施。這些防御措施此處不一一進行介紹,相信讀者要么已經了解要么還是推薦去看原文。

各主要開源 DNS 解析服務實現中,安全與隱私的情況如下所示:

所有的服務都會默認啟用源端口隨機化與 QNAME 最小化方案。

工作準備

利用 13 個根服務器中的一個(A-root),該根服務器由 Verisign 運營。全球一共 16 臺服務器:10 臺在美國、1 臺在荷蘭阿姆斯特丹、1 臺在德國法蘭克福、1 臺在中國香港、1 臺在英國倫敦、1 臺在法國巴黎、1 臺在日本東京。使用 A-root 在 2008 年到 2021 年的數據,最后四年的數據如下所示。在所有根服務器中,頭兩年 A-root 的遞歸解析查詢量是最大的,隨后是 K-root 與 C-root,證明了其代表性。

隨時間推移,請求 IP 地址數、自治系統數與請求總量的變化趨勢如下所示:

2021 年,按照 IP 地址數量排名的 TOP5 為美國(25.5%)、中國(18.4%)、德國(7.38%)、法國(4.3%)與意大利(4.11%)。與此同時,IPv6 網絡當然也在蓬勃生長,盡管當下與 IPv4 網絡仍然不能相提并論。

對數據進行過濾篩選如下所示:

由于數據量太過巨大,資源有限必須約束范圍。對于每年每個請求 A-root 的 IP 地址,保留:

  • 前 13 個請求的四元組(QNAME、QTYPE、TXID 與源端口),為了保留 10 個非重請求并且兼容 3 次重復請求才保留 13 個
  • 請求總數
  • 包含 DNS cookie 請求總數
  • 設置 DO 的請求總數
  • 每種類型(A、AAAA、DNSKEY、DS、KEY、DLV、NS 與 MX)的請求量

工作設計

源端口隨機化

平均每年大約 21% 的解析服務器只向 A-root 發送一次請求,對于源端口隨機化只評估發送至少 5 次唯一請求的。

一共三種情況:無端口隨機化、小池端口隨機化與順序端口隨機化。

TXID 隨機化

使用與源端口隨機化相同的方式來測量 TXID 的隨機化,重復 TXID 的概率遠比重復源端口的概率低。

DNSSEC

使用 DNSSEC 的都設置了 DO,但反過來并不成立,設置了 DO 的解析服務器中有 82% 不使用 DNSSEC。

認為設置 DO 且存在至少一次 DNSKEY 或 DS 請求的,屬于使用了 DNSSEC。

0x20 encoding

以下三種情況都可以認為使用了 0x20 encoding:

  • IP 至少有 3 個不同大小寫的相同字符串(如 eXAMple、ExAmPlE、exampL)
  • IP 至少有 1 個大寫的頂級域名,并且不是全大寫、全小寫與首字母大寫的情況
  • 按二項分布計算,大寫字母數量落在 μ±2σ 之間

DNS cookie

請求中包含 cookie 即可認為啟用了 DNS cookie。

QNAME 最小化

分類為單級、帶下劃線的雙級與多級,前兩者為遵循 QNAME 最小化規范。

工作評估

源端口隨機化

從 2008 年起,不采用源端口隨機化的比例就在持續下降。以 2021 年為例,有 32789(0.75%)個解析服務器未使用源端口隨機化、有 78029(1.78%)個解析服務器使用小池端口隨機化、82358(1.88%)個解析服務器使用順序端口隨機化。使用不完全端口隨機化的解析服務器,一共占到當年所有解析服務器的 4.4%。

這些服務器所在國家的 TOP 10 如下所示(注:這里美國的數量應該是 1.3M 而不是 1.3K,原文表格的數據錯誤):

存在缺陷的解析服務器數量,美國遙遙領先,緊接著是中國與印度。但從比例上看,中國與印度的比例都較高,第二梯隊是俄羅斯、日本與美國(注:總量較小的國家所占比例可能非常高,比例最高的甚至達到 37.1%)。

TXID 隨機化

與源端口隨機化相比,TXID 的情況好很多。

2021 年,在該問題中存在缺陷的解析服務器只占 A-root 總流量的 0.44%。

DNSSEC

從 2013 年開始,DNSSEC 才開始普及提速。到了 2021 年,盡管 DNSSEC 解析服務器只占總量的 17.4%,但其請求量已經超過七成。

仍然按照國家來看,平均使用率為 17%。使用率較高的為法國、俄羅斯與巴西,而中國、意大利與印度使用率則較低。

0x20 encoding

使用率極低,在 2021 年達到頂峰也不過 0.36%,但畢竟這是一個未進入標準的方案。

DNS cookie

盡管直到 2021 年也只有 8.9% 的解析服務器支持 DNS cookie,且其請求占比僅為 7.7%。但值得注意的是,接近 40% 的自治系統都至少有一個解析服務器支持 DNS cookie。

QNAME 最小化

從 2018 年開始,使用 QNAME 最小化的解析服務器明顯增加,到 2021 年已經達到 12%。

整體考量

綜合考量只分析 2021 年的數據,結果如下所示:

59% 的解析服務器都是只使用了源端口隨機化與 TXID 隨機化,而不使用其他方案。緊隨其后的是使用源端口隨機化與 TXID 隨機化以及 DNSSEC,盡管只有 13.6% 的解析服務器數量占比,但卻對應了 55.8% 的請求量。

紅色部分為存在明顯問題的。有趣的是,這些解析服務器請求 TOP 10 域名中,有 7 個是與 VOIP 有關的域名。從請求量來看,這些解析服務器 75% 的請求都與 VOIP 有關。推測可能是與某些 VOIP 相關的軟件存在缺陷所導致的。

工作思考

DNS 作為互聯網的基石,其安全性不言而喻。近年來,針對 DNS 的研究也是接連不斷,從各個方面進行了研究與測量。例如本文中提到,A 根服務器來自中國的請求量占比接近兩成,在“脫鉤斷鏈”背景下,也難怪本地化根服務器越來越受重視。另一方面,我們作為發展中國家,在互聯網基礎設施的安全上仍然與發達國家存在差距,需要盡力提高。