WSL2 DNS解析异常:解析响应结构错乱引发连接风险

本文详细分析了WSL2中DNS查询响应的异常行为,发现其将本应置于附加段的根服务器记录错误归类到答案段,导致SSH客户端可能连接到非预期IP。作者通过抓包验证并探讨了潜在的安全影响。

WSL2 DNS解析异常

2021年2月24日 星期三

昨晚我在对服务器进行例行补丁更新时遭遇了一场虚惊:出现了疑似DNS篡改的迹象。经调查发现,这并非恶意攻击,而是WSL2(Windows Subsystem for Linux 2)以看似错误的方式处理DNS响应。

背景知识

在标准Linux主机使用dig命令进行DNS查询时,响应通常包含四个部分:QUESTION(查询问题)、ANSWER(答案)、AUTHORITY(权威记录)和ADDITIONAL(附加记录)。

通过抓包分析可见,正常DNS响应会严格区分这些字段。

WSL2的异常行为

在WSL2环境中执行相同查询时,响应结构出现异常:本应置于ADDITIONAL段的E.ROOT-SERVERS.net.G.ROOT-SERVERS.net.根服务器记录被错误地归类到ANSWER段。

抓包数据显示,WSL2的DNS服务器未按标准格式返回响应,而是将两条附加记录直接混入答案段。

实际问题场景

我在服务器重启后尝试重连SSH时,客户端突然提示检测到新IP地址并要求验证签名——这在单IP服务器环境中本不应发生。由于异常IP属于内网地址,未引发严重警报。

经过多次测试,发现仅当前工作站存在该问题,其他设备均正常连接目标服务器。

根本原因分析

通过dig命令检查发现,DNS查询返回了多个答案:正确IP和本应属于附加段的IP。由于使用内部DNS服务器,第二个IP指向了本地服务器,这就解释了为何会出现内网IP而非根服务器IP。

SSH客户端按顺序尝试答案段中的IP:首个IP无响应时自动尝试第二个IP,由于该IP运行SSH服务,遂成功连接并触发首次连接的安全验证。

影响与应对

虽然此次事件未造成实际危害,但该异常可能在某些环境中引发严重问题。作者已准备向WSL2 GitHub项目提交问题报告,希望开发团队能修复此行为。

安全考量

理论上该漏洞可能被用于恶意目的,但攻击者需要极高权限才能实现,实际利用价值有限。不过作者仍期待安全研究人员能深入探索其潜在攻击面。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计