摘要

  • 在严格的 DNS 表示法中,完全限定域名以代表根标签的点结尾;日常显示通常省略它。DNS 层面的等价,并不会自动约束应用层的每一套策略。
  • 正处于 DNSOP 工作组最后征求意见阶段的草案要求应用以无末尾点形式存储和显示完整域名,并警告不能使用通用字符串操作。审阅意见进一步要求说明两种形式应该如何比较。
  • CVE-2026-8924 提供了边界清楚的运行代码证据:curl 对末尾点处理不一致,导致 Public Suffix List 检查未能限制 cookie 域。问题不在标点拥有权力,而在规范化发生得太晚。

域名最后那个点,代表的是长度为零的根标签。RFC 9499 把带点写法称为严格表示格式,同时说明通用显示格式可以省略根标签及其分隔点。换句话说,两串看似不同的文本可以指向同一个 DNS 名称。但解析器确认“同一个节点”,不等于 cookie 仓库、证书验证器、缓存或账户系统也会生成同一条策略记录。

这条缝隙已经进入正在进行的标准讨论。8 月 24 日,IETF DNSOP 工作组把 draft-ietf-dnsop-integration-04 置于工作组最后征求意见状态,截止日为 9 月 7 日。该文件拟作为信息性文档发布;它目前既不是 RFC,也不代表工作组已达成共识。它讨论的是应用如何把全球 DNS 中的域名用作标识符,同时减少名称冲突以及对 DNS 安全、稳定与韧性的影响。

草案列出了域名生命周期、域名控制验证、完整覆盖、同步机制、协议演进、管理界面差异和记录类型支持。第 3.3 节还给出了两项直接相连的要求:除非必须使用本地搜索域,应用应以不带最后一个点的形式保存和展示完全限定域名;名称的显示、规范化、比较、编码与解码都需要专门处理,不能交给普通字符串函数。

这些话指出了危险所在,却没有为每一个下游控制写出可执行的顺序。Paul Wouters 在最后征求意见中没有正式反对发布,但认为技术建议仍然不足。他列出的缺口包括:有点与无点形式的比较、DNS 大小写不敏感、A-label 与 U-label 的对应、缓存与负缓存、悬空别名,以及 CNAME/DNAME 处理后保留原始查询名。Wes Hardaker 支持发布,同时判断这份文件更像为未来提供背景,而不是立即可用的操作说明。Tim Wicinski 也支持继续推进,并认为第 3 节后半已经接近运维问题。这些邮件只证明各自发表了意见,不能当作工作组表决结果。

curl 的 2026 年记录解释了为什么顺序不能留白。官方在 6 月 24 日发布 CVE-2026-8924,评级为低危,影响 7.46.0 至 8.20.0,8.21.0 修复。当 curl 处理带末尾点的 URL 主机名,例如 example.co.uk. 时,恶意服务器可以设置 co.uk. 这样的 cookie Domain。Public Suffix List 检查没有正确挡住过宽的域,cookie 因而可能在之后发送给无关域名。

这里不需要 DNS 返回两个不同地址。边界移动,是因为应用策略在一种文本表示上做了决定,而其依据的后缀规则预期的是另一种表示。curl 的通告还指出,TLS SNI 不能携带末尾点。同一个输入经过 DNS、cookie 与 TLS 时,可能在三个组件里拥有三种文本生命。更早的 CVE-2022-30115 曾记录末尾点导致 HSTS 状态不一致;这不能推导所有实现都有问题,却证明同一接缝会在独立状态机中反复出现。

大小写和国际化域名让合同更加具体。RFC 4343 要求普通 DNS ASCII 标签按大小写不敏感方式比较,同时提醒:域名离开 DNS 后,可能变成大小写敏感的数据库索引、文件名,甚至完整性或认证输入。RFC 5890 区分 Unicode 的 U-label 与 ASCII 兼容的 A-label,并明确不处理末尾点惯例。因此,“统一转小写并去掉最后一个字符”不是普遍适用的身份规则,尤其不能在策略已经作出判断之后补做。

可审计的集成至少需要保存五类凭据。第一类是原始输入,包括根标签是否显式、本地搜索扩展是否允许。第二类是实际解析出的标签序列和绝对/相对状态。第三类是针对某个具体判断生成的规范形式。第四类是当时使用的策略环境,例如 Public Suffix List 版本、IDNA 配置、证书或 cookie 规则。第五类是判断与可观察结果:允许的范围、写入的键、发送的凭据或拒绝的请求。

这套分层也限制了结论。DNS 名称等价不证明注册人控制;域名控制验证不为所有服务提供证书;证书不授权每一项应用动作;cookie 通过域匹配,也不证明预期主体最终接收或使用了它。

所以,本轮最后征求意见留下的关键问题并不是“最后那个点该不该存在”。真正的问题是:谁有权定义规范形式、哪个控制消费它、转换发生在判断前还是判断后。如果系统先依据原始文本放行 cookie、来源或权限,随后才统一日志,信任边界早已改变。被规范化的只是记录,不是决定。

来源