本文综合来源于电脑报2010年第36期的《“末日漏洞”笼罩4亿网民——DLL劫持漏洞分析》和微软官网的《提供了一个新的 CWDIllegalInDllSearch 注册表项来控制 DLL 搜索路径算法》。
DLL劫持漏洞就是以上所称的“末日漏洞”,导致此漏洞的原因就是软件编程不规范,部分程序在加载一些DLL文件时,只给出了文件名,而没有给出完整路径,系统不得不按照默认搜索顺序(即应用程序启动的目录→32位与16位系统目录→Windows目录→当前目录→PATH环境变量列举的目录)找出DLL文件,如果制造一个同名的DLL文件,采取技术手段确保它先于正常DLL文件被加载,就可以激活病毒。
以这个原理进行破坏的例子早就出现过(“应用程序正常初始化失败一例”),但此前该漏洞的利用只能在本地,所以要触发漏洞,得先搞一个DLL文件到电脑里去,容易引起杀毒软件的警觉,导致病毒激活的成功率不高,而现在发现了远程利用该漏洞的方法,不用想办法把DLL文件塞进用户的电脑,只要诱使用户访问特定的东东,就可以激活漏洞,这样一来该漏洞具备了大规模传播病毒的能力。
在等待各软件厂商堵住自己软件中因不规范编程带来的漏洞前,我们可以安装微软紧急推出的安全补丁:http://support.microsoft.com/kb/2264107,在该网页的中间,可以看到提供补丁下载的链接,根据自己Windows系统版本下载相应的补丁并安装,如
Windows XP 更新:立即下载该程序包
Windows 7 更新:立即下载该程序包
其它的操作系统版本可到该网页下载。接着,登录http://go.microsoft.com/?linkid=9742148,下载第二个补丁,安装后,远程利用DLL漏洞的途径就被掐断了。但漏洞还可以在本地被利用,防范的方法是修改注册表。打开注册表编辑器(开始-运行-regedit,定位到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\,右侧有一个名为CWDIllegalInDllSearch的子键,双击该子键,修改它的值,选择“十六进制”,填入ffffffff,点击“确定”即可,最后重启电脑就彻底堵上该漏洞。
关于CWDIllegalInDllSearch的解释可具体参考《提供了一个新的 CWDIllegalInDllSearch 注册表项来控制 DLL 搜索路径算法》,简单的说就是CWDIllegalInDllSearch控制 DLL 搜索路径算法,可以在以下路径中添加 CWDIllegalInDllSearch 注册表项:
将此注册表项用于计算机上的所有应用程序:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
将此注册表项用于计算机上的特定应用程序:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\<application binary name>
CWDIllegalInDllSearch 注册表项的值按如下方式控制加载DLL文件的搜索路径:
情形 1:应用程序从本地文件夹启动,如 C:\Program Files
0xFFFFFFFF--按默认 DLL 搜索顺序删除当前工作目录
0--使用前面提到的默认 DLL 搜索路径
1--如果当前工作目录设置为 WebDAV 文件夹,则阻止从当前工作目录加载 DLL
2--如果当前工作目录设置为远程文件夹(如,WebDAV 或 UNC 位置),则阻止从当前工作目录加载 DLL
无注册表项或其他值--使用前面提到的默认 DLL 搜索路径
情形 2:应用程序从远程文件夹启动,如 \\remote\shareremote\share
0xFFFFFFFF--按默认 DLL 搜索顺序删除当前工作目录
0--使用前面提到的默认 DLL 搜索路径
1--如果当前工作目录设置为 WebDAV 文件夹,则阻止从当前工作目录加载 DLL
2--如果当前工作目录设置为远程文件夹(如,WebDAV 或 UNC 位置),则允许从当前工作目录加载 DLL。
无注册表项或其他值--使用前面提到的默认 DLL 搜索路径
情形 3:应用程序从 WebDav 文件夹启动,如 http://remote/share
0xFFFFFFFF--按默认 DLL 搜索顺序删除当前工作目录
无注册表项或其他值--使用前面提到的默认 DLL 搜索路径
>> 除非说明均为原创,如转载请注明来源于http://www.stormcn.cn/post/812.html