微软已知的DLL

时间:2010-08-24 11:05:36

标签: windows dll

  

HKML \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ KnownDLLs

KnownDLL的目的是什么?(更快地加载一些Dlls?)

如果我有管理员令牌,我可以控制注册表值 是不是有任何安全漏洞?

为什么Microsoft支持该功能?

4 个答案:

答案 0 :(得分:3)

KnownDLLs唯一能做的就是阻止从应用程序文件夹加载隐式加载的DLL。

出于安全原因,“KnownDll”有效的唯一文件夹是c:\ Windows \ System32(或您的本地化等效文件) - 此文件夹在进程文件夹之后的搜索列表中排在第2位。

从本质上讲,它可以防止从应用程序文件夹加载系统dll的恶意副本 - 例如kernel32.dll。

它不会停止使用完全限定路径加载dll的应用程序。它不会停止对路径的冗长搜索或路径中系统dll的发现 - 无论如何总是在这些位置之前搜索system32。

答案 1 :(得分:2)

这允许忽略普通的DLL搜索路径,并加载指定的版本。

虽然不是安全漏洞本身(因为您已经需要具有更改值的管理员权限),但是可以通过恶意DLL重定向调用。

这是为了提高性能而添加的功能,因为无需扫描多个可能较大的目录来查找DLL。

答案 2 :(得分:1)

如果依赖于你是管理员,这不是一个安全漏洞。如果您已经是管理员,则有更简单的方法将恶意DLL引入系统(例如,将它们复制到操作系统的顶部)。

这是雷蒙德·陈所称的being on the other side of this airtight hatchway的一个例子。

答案 3 :(得分:1)

Microsoft将此功能添加到停止安全漏洞。

通过将win32k.sys声明为已知dll ,一段流氓恶意软件无法将其自己的win32k.sys丢弃到您的应用程序文件夹中,并诱骗您运行攻击者的代码。

所有已知的dll只会从正确的受保护位置加载。