DNS 响应答案的大小写是否可以与查询不同?

DNS 响应答案的大小写是否可以与查询不同?

预期 DNS 查找结果示例(1):

nslookup google.com
Server:  192.168.1.1
Address: 192.168.1.1#53

Non-authoritative answer:
Name: google.com
Address: 173.194.123.41
Name: google.com
Address: 173.194.123.33
...

我所问的问题的示例(2)是否有效:

nslookup google.com
Server:  192.168.1.1
Address: 192.168.1.1#53

Non-authoritative answer:
Name: google.coM
Address: 173.194.123.33
Name: google.coM
Address: 173.194.123.34
...

请注意第二个例子中的最后一个字母 M。最近在 Verizon Fios Quantum 网络上发现了这一点。

DNS 规范是否规定可以接受与请求不同的响应?我知道 DNS 不区分大小写,如果您输入 www.GooGLe.cOM,您将获得与 www.google.com 相同的 IP 地址,但我认为在这两种情况下,响应都应该/必须与查询完全匹配。

答案1

就你的情况而言,解析器可能会添加0x20 编码根据您的请求,并且此编码正在本地缓存并提供,这与常见做法相反:

###虽然 DNS 允许使用混合大小写,并且 IETF 草案也利用了这一点,使用 DNS 标签中的位 0x20 来改进交易身份作为 DNS 伪造/中毒缓解技术,它不受 DNS 规范强制执行 - 服务器不是有义务返回准确的字符编码,尽管很少见;这是草案中讨论的一个潜在问题。###

因为所有** DNS 实现都会复制请求确切地回应(在实践中),则返回大小写混合的域名请求。客户端可以随机化字符大小写,并比较服务器的响应,结果应该匹配:

第 2.2 节 例如,以下问题名称将被响应者视为相等,但可能被请求者视为不相等:

www.ietf.org
WwW.iEtF.oRg
wWw.IeTf.OrG
WWW.IETF.ORG

攻击者需要成功猜出随机编码,否则客户端将忽略它。由于编码的强度与域名的长度有关,因此域名越长,安全性越高 - 字符越多,熵越大。


对于未实现 0x20 的客户端(并且消除了中间人引入编码的可能性),可能会返回带有编码的响应不是在原始请求中 - 可能是投毒企图的结果。

相关内容