<?xml version="1.0" encoding="utf-8"?>
<?xml-model href="rfc7991bis.rnc"?>  <!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>

<rfc
  xmlns:xi="http://www.w3.org/2001/XInclude"
  category="bcp"
  docName="draft-li-dnsop-response-preprocessing-02"
  ipr="trust200902"
  obsoletes=""
  updates=""
  submissionType="IETF"
  consensus="true"
  xml:lang="en"
  version="3">

  <front>
    <title abbrev="DNS Resp Preprocessing Guidelines">DNS Response Pre-processing Security Guidelines: Awaiting Valid Responses</title>

    <seriesInfo name="Internet-Draft" value="draft-li-dnsop-response-preprocessing-02"/>
   
     <author fullname="Xiang Li" initials="X.L." surname="Li">
      <organization>Nankai University</organization>
      <address>
        <postal>
          <street>38 Tongyan Road</street>
          <city>Tianjin</city>
          <region>Tianjin</region>
          <code>300355</code>
          <country>China</country>
        </postal>
        <email>lixiang@nankai.edu.cn</email>
      </address>
    </author>

     <author fullname="Yuqi Qiu" initials="Y.Q." surname="Qiu">
      <organization>Nankai University</organization>
      <address>
        <postal>
          <street>38 Tongyan Road</street>
          <city>Tianjin</city>
          <region>Tianjin</region>
          <code>300355</code>
          <country>China</country>
        </postal>
        <email>norahqiu@163.com</email>
      </address>
    </author>
    <date year="2026" month="February" day="28"/>
    <area>OPS Area</area> <workgroup>dnsop</workgroup> <keyword>DNS</keyword>
    <keyword>Security</keyword>
    <keyword>Resolver</keyword>
    <keyword>Response Pre-processing</keyword>
    <keyword>TUDOOR</keyword>

    <abstract>
      <t>The security and robustness of the Domain Name System (DNS) significantly depend on how resolvers handle received responses. Current DNS specifications lack exhaustive and consistent guidance on response pre-processing, particularly for malformed or unexpected packets. This specification gap has led to implementation divergences and has been shown to introduce security vulnerabilities such as DNS cache poisoning, Denial of Service (DoS), and resource exhaustion, as detailed in the TUDOOR attack research.</t>
      <t>This document aims to clarify and standardize the behavior of DNS resolvers when receiving and initially processing responses from upstream servers. The core proposal is the "Awaiting Valid Responses" mechanism, which mandates that a resolver, after issuing a query, MUST maintain a defined waiting period to receive a well-formed, relevant, and validated response. During this period, non-compliant incoming packets should be discarded, and the resolver should continue to wait until a valid response is received or the query times out. This document provides guidance for DNS implementers to mitigate security risks arising from flaws in response pre-processing logic.</t>
    </abstract>
 
  </front>

  <middle>
    
    <section anchor="introduction" title="Introduction">
      <section anchor="background" title="Background">
        <t>The Domain Name System (DNS) <xref target="RFC1034"/>, <xref target="RFC1035"/> is a fundamental component of the Internet's infrastructure. DNS resolvers, including recursive resolvers, forwarders, and stub resolvers, interact with upstream DNS servers and process their responses in the course of resolving domain names to IP addresses. Response pre-processing is a critical phase in this interaction, involving initial checks and validations of incoming packets before the formal processing of DNS record content. Additional clarifications on DNS behavior can be found in <xref target="RFC2181"/> and <xref target="RFC2308"/>.</t>
      </section>
      <section anchor="problem-statement" title="Problem Statement">
        <t>While the basic DNS protocol is defined in <xref target="RFC1034"/> and <xref target="RFC1035"/>, these specifications do not provide sufficient detail on how resolvers should handle various forms of invalid, malformed, or unexpected response packets. For instance, Section 4.1.2 of <xref target="RFC1035"/> describes header fields but offers limited guidance on how a receiver should validate and react to non-compliant header fields. This lack of specificity has led to diversity in DNS software implementations.</t>
        <t>Research <xref target="TUDOOR"/> has shown that these implementation differences and improper handling of edge cases can create exploitable logical vulnerabilities. Attackers can trigger these vulnerabilities by sending specially crafted malformed DNS responses, leading to consequences such as DNS cache poisoning (see also <xref target="KAMINSKY08"/>, <xref target="SAD-DNS"/>, and <xref target="FRAG-POISON"/>), Denial of Service (DoS), or resolver resource exhaustion. These attacks leverage unexpected resolver behaviors during the response pre-processing phase, such as premature termination of resolution, erroneous acceptance of invalid data, or bypassing internal control mechanisms.</t>
      </section>
      <section anchor="document-goals-and-scope" title="Document Goals and Scope">
        <t>The primary goal of this document is to provide clear guidance and best practices for the response pre-processing logic of DNS resolvers (including recursive resolvers, forwarders, and stub resolvers). Central to this is the introduction and formalization of the "Awaiting Valid Responses" mechanism.</t>
        <t>This document aims to:</t>
        <ul spacing="normal">
          <li>Clarify the sequence of validation steps and behaviors that resolvers should perform upon receiving packets from upstream servers.</li>
          <li>Emphasize the principle of not prematurely terminating a resolution attempt upon receipt of an invalid or malformed packet.</li>
          <li>Provide recommendations for handling various common scenarios involving malformed and unexpected packets.</li>
          <li>Reduce the occurrence of logical vulnerabilities by standardizing pre-processing behavior, thereby enhancing the overall security and robustness of the DNS infrastructure.</li>
        </ul>
        <t>This document does not attempt to modify the core data formats of the DNS protocol or the fundamental flow of query/response exchanges. Instead, it focuses on clarifying and supplementing existing specifications with respect to response reception and initial validation.</t>
        <t>This document acknowledges that the diversity of DNS implementations is a strength and not a weakness. The exact mitigations detailed herein are provided as operational guidance and Best Current Practices, rather than rigid Internet Standards. Implementers are encouraged to adapt these mechanisms to suit their specific architectures.</t>
      </section>
    </section>
    
    <section anchor="requirements-language" title="Requirements Language">
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
          "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT
          RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be
          interpreted as described in BCP 14 <xref target="RFC2119"/>
          <xref target="RFC8174"/> when, and only when, they appear in
          all capitals, as shown here.</t>
    </section>

    <section anchor="terminology" title="Terminology">
      <dl spacing="normal" newline="false">
        <dt>Resolver:</dt>
        <dd>An entity that performs DNS query resolution. This can be a recursive resolver, a DNS forwarder, or a stub resolver.</dd>
        <dt>Upstream Server:</dt>
        <dd>A server to which a resolver sends DNS queries, e.g., an authoritative name server or another recursive resolver.</dd>
        <dt>Response Pre-processing:</dt>
        <dd>The set of checks and validation steps performed by a resolver upon receiving a packet from an upstream server, prior to the formal processing of DNS data content (e.g., caching records, returning to a client).</dd>
        <dt>Malformed Packet:</dt>
        <dd>A packet that does not conform to the format requirements of the DNS protocol specification <xref target="RFC1035"/> or relevant network protocols (IP, UDP, TCP).</dd>
        <dt>Unexpected Packet:</dt>
        <dd>A packet that, while potentially well-formed, does not match the resolver's current resolution context in terms of its content (e.g., mismatched TXID, incorrect QR bit) or timing.</dd>
        <dt>Valid Response:</dt>
        <dd>A well-formed response packet whose content (especially the TXID) matches an active query and which adheres to DNS protocol logic.</dd>
        <dt>Awaiting Valid Response Window:</dt>
        <dd>The period during which a resolver, after sending a query, waits to receive a valid response, typically limited by a query timeout mechanism.</dd>
        <dt>Four-tuple:</dt>
        <dd>The combination of IP layer and transport layer identifiers, typically including source IP address, destination IP address, source port number, and destination port number.</dd>
        <dt>Transaction ID (TXID):</dt>
        <dd>A 16-bit identifier in the DNS header used to match queries and responses.</dd>
        <dt>TUDOOR Attack:</dt>
        <dd>A class of attacks described in the <xref target="TUDOOR"/> paper that exploit logical vulnerabilities in DNS response pre-processing.</dd>
      </dl>
    </section>

    <section anchor="the-awaiting-valid-responses-mechanism" title="The &quot;Awaiting Valid Responses&quot; Mechanism">
      <section anchor="core-principles" title="Core Principles">
        <t>A DNS resolver, after sending a query to an upstream server, MUST initiate an internal "Awaiting Valid Responses" cycle. During this cycle, the resolver's primary objective is to receive and validate a valid response corresponding to the query sent.</t>
        <t>The following principles MUST be adhered to:</t>
        <ul spacing="normal">
          <li>Persistent Waiting: After issuing a query, a resolver MUST continuously listen for and process incoming packets until either a response confirmed as valid is received, or the timeout mechanism for that query is triggered.</li>
          <li>Strict Validation: All received packets MUST undergo a series of predefined validation steps (detailed in <xref target="recommended-state-model-for-response-pre-processing"/>) before being accepted as a valid response.</li>
          <li>Preferential Discarding of Invalid Packets: Any packet identified during validation as malformed, unexpected, or unrelated to an active query MUST be discarded. After discarding, the resolver MUST continue to await subsequent, potentially valid responses and SHOULD NOT terminate the resolution attempt for the original query solely due to the receipt of an invalid packet. An exception is if a packet (e.g., a trusted ICMP message) definitively indicates a permanent failure for that query.</li>
          <li>Avoidance of Premature Termination: A resolver MUST NOT prematurely terminate the resolution process for an original query or close the associated network socket due to the receipt of most types of malformed or unexpected packets.</li>
          <li>Timeout Handling: If a valid response is not received within the pre-set Awaiting Valid Response Window, the resolver MUST follow its established timeout and retransmission logic.</li>
        </ul>
      </section>

      <section anchor="recommended-state-model-for-response-pre-processing" title="Recommended State Model for Response Pre-processing">
        <t>The following state model describes the recommended response pre-processing flow. A resolver maintains an independent state for each active outbound query.</t>

        <section anchor="state-0-awaiting-response" title="State 0: Awaiting Response">
          <t><em>Description:</em> The resolver has sent a query upstream and is awaiting a response. A timeout timer is active.</t>
          <t><em>Entry Condition:</em> After sending a query.</t>
          <t><em>Action:</em> Listen on the network socket.</t>
        </section>

        <section anchor="state-1-reception-and-network-layer-validation" title="State 1: Reception and Network Layer Validation">
          <t><em>Description:</em> An IP packet is received from the network interface.</t>
          <t><em>Actions:</em></t>
          <ol spacing="normal" type="1">
            <li>Validate the packet's network layer header (e.g., IP <xref target="RFC0791"/> header checksum). If invalid, the packet MUST be discarded.</li>
            <li>Check if the packet's four-tuple matches the expected response source for any active query. If no match, the packet MUST be discarded.</li>
            <li>If passed, proceed to the next state based on protocol type (e.g., ICMP, UDP, TCP). For UDP/TCP, proceed to State 3 (<xref target="state-3-transport-layer-validation"/>). For ICMP, proceed to State 2 (<xref target="state-2-icmp-message-evaluation"/>).</li>
          </ol>
        </section>

        <section anchor="state-2-icmp-message-evaluation" title="State 2: ICMP Message Evaluation">
          <t><em>Description:</em> The received packet is an ICMP <xref target="RFC0792"/><xref target="RFC4443"/> message.</t>
          <t><em>Actions:</em></t>
          <ol spacing="normal" type="1">
            <li>The resolver SHOULD inspect the ICMP message type, code, and the quoted original datagram information in its payload to determine if it is relevant and trustworthy for an active query.</li>
            <li>For ICMP messages indicating Port Unreachable (Type 3, Code 3) that match an active query's authoritative server and port, the resolver MAY consider this a failure signal for that specific upstream server/port combination and act accordingly (e.g., try an alternate server, or mark this query attempt as failed after multiple tries).</li>
            <li>For other types of ICMP errors, especially those of unknown origin or ambiguous meaning, the resolver SHOULD NOT terminate the entire resolution process solely based on this ICMP message. It is RECOMMENDED to log the message and return to State 0 (<xref target="state-0-awaiting-response"/>) to continue waiting.</li>
            <li>The resolver MUST NOT prematurely terminate resolution due to specific ICMP message combinations that can be exploited for DoS, as described in <xref target="TUDOOR"/> and <xref target="RFC5927"/>.</li>
          </ol>
        </section>

        <section anchor="state-3-transport-layer-validation" title="State 3: Transport Layer Validation">
          <t><em>Description:</em> The received packet is a UDP <xref target="RFC0768"/> or TCP <xref target="RFC9293"/> segment.</t>
          <t><em>Actions:</em></t>
          <ol spacing="normal" type="1">
            <li>Validate the transport layer header (e.g., UDP/TCP checksum, if applicable and checked). If invalid, the packet MUST be discarded.</li>
            <li>Check the UDP/TCP payload length. If the payload is empty or its length is insufficient to contain a minimal DNS header (12 bytes), the packet MUST be discarded. The resolver returns to State 0 (<xref target="state-0-awaiting-response"/>).</li>
            <li>If the payload length is sufficient, proceed to State 4 (<xref target="state-4-dns-header-validation"/>).</li>
          </ol>
        </section>

        <section anchor="state-4-dns-header-validation" title="State 4: DNS Header Validation">
          <t><em>Description:</em> Validation of the DNS message header fields.</t>
          <t><em>Actions:</em></t>
          <ol spacing="normal" type="1">
            <li>Parse the DNS header.</li>
            <li>QR Bit: MUST be 1 (response). If the QR bit is 0 (query), this packet MUST be discarded. The resolver returns to State 0 (<xref target="state-0-awaiting-response"/>). This is intended to prevent V_CP vulnerabilities like the one affecting Microsoft DNS in <xref target="TUDOOR"/>.</li>
            <li>OpCode: Should typically be 0 (standard query). Responses to other OpCodes should be handled according to their definitions and local policy. If the OpCode is invalid or unsupported, the packet SHOULD be discarded.</li>
            <li>QDCOUNT: For a response, this field should generally match the QDCOUNT in the corresponding query. In many cases, it should be 1. If QDCOUNT does not meet expectations (e.g., is much larger than 1, or inconsistent with the query), the packet SHOULD be treated as suspicious and potentially discarded, depending on local policy and strict interpretation of <xref target="RFC1035"/>. Refer to <xref target="draft-ietf-dnsop-qdcount-is-one"/>.</li>
            <li>Other header fields (e.g., AA, TC, RD, RA, Z, RCODE) MUST be checked for validity within a response context. Headers with overtly contradictory or illegal values MUST cause the packet to be discarded. The resolver returns to State 0 (<xref target="state-0-awaiting-response"/>).</li>
            <li>If header fields are preliminarily valid, proceed to State 5 (<xref target="state-5-dns-section-parsing-and-validation"/>).</li>
          </ol>
        </section>

        <section anchor="state-5-dns-section-parsing-and-validation" title="State 5: DNS Section Parsing and Validation">
          <t><em>Description:</em> Parsing and validation of the Question, Answer, Authority, and Additional sections of the DNS message body.</t>
          <t><em>Actions:</em></t>
          <ol spacing="normal" type="1">
            <li>Parse the sections according to the counts in the header.</li>
            <li>Validate domain name representations (including the validity of compression pointers), RR types, and RDATA formats.</li>
            <li>Any critical error that prevents unambiguous parsing of record content or violates specified formats (e.g., invalid compression pointer loops, RDLENGTH mismatch with actual data) MUST cause the packet to be discarded. The resolver returns to State 0 (<xref target="state-0-awaiting-response"/>).</li>
            <li>If all sections are parsed successfully, proceed to State 6 (<xref target="state-6-transaction-id-txid-validation"/>).</li>
          </ol>
        </section>

        <section anchor="state-6-transaction-id-txid-validation" title="State 6: Transaction ID (TXID) Validation">
          <t><em>Description:</em> Validation that the TXID in the response matches that of an active query.</t>
          <t><em>Actions:</em></t>
          <ol spacing="normal" type="1">
            <li>If the response TXID matches an active query's TXID, proceed to State 7 (<xref target="state-7-valid-response-received"/>).</li>
            <li>If the TXID does not match, this packet MUST be discarded. The resolver returns to State 0 (<xref target="state-0-awaiting-response"/>).</li>
          </ol>
        </section>

        <section anchor="state-7-valid-response-received" title="State 7: Valid Response Received">
          <t><em>Description:</em> A valid response, having passed all pre-processing validations, has been received.</t>
          <t><em>Actions:</em></t>
          <ol spacing="normal" type="1">
            <li>Stop the timeout timer associated with this query.</li>
            <li>Pass the validated response data to subsequent DNS processing modules (e.g., caching, responding to the client).</li>
            <li>The pre-processing flow for this query concludes.</li>
          </ol>
        </section>

        <section anchor="state-8-query-timeout" title="State 8: Query Timeout">
          <t><em>Description:</em> The timeout timer for awaiting a valid response has expired.</t>
          <t><em>Actions:</em></t>
          <ol spacing="normal" type="1">
            <li>If retransmission is permitted and the maximum retransmission count has not been reached, proceed to State 9 (<xref target="state-9-retransmission-decision"/>).</li>
            <li>Otherwise, proceed to State 10 (<xref target="state-10-resolution-termination"/>).</li>
          </ol>
        </section>

        <section anchor="state-9-retransmission-decision" title="State 9: Retransmission Decision">
          <t><em>Description:</em> Deciding whether to retransmit the query.</t>
          <t><em>Actions:</em></t>
          <ol spacing="normal" type="1">
            <li>The resolver MUST check if the configured retransmission limit for this query has been reached. This check MUST occur before an actual retransmission is performed, to prevent V_RC vulnerabilities as described in <xref target="TUDOOR"/>.</li>
            <li>If the limit has not been reached, the resolver MAY retransmit the query (potentially with a new TXID and/or source port). After retransmission, return to State 0 (<xref target="state-0-awaiting-response"/>).</li>
            <li>If the limit has been reached, proceed to State 10 (<xref target="state-10-resolution-termination"/>).</li>
          </ol>
        </section>

        <section anchor="state-10-resolution-termination" title="State 10: Resolution Termination">
          <t><em>Description:</em> The resolution attempt for this query has terminated.</t>
          <t><em>Actions:</em></t>
          <ol spacing="normal" type="1">
            <li>Return an appropriate error response (e.g., SERVFAIL) to the original requestor.</li>
            <li>Clean up state associated with this query.</li>
          </ol>
        </section>
      </section>

      <section anchor="general-guidelines-for-handling-malformed-and-unexpected-packets" title="General Guidelines for Handling Malformed and Unexpected Packets">
        <ul spacing="normal">
          <li>Silent discard: For most packets determined to be invalid during pre-processing, the resolver SHOULD discard them silently, i.e., without sending any form of response to the source. This avoids leaking information about the resolver's internal state or behavior.</li>
          <li>Persistent Listening: After discarding an invalid packet, the resolver MUST continue to listen on the socket for other potential responses related to the original query, until the query times out.</li>
          <li>Logging: A resolver MAY log diagnostic information about discarded malformed or unexpected packets. However, the level and frequency of logging should be configurable to prevent the logging system itself from becoming an attack vector or performance bottleneck.</li>
          <li>No State Contamination: The processing of invalid packets MUST NOT negatively affect the state of the resolver's other active queries or its shared cache.</li>
        </ul>
      </section>
    </section>

    <section anchor="considerations-for-known-attack-vectors" title="Considerations for Known Attack Vectors">
      <t>The specifications in this document are intended to mitigate security vulnerabilities arising from flaws in response pre-processing logic, particularly those highlighted in the <xref target="TUDOOR"/> research.</t>
      <section anchor="regarding-cache-poisoning-v_cp" title="Regarding Cache Poisoning (V_CP)">
        <t>By mandating in State 4.2.5 (<xref target="state-4-dns-header-validation"/>) that the QR bit in a response MUST be 1 and that packets with QR=0 are discarded, attacks that exploit response sockets to probe source ports or inject queries are prevented. Concurrently, strict TXID matching in State 4.2.7 (<xref target="state-6-transaction-id-txid-validation"/>) is fundamental to preventing cache poisoning.</t>
      </section>
      <section anchor="regarding-denial-of-service-v_ds" title="Regarding Denial of Service (V_DS)">
        <t>By emphasizing that the resolver MUST continue to await a valid response (return to State 0 (<xref target="state-0-awaiting-response"/>)) after receiving most types of malformed packets (including specific ICMP messages, empty-payload UDP packets, etc.), rather than prematurely terminating resolution (as specified in States 4.2.3 (<xref target="state-2-icmp-message-evaluation"/>), 4.2.4 (<xref target="state-3-transport-layer-validation"/>)), the effectiveness of such DoS attacks is significantly reduced. Failure should only be determined after a genuine query timeout or exhaustion of retransmission limits.</t>
      </section>
      <section anchor="regarding-resource-exhaustion-v_rc" title="Regarding Resource Exhaustion (V_RC)">
        <t>By explicitly requiring in State 4.2.10 (<xref target="state-9-retransmission-decision"/>) that the retransmission count limit MUST be checked before any retransmission decision, attacks that induce a resolver to send an excessive number of queries to exhaust its resources are prevented.</t>
      </section>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>The guidelines in this document aim to enhance the resilience of DNS resolvers against specific types of attacks. However, implementers should be aware of the following:</t>
      <ul spacing="normal">
        <li>Implementation Correctness: The effectiveness of these guidelines depends on their correct and complete implementation. Any deviation from the state machine logic could reintroduce vulnerabilities.</li>
        <li>Resource Limits: While handling high volumes of incoming traffic (including malicious traffic), resolvers still require appropriate internal resource management mechanisms (e.g., rate limiting requests from a single source) to prevent self-overload.</li>
        <li>Logging Security: Logging is vital for monitoring and troubleshooting but can also leak information or be used in attacks. Control over log content, verbosity, and rate is necessary.</li>
        <li>Randomness Requirements: Strong source port and TXID randomization remain crucial for defending against DNS cache poisoning (see <xref target="DAGON-0X20"/>) and are complementary to the specifications herein.</li>
        <li>DNSSEC: DNS Security Extensions (DNSSEC) <xref target="RFC4033"/> provide cryptographic validation of DNS data origin and integrity. The pre-processing steps defined in this document should occur before or in parallel with DNSSEC validation, as even packets claiming to be DNSSEC-signed can be malformed at lower layers.</li>
        <li>Evolving Threats: Attack techniques evolve. DNS implementers and operators need to remain vigilant and stay informed about new security threats and mitigation strategies.</li>
      </ul>
    </section>

    <section anchor="relationship-to-other-rfcs" title="Relationship to Other RFCs">
        <t>This document is intended to clarify and supplement existing DNS specifications, not to replace them.</t>
        <ul spacing="normal">
          <li>It builds upon the DNS protocol foundations defined in <xref target="RFC1034"/> and <xref target="RFC1035"/>, providing more specific guidance on the response handling aspects.</li>
          <li>It aligns with the robustness requirements for host application layers in <xref target="RFC1122"/> and <xref target="RFC1123"/>.</li>
          <li>It supports the measures for making DNS more resilient against forged answers proposed in <xref target="RFC5452"/>.</li>
          <li>For QDCOUNT handling, it refers to the spirit of <xref target="draft-ietf-dnsop-qdcount-is-one"/>.</li>
        </ul>
    </section>
    
    <section anchor="IANA" title="IANA Considerations">
      <t>This document does not require any IANA actions.</t>
    </section>
    
  </middle>

  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.0768.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.0791.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.0792.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9293.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.1034.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.1035.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2181.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
      </references>
 
      <references>
        <name>Informative References</name>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.1122.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.1123.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2308.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4033.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4443.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5452.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5927.xml"/>
       
        <reference anchor="TUDOOR" target="https://ieeexplore.ieee.org/document/10540884"> <front>
            <title>TUDOOR Attack: Systematically Exploring and Exploiting Logic Vulnerabilities in DNS Response Pre-processing with Malformed Packets</title>
            <author initials="X." surname="Li" fullname="Xiang Li">
              <organization>Tsinghua University</organization>
            </author>
            <author initials="W." surname="Xu" fullname="Wei Xu">
              <organization>University of California, Irvine</organization>
            </author>
            <author initials="B." surname="Liu" fullname="Baojun Liu">
              <organization>Tsinghua University</organization>
            </author>
            <author initials="M." surname="Zhang" fullname="Mingming Zhang">
              <organization>Tsinghua University</organization>
            </author>
            <author initials="Z." surname="Li" fullname="Zhou Li">
              <organization>Tsinghua University</organization>
            </author>
            <author initials="J." surname="Zhang" fullname="Jia Zhang">
              <organization>Zhongguancun Laboratory</organization>
            </author>
            <author initials="D." surname="Chang" fullname="Deliang Chang">
              <organization>QI-ANXIN Technology Research Institute</organization>
            </author>
            <author initials="X." surname="Zheng" fullname="Xiaofeng Zheng">
              <organization>Tsinghua University</organization>
            </author>
            <author initials="C." surname="Wang" fullname="Chuhan Wang">
              <organization>Tsinghua University</organization>
            </author>
            <author initials="J." surname="Chen" fullname="Jianjun Chen">
              <organization>Tsinghua University</organization>
            </author>
            <author initials="H." surname="Duan" fullname="Haixin Duan">
              <organization>Tsinghua University</organization>
            </author>
            <author initials="Q." surname="Li" fullname="Qi Li">
              <organization>Tsinghua University</organization>
            </author>
            <date year="2024" month="May"/>
          </front>
          <refcontent>Proceedings of the IEEE Symposium on Security and Privacy (S&amp;P)</refcontent>
          <seriesInfo name="DOI" value="10.1109/SP54039.2024.00109"/> </reference>

        <reference anchor="draft-ietf-dnsop-qdcount-is-one" target="https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-qdcount-is-one-01">
          <front>
            <title>Clarifying that QDCOUNT is One in DNS Responses</title>
            <author initials="P." surname="Hoffman" fullname="Paul Hoffman"/>
            <date year="2024" month="March"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-dnsop-qdcount-is-one-01"/>
        </reference>

        <reference anchor="DAGON-0X20" target="https://doi.org/10.1145/1455770.1455774">
          <front>
            <title>Increased DNS Forgery Resistance through 0x20-bit Encoding: Security via Leet Queries</title>
            <author initials="D." surname="Dagon" fullname="David Dagon"/>
            <author initials="M." surname="Antonakakis" fullname="Manos Antonakakis"/>
            <author initials="P." surname="Vixie" fullname="Paul Vixie"/>
            <author initials="T." surname="Jinmei" fullname="Tatuya Jinmei"/>
            <author initials="W." surname="Lee" fullname="Wenke Lee"/>
            <date year="2008" month="October"/>
          </front>
          <refcontent>Proceedings of the 15th ACM Conference on Computer and Communications Security (CCS '08)</refcontent>
          <seriesInfo name="DOI" value="10.1145/1455770.1455774"/>
        </reference>

        <reference anchor="KAMINSKY08">
          <front>
            <title>It's The End Of The Cache As We Know It</title>
            <author initials="D." surname="Kaminsky" fullname="Dan Kaminsky"/>
            <date year="2008" month="August"/>
          </front>
          <refcontent>Black Hat USA Briefings</refcontent>
        </reference>

        <reference anchor="SAD-DNS" target="https://doi.org/10.1145/3372297.3417280">
          <front>
            <title>DNS Cache Poisoning Attack Reloaded: Revolutions with Side Channels</title>
            <author initials="K." surname="Man" fullname="Keyu Man"/>
            <author initials="Z." surname="Qian" fullname="Zhiyun Qian"/>
            <author initials="Z." surname="Wang" fullname="Zhongjie Wang"/>
            <author initials="X." surname="Zheng" fullname="Xiaofeng Zheng"/>
            <author initials="Y." surname="Huang" fullname="Youjun Huang"/>
            <author initials="H." surname="Duan" fullname="Haixin Duan"/>
            <date year="2020" month="November"/>
          </front>
          <refcontent>Proceedings of the 2020 ACM SIGSAC Conference on Computer and Communications Security (CCS '20)</refcontent>
          <seriesInfo name="DOI" value="10.1145/3372297.3417280"/>
        </reference>

        <reference anchor="FRAG-POISON" target="https://doi.org/10.1109/CNS.2013.6682691">
          <front>
            <title>Fragmentation Considered Poisonous</title>
            <author initials="A." surname="Herzberg" fullname="Amir Herzberg"/>
            <author initials="H." surname="Shulman" fullname="Haya Shulman"/>
            <date year="2013" month="October"/>
          </front>
          <refcontent>2013 IEEE Conference on Communications and Network Security (CNS)</refcontent>
          <seriesInfo name="DOI" value="10.1109/CNS.2013.6682691"/>
        </reference>
      </references>
    </references>
    
    </back>
</rfc>