写点什么

2000 年模糊测试技术在 Windows 系统中的重现与安全影响

作者:qife122
  • 2025-08-31
    福建
  • 本文字数:1381 字

    阅读完需:约 5 分钟

2000 年模糊测试技术在现代系统中的重现

研究背景

这是我们第二次尝试在现代系统上重现原始模糊测试研究。本次实验专注于 Windows 平台,通过复现 Justin E. Forrester 和 Barton P. Miller 于 2000 年发表的《使用随机测试对 Windows NT 应用程序鲁棒性的实证研究》(简称 NT 模糊测试报告)的结果。

窗口消息基础

显示 GUI 的 Windows 应用程序采用事件驱动架构:鼠标移动、按钮点击、按键按压等。窗口消息是 Windows 中的事件通知机制,每个消息包含数字代码和参数(lParam 和 wParam),用于指定事件详情。这些消息可由程序自身、操作系统或其他程序发送,必须由接收应用程序处理。

安全影响

在 Windows Vista 之前,低权限进程可向高权限进程发送消息,通过特定消息组合实现在高权限进程中执行代码的“粉碎攻击”。现代 Windows 系统通过 UIPI 和系统服务隔离已基本缓解此问题。窗口消息处理不当在现代系统中通常不会造成安全影响,因为:1)消息无法通过网络发送;2)在同一权限级别获得代码执行无实际意义。

测试方法

使用原始 NT 模糊测试报告中描述的相同核心模糊测试代码和方法。在 SendMessage 和 PostMessage 模式下,模糊测试器使用种子值 42 和 1337 各进行三次 50 万条消息的迭代测试。由于时间限制,未测试随机鼠标和键盘输入方法。

测试调整

为在 Windows 10 上运行模糊测试器进行了两处修改:1)适配 64 位 Windows 的编译调整;2)增加通过命令行参数指定目标窗口句柄的功能,以支持通用 Windows 平台(UWP)应用程序测试。

发现缺陷

在修改过程中发现原始模糊测试器的严重缺陷:lParam 和 wParam 参数的随机值范围被限制在 16 位整数(通过 rand()函数生成),而实际参数在 32 位系统中为 32 位,64 位系统中为 64 位。为保持结果可比性,在评估过程中故意保留此缺陷。

测试应用变化

原始报告测试 33 个程序,本次重现测试 28 个。部分软件替代情况:


  • CD Player → Windows Media Player

  • Eudora → Windows Mail

  • Command AntiVirus → Avast Free Edition

  • GSView → Photos

  • JavaWorkshop → NetBeans IDE

  • Secure CRT → BitVise SSH

  • Telnet → Putty

  • Freecell & Solitaire 通过 Microsoft Solitaire Collection 运行

测试结果

与原始报告结果高度一致:19 年前 100%的测试应用在畸形窗口消息测试中崩溃或冻结,如今仍有 93%的应用出现相同问题。仅计算器和 Avast 防病毒软件未受影响。具体结果见表 1。


表 1:Windows 10 上重现 NT 模糊测试报告的结果


Windows 系统 bug

发现一个影响多个无关应用的共同问题:当模糊测试器发送 WM_DEVICECHANGE 消息时,甚至会导致最简单的官方 Windows API HelloWorld 示例程序崩溃(图 3)。进一步分析表明该问题仅影响 32 位应用程序,问题根源在于 wow64win.dll(32 到 64 位兼容层)中的 whcbfnINDEVICECHANGE 函数将 wParam 作为指向 DEV_BROADCAST_HANDLE64 结构的指针处理,在转换到 32 位结构时因指向无效内存而崩溃。已向 MSRC 报告此问题,确认为非安全问题。

结论

窗口消息是 Windows 程序中未被充分重视的非可信输入源。即使距首个开源窗口消息模糊测试器部署已 19 年,93%的测试应用在面对相同测试器时仍会冻结或崩溃。某些应用能优雅处理这些畸形输入的事实令人鼓舞,表明某些组织已建立避免这些错误的框架和制度知识。


窗口消息模糊测试仍有很大改进空间——最简单的测试方法就能使 93%的应用崩溃。可能存在窗口消息跨越真实安全边界的实例,鼓励进一步探索此领域。更多精彩内容 请关注我的个人公众号 公众号(办公 AI 智能小助手)公众号二维码


办公AI智能小助手


用户头像

qife122

关注

还未添加个人签名 2021-05-19 加入

还未添加个人简介

评论

发布
暂无评论
2000年模糊测试技术在Windows系统中的重现与安全影响_漏洞挖掘_qife122_InfoQ写作社区