首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >2000年模糊测试技术在Windows系统中的重现与安全影响

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

原创
作者头像
qife122
发布2025-08-31 08:24:53
发布2025-08-31 08:24:53
2020
举报

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模糊测试报告的结果

程序

版本

SendMessage

PostMessage

Microsoft Access

1901

crash

crash

Adobe Reader

DC2019.010.20098

crash

ok

Calculator

10.1812.10048.0

ok

ok

...(其余应用结果)

Windows系统bug

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

结论

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

窗口消息模糊测试仍有很大改进空间——最简单的测试方法就能使93%的应用崩溃。可能存在窗口消息跨越真实安全边界的实例,鼓励进一步探索此领域。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2000年模糊测试技术在现代系统中的重现
    • 研究背景
    • 窗口消息基础
    • 安全影响
    • 测试方法
    • 测试调整
    • 发现缺陷
    • 测试应用变化
    • 测试结果
    • Windows系统bug
    • 结论
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档