微软的远程桌面协议(RDP)是全球范围内广泛使用的远程连接工具,允许用户通过网络访问和控制另一台 Windows 设备。然而,最近独立研究人员重新发现了一个存在多年的安全缺陷:RDP 会继续接受曾经使用过、但已被撤销或泄露的密码进行登录。

这一问题最早可追溯到 1998 年发布的 Windows NT 4.0,自那时起,几乎所有的 Windows 版本都受到此行为的影响。尽管该问题在今年再次被提出,微软却明确表示不会修复,并称这是“设计功能”,而非漏洞。
核心问题:旧密码为何依然有效?
根据研究人员的分析,RDP 的工作机制中包含一个潜在的安全隐患:
- 缓存的密码验证机制
Windows 会在本地磁盘上加密存储已验证过的密码。即使管理员更改了密码,或者密码因安全事件被撤销,这些旧密码仍然可以用于远程登录。这种行为违反了普遍认可的安全实践——更改密码应立即切断未经授权的访问。 - 缺乏透明性与警告
微软的在线管理和安全平台(如 Entra ID、Azure 和 Defender)并未对这种异常行为发出任何警告。这意味着用户可能完全不知道旧密码仍然有效,甚至新的密码可能会被忽略。 - 兼容性优先于安全性
微软解释称,这种行为是为了确保“至少有一个用户账户能够登录系统,无论设备离线多久”。换句话说,这是一种为了兼容性和可用性而做出的设计妥协。
研究者的观点:这是一次严重的安全隐患
独立研究员 Daniel Wade 在本月早些时候向微软报告了这一问题,并指出其严重性:
- 信任的破坏:用户通常认为更改密码可以切断未经授权的访问,但 RDP 的行为让这一假设失效。
- 广泛影响:无论是家庭用户、小型办公环境还是企业用户,所有依赖 RDP 的场景都可能面临风险。
- 隐蔽性强:由于微软未对此行为提供足够的信息,许多用户可能根本不知道自己处于危险之中。
此外,Wade 还提到,早在 2023 年 8 月,其他研究人员就曾向微软报告过类似问题,但由于“不符合漏洞奖励条件”,微软并未采取进一步行动。
微软的回应:这不是漏洞,而是设计功能
面对质疑,微软给出了明确的立场:这种行为是设计决定,而非漏洞。以下是微软的主要论点:
- 确保系统的可用性
微软表示,RDP 的这种机制旨在避免因密码更改或系统离线导致无法登录的情况。特别是在企业环境中,某些关键任务可能依赖于旧密码的持续有效性。 - 兼容性优先于安全改进
据报道,微软工程师曾尝试修改代码以消除这一行为,但最终放弃了努力。原因在于,许多应用程序和服务仍然依赖于这种机制。如果强行修复,可能导致广泛的兼容性问题。 - 历史遗留问题
RDP 技术的历史可以追溯到上世纪 90 年代,当时的安全标准和现代需求截然不同。微软似乎认为,彻底改变这一行为会带来不可预见的后果。
争议与风险:设计功能还是安全隐患?
尽管微软将这一行为归类为“设计功能”,但从安全角度来看,它显然存在重大隐患:
- 密码泄露后的持续威胁
如果攻击者获取了用户的旧密码,即使用户更改了密码,攻击者仍可能利用旧密码访问系统。这对企业和个人用户来说都是巨大的风险。 - 违背安全最佳实践
更改密码的核心目的是切断潜在的未经授权访问,而 RDP 的行为显然违背了这一原则。 - 缺乏透明性
用户并未被告知旧密码仍然有效,这可能导致误判和不必要的安全风险。
用户该如何应对?
面对这一问题,用户可以采取以下措施来降低风险:
- 限制 RDP 的使用场景
- 仅在必要时启用 RDP,并限制其访问权限。
- 使用防火墙规则,仅允许特定 IP 地址访问 RDP。
- 启用多因素认证(MFA)
- 为 RDP 添加额外的安全层,例如通过 Azure 或第三方工具启用 MFA。
- 即使旧密码被滥用,攻击者也需要额外的验证才能登录。
- 定期审计和监控
- 定期检查系统日志,查找异常登录行为。
- 使用安全工具(如 Microsoft Defender for Endpoint)监控潜在威胁。
- 考虑替代方案
- 如果安全性是首要考虑,可以探索其他远程访问工具,例如 SSH 或第三方解决方案。
评论