DNS 快取中毒和交易 ID

DNS 快取中毒和交易 ID

我讀了很多關於它的文章,但我不明白如果出現以下情況,緩存中毒是如何發生的:

  • 如果回應的交易 ID 不匹配,查詢將被取消並標記為失敗(即攻擊者無法暴力破解交易 ID,因為他們只會接受第一個回應)
  • 遞歸解析器一次只發送 1 個針對相同網域/類型/類別的請求,這表示攻擊者無法觸發針對相同網域的多個請求來暴力破解交易 ID

在這個看起來很基本的配置中,如果攻擊者需要猜測交易 ID,那麼緩存中毒怎麼可能發生呢?攻擊者是否會迫使遞歸解析器一次又一次地解析同一域以進行更多嘗試?在這種情況下,可能需要幾個小時...

答案1

這主要是你的第一個要點不準確:

  • 如果回應的交易 ID 不匹配,查詢將被取消並標記為失敗(即攻擊者無法暴力破解交易 ID,因為他們只會接受第一個回應)

當收到未知的事務 ID 時,該回應將被丟棄。但是您認為未完成的查詢在某種程度上被視為失敗的假設是不正確的。

實際上,這種攻擊場景變成了攻擊者在真實名稱伺服器的回應到達之前獲得有效回應的競賽。

您的假設的問題在於,交易 ID(+ UDP 來源連接埠)的全部意義在於將回應與未完成的查詢相匹配,但是當存在這些值錯誤的回應時(與任何查詢都不匹配),您如何知道哪個查詢應該被視為失敗?
如果您允許某種形式的部分匹配,您將如何以一種不會用可輕易利用的 DoS 攻擊取代攻擊者有些繁重的競爭的方式來實現這一點?

「真正」保護的選項:

  • DNSSEC 允許查詢發起者驗證回應中記錄的真實性,從而確保簽章區域中的名稱不會接受攻擊者產生的回應。
  • 特別是對於從某種形式的客戶端/轉發器到解析器伺服器的查詢,DoT 和 DoH 也避免了快取中毒問題對於這個特殊的“跳躍”(DoT/DoH 僅保護兩個主機之間的通訊通道,DNS 解析往往有多個此類「躍點」)。
    (即使只是透過 TCP 查詢也可以改善問題中的特定場景,但基於密碼學的解決方案在處理攻擊類型方面顯然要廣泛得多。)

相關內容