drwtsn32.exe故障转储文件默认权限设置不当

/ns/ld/win/data/20011117232407.htm

涉及程序:
当前所有Windows版本

描述:
drwtsn32.exe可能导致敏感信息泄漏

详细:
发现者:tombkeeper@126.com
发现时间:2001.10.30

drwtsn32.exe(Dr. Watson)是一个Windows系统内置的程序错误调试器。默认
状态下,出现程序错误时,Dr. Watson 将自动启动,除非系统上安装了VC等其他具有
调试功能的软件更改了默认值。注册表项:
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AeDebug]
下的Debugger 项的值指定了调试器及使用的命令;Auto 项决定是否自动诊断错误,
并记录相应的诊断信息。
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AeDebug]

在Windows 2000中drwtsn32.exe默认会将故障转储文件user.dmp存放在目录
“\Documents and Settings\All Users\Documents\DrWatson”下。权限为Everyone
完全控制。在Windows NT中被存储在“\WINNT\”中,everyone组至少有读取权限。

由于user.dmp中存储的内容是当前用户的部分内存镜像,所以可能导致各种敏感信息
泄漏,例如帐号、口令、邮件、浏览过的网页、正在编辑的文件等等,具体取决于崩溃的
应用程序和在此之前用户进行了那些操作。

因为Windows程序是如此易于崩溃,所以不能排除恶意用户利用此弱点获取非授权信息
的可能。例如:利用IE5.0以上的畸形注释漏洞就可以使浏览包含恶意代码的iexplore.exe
和查看包含恶意代码的邮件程序崩溃。(关于IE的畸形注释漏洞请参见拙作《包含畸形注释
的HTML文件可使IE 5.0以上版本崩溃》)

测试:
--->在administrator帐号下操作:
如果目前的默认调试器不是 Dr. Watson,请在命令提示符后键入命令:drwtsn32 -i
将 Dr. Watson 设为默认调试器。
先启动一个需要使用密码的程序,这里我们选择Foxmail。
用任务管理器察看Foxmail的PID,假设是“886”。在命令提示符后键入命令:
drwtsn32 -p 886
--->在guest帐号下操作:
在\Documents and Settings\All Users\Documents\DrWatson\目录下键入命令:
type user.dmp|find "youEmailPasswd"
就会发现你的邮件密码在user.dmp中,而且完全可以被guest用户读取。


解决方案:
微软尚未对此做出反应。
在可用的补丁出来之前,采取以下任一措施皆可解决此问题,
1、键入不带参数的drwtsn32,更改故障转储文件到一个特权路径,如:
\Documents and Settings\Administrator\DrWatson\
或取消“建立故障转储文件”选项。
2、删除注册表项
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AeDebug]
下的相关键值。
3、使用其它调试工具。并在注册表中正确设置。


附加信息:
发现者:tombkeeper@126.com

drwtsn32 参数

drwtsn32 [-i] [-g] [-p pid] [-e event] [-?]

-i 将 DrWtsn32 当作默认应用程序错误调试程序
-g 被忽略,但作为 WINDBG 和 NTSD 的兼容而被提供
-p pid 要调试的进程 id
-e event 表示进程附加完成的事件
-? 这个屏幕