不请自来的中间人可能篡改消息。
大多数人的DNS查询在互联网上流经时仍然未受到保护(相当于裸跑),浏览器及其他软件通过DNS查询将域名解析成IP地址。
可能让人大跌眼镜的是,这是由于用来保护DNS流量的提议中的标准(比如DNSSEC和DNS-over-HTTPS)还没有完全成熟,还没有被广泛采用。
举例说,DNSSEC旨在通过对回复进行数字签名,使任何伪造活动都暴露在软件面前,从而防止不法分子篡改拦截的域名查询。DNS-over-TLS和DNS-over-HTTPS也旨在实现此目的,并且加密查询,那样网络上的窃听者就无法偷窥你在访问的网站。
如果这些保护措施没有得到广泛采用,DNS流量仍然是未经过加密、未经身份验证的,这意味着它们有可能被窥视和被篡改,将人们重定向到冒充是合法网站的恶意网站。
来自中美两国大学的研究人员最近决定核实这种情况是不是属实,结果发现:流量拦截对于取自全球样本的住宅和蜂窝IP地址上的一小部分但重要的DNS查询(通过TCP的DNS请求中的0.66%)来说是不争的事实。
这群研究人员包括:来自清华大学的刘宝军(音译,下同)、刘朝义、段海欣和刘颖,来自得克萨斯大学达拉斯分校的周莉和昊爽,以及来自复旦大学的杨敏,他们在本周于USENIX安全研讨会上发表的一篇论文(见文末)中描述了调查结果。
这篇论文题为《谁在回复我的查询:解读和叙述DNS解析路径的拦截》,描述了研究人员如何建立了一个系统,以测量全球148478个住宅和蜂窝IP地址上的DNS拦截情况。
互联网用户可以通过手动将其应用程序和操作系统指向谷歌公共DNS(8.8.8.8)或Cloudflare(1.1.1.1)等网络服务商来选择自己的DNS解析器。然而,人们通常接受该网络或其ISP自动提供的任何DNS解析器。
如果中间人拦截了DNS请求,这不一定是恶意的,但有可能导致不良后果。至少,它剥夺了那些互联网用户的选择和隐私。
研究人员寻找欺骗用户的指定DNS解析器的IP地址,从而偷偷拦截DNS流量的提供商。他们在研究时专注于已注册域名并忽视敏感关键词,以避免内容审查机制带来的影响。
他们在测试的3047个服务提供商AS集合中的259个中发现了DNS查询拦截,即占8.5%。(研究报告使用“ASes”,这个网络术语代表自治系统,用于分配给ISP及其他组织的IP地址块集合。)
报告声称,就发送到谷歌公共DNS的数据包而言,基于UDP的数据包中27.9%被拦截,相比之下,通过TCP发送的数据中约7.3%被拦截。(研究人员解释,大多数DNS请求都是通过UDP发送的,从技术角度来看拦截UDP流量来得更容易。)
对于服务提供商们来说,谷歌DNS似乎是特别具有吸引力的拦截对象。研究人员在论文中指出:“我们还发现82个AS拦截了发送到谷歌公共DNS的DNS流量中的90%以上。”
报告提到,美国的康卡斯特有线通信公司是AS7922的控制方;研究人员发现它拦截了谷歌公共DNS流量的一小部分。
论文声称:“在我们从这个AS发送到谷歌DNS的13466个DNS请求中,72个(0.53%)被重定向,谷歌之外的替代解析器实际上在联系我们的权威域名服务器。”
研究人员推测,处理拦截的路径上设备只部署在了针对该AS的数量有限的子网中,让康卡斯特客户而不是该公司本身得以部署这些设备。
报告提到,中国的提供商拦截了最多的流量。比如说,报告特意指出中国移动涉嫌参与DNS篡改以达到牟利的目的。
报告声称:“举例说,来自谷歌公共DNS的8个回复在AS9808(广东移动)中被篡改,指向一个推广中国移动APP的门户网站。”
Cloudflare的密码负责人尼克•沙利文(Nick Sullivan)在发给IT外媒The Register的电子邮件中表示,DNS缺乏加密和身份验证被广泛认为是互联网上最严重的未打补丁的漏洞之一。
他说:“由于种种原因,这个漏洞已知被众多网络所利用,但网络拦截DNS查询的程度并不广为人知。这篇论文之所以很重要,是由于它是针对DNS拦截在互联网上的普遍性这个话题开展的最广泛的测量研究之一。”
沙利文表示,在一些情况下,拦截率到底有多高着实令人惊讶。
他说:“研究人员发现,定向到流行的公共DNS解析器的DNS查询的拦截率总体上很高,在一些网络中拦截率更是高达100%。并非所有拦截的DNS查询都被篡改或被记录,但它们有这种可能,这给在线隐私和安全带来了巨大影响。这些发现结果表明需要更快地给这个漏洞打上补丁,为此DNS需要从一种未经加密的协议转变成一种受强加密和身份验证技术保护的协议。”
如果互联网用户有兴趣想看看自己的DNS解析器是否应指向正确的目的地,研究人员还开发了一个在线测试工具,放在whatismydnsresolver.com上。