<?xml version='1.0' encoding='UTF-8'?>
<rfc version="3" ipr="trust200902" category="std" submissionType="IETF" docName="draft-zhang-dnssec-wildcard-validation-01" updates="4035, 8198" consensus="true" tocInclude="true" symRefs="true" sortRefs="true">
  <front>
    <title abbrev="DNSSEC Wildcard Containment">Signer-Zone Containment for DNSSEC Wildcard Validation</title>
    <author initials="Q." surname="Zhang" fullname="Qifan Zhang">
      <organization>Palo Alto Networks</organization>
      <address><email>qzhang@paloaltonetworks.com</email></address>
    </author>
    <author initials="Z." surname="Shen" fullname="Zilin Shen">
      <organization>Purdue University</organization>
      <address><email>shen624@purdue.edu</email></address>
    </author>
    <author initials="I." surname="Karim" fullname="Imtiaz Karim">
      <organization>The University of Texas at Dallas</organization>
      <address><email>imtiaz.karim@utdallas.edu</email></address>
    </author>
    <author initials="E." surname="Bertino" fullname="Elisa Bertino">
      <organization>Purdue University</organization>
      <address><email>bertino@purdue.edu</email></address>
    </author>
    <author initials="D." surname="Liu" fullname="Daiping Liu">
      <organization>Palo Alto Networks</organization>
      <address><email>dpliu@paloaltonetworks.com</email></address>
    </author>
    <author initials="Z." surname="Li" fullname="Zhou Li">
      <organization>University of California, Irvine</organization>
      <address><email>zhou.li@uci.edu</email></address>
    </author>
    <date year="2026" month="October" day="17"/>
    <area>Operations and Management</area>
    <keyword>DNSSEC</keyword><keyword>wildcard</keyword><keyword>RRSIG</keyword>
    <abstract>
      <t>Validators for the DNS Security Extensions (DNSSEC) reconstruct the original owner name of a signed resource record set (RRset) using the RRSIG Labels field. If the reconstructed owner is outside the signing zone, a cryptographically correct signature can be misinterpreted as authenticating wildcard data belonging to another zone. Aggressive use of DNSSEC-validated caches can extend the effect to other names. This document updates RFC 4035 to require signer-zone containment of the reconstructed owner and updates RFC 8198 to preserve that authenticated relationship when reusing wildcard data. These requirements constrain DNSSEC authentication and cached reuse. They do not change DNS wildcard matching or synthesis rules, or DNS message formats.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction"><name>Introduction</name>
      <t>The RRSIG Labels field allows a validator to reconstruct the original signed owner name, including when a received owner results from wildcard expansion. Its definition in <xref target="RFC4034" section="3.1.3"/> and the reconstruction algorithm in <xref target="RFC4035" section="5.3.2"/> allow a validator to recover the owner name that was used to generate a signature. The checks in <xref target="RFC4035" section="5.3.1"/> also require the Signer's Name to identify the zone containing the RRset.</t>
      <t>The relationship between that signing zone and the reconstructed owner needs to be checked explicitly. A signature over a reconstructed owner outside the signing zone does not establish authority for data at that owner, even when the received owner is within the signing zone and cryptographic verification succeeds. Reusing such data as a wildcard source under <xref target="RFC8198" section="5.3"/> can cross a zone boundary. The DNSSECVerif study identified this interaction <xref target="DNSSECVerif"/>. Public implementation reports are summarized in <xref target="implementation-evidence"/>.</t>
      <t>This document adds a containment check to the validation procedure in RFC 4035 and specifies which authenticated information must remain associated when RFC 8198 reuses wildcard data. The requirements apply to each RRSIG considered for validation. They retain the existing distinction between authenticating a wildcard source and proving that the source applies to a particular query name.</t>
      <t>The correction is deliberately limited to reconstructed-owner containment and its preservation during wildcard reuse. It leaves the wildcard matching and synthesis rules described in <xref target="RFC4592"/> unchanged, including expansion over more than one label. It does not change denial-of-existence algorithms, trust-anchor processing, or DNSSEC algorithm policy.</t>
      <t>For a signing-zone apex whose leftmost label is not an asterisk, the added containment check requires the RRSIG Labels value to be at least the number of non-root labels in that apex, in addition to the existing authority and upper-bound checks. The exact-name exception for an asterisk-named apex is described in <xref target="asterisk-apex"/>; <xref target="count-check"/> gives the conditional count-based formulation.</t>
    </section>
    <section anchor="terminology"><name>Conventions and Terminology</name>
      <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>
      <t>DNS terminology follows <xref target="RFC9499"/>. Wildcard domain name, closest encloser, and source of synthesis have the meanings in <xref target="RFC4592"/>. This document uses the following notation for one candidate RRSIG and the RRset it covers:</t>
      <dl newline="false" spacing="normal">
        <dt>O:</dt><dd>The received RRset owner name.</dd>
        <dt>S:</dt><dd>The Signer's Name in the candidate RRSIG.</dd>
        <dt>L:</dt><dd>The value of the candidate RRSIG Labels field.</dd>
        <dt>N:</dt><dd>The number of non-root labels in O, including any label whose contents are an asterisk.</dd>
        <dt>R:</dt><dd>The original owner name reconstructed from O and L by the algorithm in Section 5.3.2 of RFC 4035.</dd>
      </dl>
      <t>A name is a strict subdomain of another name if it has that name as a suffix of complete labels and has at least one additional label. The root name has zero non-root labels. A wildcard label is a label consisting of the single octet 0x2a; an asterisk within a longer label is not a wildcard label.</t>
      <t>For clarity, the existing reconstruction yields R = O when L = N. When L is less than N, R consists of a wildcard label followed by the rightmost L labels of O; for L = 0 this yields the name "*.". L greater than N fails an existing validation check. Although L omits an original owner's leftmost wildcard label, N counts all non-root labels in the received owner.</t>
    </section>
    <section anchor="problem"><name>Problem Description</name>
      <t>Consider a signed child zone, child.example., and a received RRset at a.child.example. A candidate RRSIG names child.example. as S but sets L to 1. The reconstruction algorithm yields R = *.example. The child-zone key can sign the corresponding octets, but authority over child.example. does not confer authority over *.example.</t>
      <t>By contrast, the same received owner with S = child.example. and L = 2 reconstructs *.child.example. and passes containment. That source can also synthesize an owner such as a.b.child.example. when the existing wildcard-applicability rules permit it. The new check does not limit a wildcard to matching a single label.</t>
      <t>A validator that checks only the received owner's relationship to S and verifies the signature can lose this distinction. If a cache then indexes the RRset as wildcard data at *.example., the child signature can be reused as if it authenticated data in the parent zone. Suitable denial-of-existence data used in a later synthesis does not repair the missing authorization for the wildcard source.</t>
      <t>The check is also needed when an implementation considers multiple signatures. Validation of the RRset using one RRSIG does not authenticate a different RRSIG's Labels or Signer's Name. Using the validation result from one signature with the reconstruction metadata from another can recreate the same error.</t>
      <section anchor="implementation-evidence"><name>Evidence from Deployed Resolvers</name>
        <t>Public vendor reports document practical consequences of insufficient RRSIG Labels validation in deployed resolver software:</t>
        <ul>
          <li>BIND 9: CVE-2026-11721 describes reconstruction of a wildcard name above an attacker-controlled zone, with potential cache poisoning when DNSSEC-based synthesis is enabled with synth-from-dnssec yes <xref target="BIND-11721"/>.</li>
          <li>Unbound: CVE-2026-44690 describes insufficient Labels validation combined with premature cache writes during aggressive NSEC processing. Its documented attack uses a delegated zone beneath an NSEC-signed parent to poison sibling-zone data. The reported fixes address Labels validation, cache-write ordering, and wildcard bailiwick checks <xref target="UNBOUND-44690"/>.</li>
          <li>PowerDNS Recursor: CVE-2026-52688 describes a DNSSEC wildcard-validation bypass caused by a crafted authoritative reply with too few RRSIG labels <xref target="PDNS-2026-10"/>.</li>
          <li>Knot Resolver: the 6.4.1 release notes document a correction for RRSIG Labels values below the label count of the RRSIG Signer's Name, affecting primarily the aggressive cache. That release entry gives no CVE identifier for this correction <xref target="KNOT-6.4.1"/>.</li>
        </ul>
        <t>The reported prerequisites and consequences differ across implementations. These reports motivate explicit containment and cache-association requirements; they do not establish identical defects or conformance of the published fixes to all requirements in this document.</t>
      </section>
    </section>
    <section anchor="updates"><name>Updates to Validation and Wildcard Reuse</name>
      <section anchor="update-4035"><name>Update to RFC 4035: Reconstructed Owner Containment</name>
        <t>The following requirements are added to Section 5.3.2 of <xref target="RFC4035"/>, immediately after the algorithm that calculates the owner name used in the signed data:</t>
        <blockquote>
        <t>For each candidate RRSIG, the validator MUST check that the reconstructed original owner name is either equal to or a strict subdomain of the RRSIG Signer's Name. If the reconstructed original owner name differs from the received RRset owner name, it MUST be a strict subdomain of the RRSIG Signer's Name.</t>
        <t>These comparisons MUST operate on complete DNS labels, using the DNS case-insensitive comparison rules in <xref target="RFC4343"/>. A textual suffix comparison that does not respect label boundaries is insufficient.</t>
        <t>An RRSIG that fails either containment requirement MUST NOT be used to authenticate the received RRset or a wildcard source reconstructed from it. An implementation can perform these checks before cryptographic verification; successful cryptographic verification does not override a failed check.</t>
        </blockquote>
        <t>These requirements supplement the existing checks in Section 5.3.1 of RFC 4035. In particular, containment of names does not by itself establish that a key is authenticated or that the signing zone is authoritative for the RRset. Existing zone-cut rules, including the treatment of parent-side DS RRsets, continue to apply.</t>
        <t>A failure is associated with the candidate RRSIG, not unconditionally with every signature covering the RRset. Processing of alternative signatures and determination of the final validation result continue to follow <xref target="RFC6840" section="5.4"/>. An otherwise valid signature can still authenticate the RRset when another candidate signature fails these checks.</t>
        <t>The requirement for a strict subdomain when R differs from O prevents use of an asterisk-named zone apex as a source of synthesis. The added check does not reject data at that exact apex; see <xref target="asterisk-apex"/>.</t>
      </section>
      <section anchor="update-8198"><name>Update to RFC 8198: Authenticated Wildcard Source</name>
        <t>Append the following text to Section 5.3 of <xref target="RFC8198"/>:</t>
        <blockquote>
        <t>Before a validator uses a cached RRset as a wildcard source for synthesis, it MUST establish that the source RRset data, the original owner name identifying that source, and the signing zone were authenticated together by successful validation of an RRSIG under RFC 4035 as updated by this document. The source owner name MUST be a strict subdomain of that signing zone's apex.</t>
        <t>A successful validation result for an RRset MUST NOT be used to authenticate an original owner name or signing-zone association obtained solely from a different RRSIG that did not successfully validate. Each wildcard-source association used for synthesis MUST be justified by a successfully validated RRSIG for that association.</t>
        <t>An implementation MUST preserve sufficient validated information to establish this association, or re-establish it by validation before use. It need not retain a particular cache representation or perform cryptographic verification on every cache hit. Information retained without the required association, including information retained across a software upgrade, MUST NOT be used for wildcard synthesis unless the association is established.</t>
        </blockquote>
        <t>Authentication of a wildcard source means authenticating the RRset at its reconstructed original owner R, including the signing key's authority, signature validity, and the binding to signing zone S. This is distinct from accepting the received expanded answer at O when O differs from R. These requirements do not require successful validation of the complete incoming expanded response as a prerequisite for retaining independently authenticated source data. They also do not permit that source to answer a query without the applicable authenticated denial-of-existence proofs. When the cache lacks sufficient authenticated information for synthesis, the resolver follows the fallback to authoritative resolution specified in Section 5 of RFC 8198.</t>
        <t>All other requirements of RFC 8198 continue to apply, including the required denial-of-existence proofs and restrictions at zone cuts. NSEC and NSEC3 processing continues to follow RFC 4035, <xref target="RFC5155"/>, and their applicable updates. Existing TTL and signature-validity limits, including the changes in <xref target="RFC9077"/>, are unchanged.</t>
      </section>
    </section>
    <section anchor="compatibility"><name>Compatibility and Deployment</name>
      <section anchor="ordinary-wildcards"><name>Ordinary Names and Wildcard Expansion</name>
        <t>Under <xref target="RFC4592" section="3.3.1"/>, the closest encloser is an existing name in the selected zone, and the source of synthesis is its immediate asterisk child. A source used for synthesis therefore lies strictly below that zone's apex. The added check applies this existing authority boundary to the original owner recovered during DNSSEC validation.</t>
        <t>For a received RRset with neither wildcard expansion nor a wildcard owner name, L = N and the reconstructed owner is unchanged. For a legitimate wildcard expansion, the source lies within the authenticating zone and below its apex. Neither case requires a change to the DNS wire format, authoritative data, or correctly generated signatures.</t>
        <t>For example, if child.example. does not exist and example. is the closest encloser, *.example. can synthesize a.child.example. A signature with S = example. and L = 1 reconstructs that source and passes containment. The failing example in <xref target="problem"/> instead names child.example. as the signer of the same reconstructed source. Rejecting that candidate signature does not prohibit the legitimate parent-zone expansion.</t>
        <t>Compatibility here concerns correctly signed, standards-conforming wildcard synthesis. It does not require a validating resolver and a nonvalidating resolver to return the same result for an authentication-invalid response; DNSSEC validation-failure handling continues to follow RFC 4035.</t>
        <t>The checks apply whether or not aggressive use of DNSSEC-validated caches is enabled. Disabling aggressive wildcard synthesis alone does not implement the update to RFC 4035. A validator that stores wildcard-source associations in more than one cache or processing path needs to enforce the association requirement in each path that can later supply a source for synthesis.</t>
      </section>
      <section anchor="asterisk-apex"><name>Asterisk-Named Zone Apexes</name>
        <t><xref target="RFC4592" section="4.1"/> permits a zone apex whose leftmost label is an asterisk. For example, the zone *.example. can contain an RRset at its apex. Its RRSIG can have S = *.example. and L = 1. With O = *.example., reconstruction yields R = O = S. This exact-name case satisfies the containment requirement. Although L is less than N, R equals O; the label-count inequality alone does not distinguish this exact-name case from expansion. This example addresses the added containment check, rather than constituting a complete validation procedure.</t>
        <t>That apex is not a wildcard source for synthesis. A received owner x.*.example. with the same S and L would reconstruct the same R but would have R different from O; it therefore fails the strict-subdomain requirement. By contrast, a wildcard source at *.*.example. lies strictly below the apex *.example. and can satisfy the new checks.</t>
        <t>Consequently, an unconditional comparison requiring L to be at least the number of all non-root labels in S is not equivalent to the requirements in this document. Such a comparison would reject the valid exact-apex example. <xref target="count-check"/> gives a conditional count-based formulation.</t>
      </section>
      <section anchor="other-cases"><name>Other Validation and Response Processing</name>
        <t>The update does not change handling of the AD or CD bits, DNSSEC validation-failure responses, or retry behavior. It does not change whether a particular wildcard applies to a query name. Authenticated closest-encloser and next-closer evidence, NSEC3 Opt-Out constraints where applicable, and delegation boundaries remain governed by the existing specifications.</t>
        <t>The containment test does not replace the special authority rules for DS RRsets. For example, a DS RRset at child.example. signed by example. can satisfy the new check with R = O = child.example.; it is then evaluated using the existing parent-side DS rules.</t>
      </section>
    </section>
    <section anchor="security"><name>Security Considerations</name>
      <t>The purpose of these requirements is to prevent a key authenticated for one zone from being treated as authenticating wildcard-source data outside that zone. Cryptographic possession of a valid child-zone key does not authorize the holder to supply wildcard data in its parent zone. A separate authentic denial proof cannot supply the missing authentication of that source.</t>
      <t>The per-signature checks and cache association requirements prevent two related failures: accepting an out-of-zone reconstructed owner directly, and assigning trusted status to unvalidated wildcard metadata after another signature has authenticated the RRset. Implementations need to apply the same association rules when inserting, merging, replacing, or recovering cached source data.</t>
      <t>These checks do not protect against malicious data signed by a key that is legitimately authoritative for the source, compromised trust anchors, or errors in other validation procedures. They do not expand the scope of wildcard synthesis or the lifetime of cached data.</t>
    </section>
    <section anchor="iana"><name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references><name>Normative References</name><reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference><reference anchor="RFC4034" target="https://www.rfc-editor.org/info/rfc4034">
  <front>
    <title>Resource Records for the DNS Security Extensions</title>
    <author fullname="R. Arends" initials="R." surname="Arends"/>
    <author fullname="R. Austein" initials="R." surname="Austein"/>
    <author fullname="M. Larson" initials="M." surname="Larson"/>
    <author fullname="D. Massey" initials="D." surname="Massey"/>
    <author fullname="S. Rose" initials="S." surname="Rose"/>
    <date month="March" year="2005"/>
    </front>
  <seriesInfo name="RFC" value="4034"/>
  <seriesInfo name="DOI" value="10.17487/RFC4034"/>
</reference><reference anchor="RFC4035" target="https://www.rfc-editor.org/info/rfc4035">
  <front>
    <title>Protocol Modifications for the DNS Security Extensions</title>
    <author fullname="R. Arends" initials="R." surname="Arends"/>
    <author fullname="R. Austein" initials="R." surname="Austein"/>
    <author fullname="M. Larson" initials="M." surname="Larson"/>
    <author fullname="D. Massey" initials="D." surname="Massey"/>
    <author fullname="S. Rose" initials="S." surname="Rose"/>
    <date month="March" year="2005"/>
    </front>
  <seriesInfo name="RFC" value="4035"/>
  <seriesInfo name="DOI" value="10.17487/RFC4035"/>
</reference><reference anchor="RFC4343" target="https://www.rfc-editor.org/info/rfc4343">
  <front>
    <title>Domain Name System (DNS) Case Insensitivity Clarification</title>
    <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
    <date month="January" year="2006"/>
    </front>
  <seriesInfo name="RFC" value="4343"/>
  <seriesInfo name="DOI" value="10.17487/RFC4343"/>
</reference><reference anchor="RFC4592" target="https://www.rfc-editor.org/info/rfc4592">
  <front>
    <title>The Role of Wildcards in the Domain Name System</title>
    <author fullname="E. Lewis" initials="E." surname="Lewis"/>
    <date month="July" year="2006"/>
    </front>
  <seriesInfo name="RFC" value="4592"/>
  <seriesInfo name="DOI" value="10.17487/RFC4592"/>
</reference><reference anchor="RFC5155" target="https://www.rfc-editor.org/info/rfc5155">
  <front>
    <title>DNS Security (DNSSEC) Hashed Authenticated Denial of Existence</title>
    <author fullname="B. Laurie" initials="B." surname="Laurie"/>
    <author fullname="G. Sisson" initials="G." surname="Sisson"/>
    <author fullname="R. Arends" initials="R." surname="Arends"/>
    <author fullname="D. Blacka" initials="D." surname="Blacka"/>
    <date month="March" year="2008"/>
    </front>
  <seriesInfo name="RFC" value="5155"/>
  <seriesInfo name="DOI" value="10.17487/RFC5155"/>
</reference><reference anchor="RFC6840" target="https://www.rfc-editor.org/info/rfc6840">
  <front>
    <title>Clarifications and Implementation Notes for DNS Security (DNSSEC)</title>
    <author fullname="S. Weiler" initials="S." role="editor" surname="Weiler"/>
    <author fullname="D. Blacka" initials="D." role="editor" surname="Blacka"/>
    <date month="February" year="2013"/>
    </front>
  <seriesInfo name="RFC" value="6840"/>
  <seriesInfo name="DOI" value="10.17487/RFC6840"/>
</reference><reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference><reference anchor="RFC8198" target="https://www.rfc-editor.org/info/rfc8198">
  <front>
    <title>Aggressive Use of DNSSEC-Validated Cache</title>
    <author fullname="K. Fujiwara" initials="K." surname="Fujiwara"/>
    <author fullname="A. Kato" initials="A." surname="Kato"/>
    <author fullname="W. Kumari" initials="W." surname="Kumari"/>
    <date month="July" year="2017"/>
    </front>
  <seriesInfo name="RFC" value="8198"/>
  <seriesInfo name="DOI" value="10.17487/RFC8198"/>
</reference><reference anchor="RFC9077" target="https://www.rfc-editor.org/info/rfc9077">
  <front>
    <title>NSEC and NSEC3: TTLs and Aggressive Use</title>
    <author fullname="P. van Dijk" initials="P." surname="van Dijk"/>
    <date month="July" year="2021"/>
    </front>
  <seriesInfo name="RFC" value="9077"/>
  <seriesInfo name="DOI" value="10.17487/RFC9077"/>
</reference></references>
    <references><name>Informative References</name><reference anchor="BIND-11721" target="https://kb.isc.org/docs/cve-2026-11721"><front><title>CVE-2026-11721: Cache poisoning possible with label count discrepancy, RRSIG, and wildcards</title><author><organization>Internet Systems Consortium</organization></author><date year="2026" month="July" day="22"/></front></reference>
<reference anchor="UNBOUND-44690" target="https://nlnetlabs.nl/downloads/unbound/CVE-2026-44690.txt"><front><title>Unbound security advisory: CVE-2026-44690</title><author><organization>NLnet Labs</organization></author><date year="2026"/></front></reference>
<reference anchor="PDNS-2026-10" target="https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2026-10.html#cve-2026-52688-rrsigs-with-too-few-labels-can-lead-to-bypass-of-dnssec-wildcard-validation"><front><title>PowerDNS Recursor: CVE-2026-52688</title><author><organization>PowerDNS</organization></author><date year="2026" month="July" day="22"/></front></reference>
<reference anchor="KNOT-6.4.1" target="https://www.knot-resolver.cz/documentation/latest/NEWS.html#knot-resolver-6-4-1-2026-07-22"><front><title>Knot Resolver 6.4.1 Release Notes</title><author><organization>CZ.NIC</organization></author><date year="2026" month="July" day="22"/></front></reference>
<reference anchor="RFC9499" target="https://www.rfc-editor.org/info/rfc9499">
  <front>
    <title>DNS Terminology</title>
    <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
    <author fullname="K. Fujiwara" initials="K." surname="Fujiwara"/>
    <date month="March" year="2024"/>
    </front>
  <seriesInfo name="BCP" value="219"/>
  <seriesInfo name="RFC" value="9499"/>
  <seriesInfo name="DOI" value="10.17487/RFC9499"/>
</reference><reference anchor="DNSSECVerif"><front><title>Mind the Gap: Cross-RFC Formal Analysis Exposes DNSSEC's Hidden Vulnerabilities</title><author fullname="Qifan Zhang" initials="Q." surname="Zhang"/><author fullname="Zilin Shen" initials="Z." surname="Shen"/><author fullname="Imtiaz Karim" initials="I." surname="Karim"/><author fullname="Elisa Bertino" initials="E." surname="Bertino"/><author fullname="Daiping Liu" initials="D." surname="Liu"/><author fullname="Zhou Li" initials="Z." surname="Li"/><date year="2026"/></front><refcontent>Accepted manuscript, ACM CCS 2026</refcontent><seriesInfo name="DOI" value="10.1145/3830454.3846592"/></reference></references>
    <section anchor="examples"><name>Validation Examples</name>
      <t>These examples test only the reconstructed-owner requirements. "Pass" does not mean that the RRset or a synthesized response is Secure: key authentication, authority, signature verification, time limits, and any necessary denial proofs must also succeed. All names are absolute.</t>
      <table anchor="case-table"><name>Owner reconstruction and containment</name>
        <thead><tr><th>O</th><th>S</th><th>L</th><th>R</th><th>Result</th></tr></thead>
        <tbody>
          <tr><td>a.c.example.</td><td>c.example.</td><td>3</td><td>a.c.example.</td><td>Pass</td></tr>
          <tr><td>a.c.example.</td><td>c.example.</td><td>2</td><td>*.c.example.</td><td>Pass</td></tr>
          <tr><td>a.b.c.example.</td><td>c.example.</td><td>2</td><td>*.c.example.</td><td>Pass</td></tr>
          <tr><td>a.c.example.</td><td>example.</td><td>1</td><td>*.example.</td><td>Pass</td></tr>
          <tr><td>a.c.example.</td><td>c.example.</td><td>1</td><td>*.example.</td><td>Fail</td></tr>
          <tr><td>a.c.example.</td><td>c.example.</td><td>0</td><td>*.</td><td>Fail</td></tr>
          <tr><td>a.c.example.</td><td>c.example.</td><td>4</td><td>--</td><td>Fail (existing)</td></tr>
          <tr><td>*.c.example.</td><td>c.example.</td><td>2</td><td>*.c.example.</td><td>Pass</td></tr>
          <tr><td>*.example.</td><td>*.example.</td><td>1</td><td>*.example.</td><td>Pass (exact)</td></tr>
          <tr><td>x.*.example.</td><td>*.example.</td><td>1</td><td>*.example.</td><td>Fail</td></tr>
          <tr><td>x.*.example.</td><td>*.example.</td><td>2</td><td>*.*.example.</td><td>Pass</td></tr>
          <tr><td>.</td><td>.</td><td>0</td><td>.</td><td>Pass</td></tr>
          <tr><td>host.</td><td>.</td><td>0</td><td>*.</td><td>Pass</td></tr>
          <tr><td>child.example.</td><td>example.</td><td>2</td><td>child.example.</td><td>Pass (DS)</td></tr>
        </tbody>
      </table>
      <t>The root-wildcard example illustrates the name relationship only and asserts no current root-zone contents or operational policy. The exact asterisk-apex example cannot supply a source of synthesis.</t>
      <t>Additional regression cases should cover DNS case-insensitive equality, label-boundary comparisons, an out-of-zone received owner rejected by existing authority checks, and the following cache and signature interactions:</t>
      <ul>
        <li>A valid ordinary signature plus an invalid wildcard-reconstruction signature: the ordinary RRset can validate, but the second signature does not create a trusted wildcard source.</li>
        <li>A valid wildcard signature plus an invalid alternative signature: the invalid alternative alone does not prevent use of the independently validated source.</li>
        <li>An independently authenticated source received with an expanded answer that lacks the required applicability proof: the source can be retained, but that answer cannot become Secure on that basis.</li>
        <li>A cached source without the required authenticated association: it cannot be used for synthesis until the association is established.</li>
        <li>A valid source with an expired signature, expired cache lifetime, incompatible denial proof, or proof crossing a delegation: the new containment check does not make synthesis permissible.</li>
      </ul>
    </section>
    <section anchor="count-check"><name>Conditional Label-Count Formulation</name>
      <t>This appendix is informative. M counts all non-root labels in S, including a leading wildcard label. Assume existing checks establish that O is within the authoritative signing zone S and that L is no greater than N. Then the requirements in <xref target="update-4035"/> are equivalent to this test:</t>
      <sourcecode type="pseudocode">
if L &gt;= M:
    pass this containment test
else if O == S and S has a leftmost wildcard label and L == M - 1:
    pass this containment test (exact apex only)
else:
    fail this containment test
</sourcecode>
      <t>Compare O and S using DNS case-insensitive equality. The exception requires exact owner/signer equality, not just an asterisk label. This test does not replace authority or signature-validation checks.</t>
    </section>
    <section anchor="acknowledgements"><name>Acknowledgements</name>
      <t>The DNSSECVerif research was conducted by Qifan Zhang, Zilin Shen, Imtiaz Karim, Elisa Bertino, Daiping Liu, and Zhou Li. This document builds on that work and on the DNSSEC specifications cited above.</t>
    </section>
  </back>
</rfc>
