BIND 9.16.17 中的一个错误导致 W 字符在 DNS 查询中被错误处理

已发布稳定 BIND 9.16.18 分支和正在开发的实验性 9.17.15 分支的修正更新,修复了上周(次日)发布的 BIND 9.16.17 和 9.17.14 版本中出现的严重错误。版本中,开发人员警告了该问题并建议不要安装版本 9.16.17 和 9.17.14)。

在9.16.17和9.17.14版本中,小写和大写字符映射表(maptoupper和maptolower)中省略了“w”字符,这导致域名中的“W”和“w”字符被替换为序列“\000”“并在使用掩码处理请求时返回错误结果。 例如,如果 DNS 区域包含记录“*.sub.test.local”。 1 127.0.0.1“对名称 UVW.sub.test.local”的请求产生的响应返回名称“uv/000.sub.test.local”而不是“uvw.sub.test.local”。

此外,如果请求中“w”字符的大小写与 DNS 区域中的大小写不同,则在动态区域更新期间将“w”字符替换为“\000”时会出现问题。 例如,如果发送了“foo.ww.example.”的更新,而区域中存在记录“WW.example.”,则会将其处理为“foo.\000\000.example.”。 当执行从主 DNS 服务器到辅助 DNS 服务器的区域传输时,也可能会出现字符替换问题。

由于发现版本 9.16.18 和 9.16.18 中还有两个尚未解决的错误,更新 9.17.15 的发布被推迟。 错误会导致初始化期间出现死锁,并且会在 dnssec-policy 使用不同视图中存在的相同区域的配置中发生。 建议具有此类设置的用户降级到 BIND 版本 9.16.16。

来源: opennet.ru

添加评论