Skip to main content
QUICK REVIEW

[論文レビュー] ResolverFuzz: Automated Discovery of DNS Resolver Vulnerabilities with Query-Response Fuzzing

Qifan Zhang, Xuesong Bai|arXiv (Cornell University)|Oct 4, 2023
Software Testing and Debugging TechniquesComputer Science被引用数 3
ひとこと要約

ResolverFuzz は、確率的文脈自由文法(PCFG)およびバイトレベルの変異を用いた制約付き状態保持型クエリ・レスポンス変異により、DNSリソルバの脆弱性を自動で発見するブラックボックスファズィングフレームワークである。微分テストとクラスタリングを用いてクラッシュ以外のバグ(例:キャッシュポイズニング)を検出。主要なDNSソフトウェアにおいて23件の脆弱性(うち15件がCVE番号付与済み)を発見した。

ABSTRACT

Domain Name System (DNS) is a critical component of the Internet. DNS resolvers, which act as the cache between DNS clients and DNS nameservers, are the central piece of the DNS infrastructure, essential to the scalability of DNS. However, finding the resolver vulnerabilities is non-trivial, and this problem is not well addressed by the existing tools. To list a few reasons, first, most of the known resolver vulnerabilities are non-crash bugs that cannot be directly detected by the existing oracles (or sanitizers). Second, there lacks rigorous specifications to be used as references to classify a test case as a resolver bug. Third, DNS resolvers are stateful, and stateful fuzzing is still challenging due to the large input space. In this paper, we present a new fuzzing system termed ResolverFuzz to address the aforementioned challenges related to DNS resolvers, with a suite of new techniques being developed. First, ResolverFuzz performs constrained stateful fuzzing by focusing on the short query-response sequence, which has been demonstrated as the most effective way to find resolver bugs, based on our study of the published DNS CVEs. Second, to generate test cases that are more likely to trigger resolver bugs, we combine probabilistic context-free grammar (PCFG) based input generation with byte-level mutation for both queries and responses. Third, we leverage differential testing and clustering to identify non-crash bugs like cache poisoning bugs. We evaluated ResolverFuzz against 6 mainstream DNS software under 4 resolver modes. Overall, we identify 23 vulnerabilities that can result in cache poisoning, resource consumption, and crash attacks. After responsible disclosure, 19 of them have been confirmed or fixed, and 15 CVE numbers have been assigned.

研究の動機と目的

  • 従来のファズィングオラクルが検出できない非クラッシュ、意味論的バグ(例:キャッシュポイズニング)をDNSリソルバで発見する課題に対処すること。
  • 特にキャッシュポイズニングやリソース消費バグに関して、DNSリソルバ動作の厳密な規定が不足しているという課題を克服すること。
  • 既知のリソルバ脆弱性を引き起こすのに最も効果的な短いクエリ・レスポンスシーケンスに焦点を当てることで、効果的な状態保持型ファズィングを可能にすること。
  • 二分木を用いたK-means法を用いたクラスタリングにより、不一致動作の手動トリージャー作業を削減すること。
  • ローカルの名前サーバ階層を局所化し、同時に複数のリソルバをテスト可能にする、スケーラブルで本番環境でも安全なテストインfraを構築すること。

提案手法

  • 実証的証拠に基づき、最も多くの既知のリソルバ脆弱性を引き起こすとされる、単一のクエリ・レスポンスペアのみを変異させる制約付き状態保持型ファズィングを適用する。
  • 文法的に有効なDNSメッセージ生成のための確率的文脈自由文法(PCFG)と、入力の多様性とカバレッジを向上させるバイトレベルの変異を組み合わせる。
  • 複数のリソルバ実装間で微分テストを実施し、キャッシュポイズニングやリソース消費脆弱性を示す不一致動作を検出する。
  • 不一致するテストケースをグループ化し、手動での調査作業を大幅に削減する、新規の二分木を用いたK-meansクラスタリング技術を採用する。
  • DNS名前サーバ階層をエミュレートするローカルで隔離されたテストインfraを導入し、ファズィング中にパブリックDNSリソルバに影響を与えないようにする。
  • コードインストルメンテーションやバイナリリライトを一切行わず、軽量な監視ツール(例:tcpdump、キャッシュダンプ)を用いたブラックボックステストを実施する。

実験結果

リサーチクエスチョン

  • RQ1短いクエリ・レスポンスシーケンスに対する制約付き状態保持型ファズィングは、既知のDNSリソルバ脆弱性の大部分を効果的に引き起こせるか?
  • RQ2文法ベースと変異ベースの入力生成は、DNSリソルバにおける意味論的バグの発見をどのように向上させるか?
  • RQ3微分テストとクラスタリングは、不一致するリソルバ動作における誤検出(フェイルポジティブ)のトリージャーに要する手作業の作業量をどの程度削減できるか?
  • RQ4ブラックボックスファズィングフレームワークは、本番環境用DNSソフトウェアにおける非クラッシュ脆弱性(例:キャッシュポイズニング、リソース枯渇)を検出可能か?
  • RQ5提案されたインフラストラクチャは、高スルーレートで安全かつスケーラブルに複数のリソルバモードをファズィングするのにどの程度有効か?

主な発見

  • ResolverFuzz は、4つのリソルバモード(再帰専用、フォワード専用、CDNS(フォールバック有無あり))を含む6つの主要DNSソフトウェアに、23件の以前未知の脆弱性を発見した。
  • そのうち19件の脆弱性は責任ある公開後、確認または修正済みであり、15件はCVE識別子が付与された。
  • 深刻度が高い脆弱性($CP1$)は、バリューアイテムのチェックを完全に回避可能であり、任意のTLDゾーン(例:.comドメイン)のオフパスキャッシュポイズニングを可能にする。
  • テストジェネレータは有効なDNSメッセージ構造の強力なカバレッジを達成し、PCFGとバイトレベルの変異が有効な変異多様性を顕著に向上させた。
  • 微分テストにより23件の不一致動作が検出され、クラスタリングにより意味的に類似したエッジケースがグループ化され、トリージャー作業が大幅に削減された。
  • ローカルテストインフラは、パブリックDNSサービスに影響を与えず、複数のリソルバを同時にテスト可能にし、高スルーレートのファズィングを可能にした。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。