HKML \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ KnownDLLs
KnownDLL的目的是什么?(更快地加载一些Dlls?)
如果我有管理员令牌,我可以控制注册表值 是不是有任何安全漏洞?
为什么Microsoft支持该功能?
答案 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只会从正确的受保护位置加载。