微软已知的DLL

问题描述 投票:0回答:4

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

KnownDLL 的用途是什么?(为了更快地加载某些 Dll?)

如果我有管理员令牌,我可以控制注册表值。
难道没有安全漏洞吗?

微软为何支持该功能?

windows dll
4个回答
7
投票

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

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

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

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


4
投票

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

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

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


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

这是 Raymond Chen 所说的

位于这个密闭舱口的另一边的一个例子。


3
投票
微软添加该功能是为了

阻止安全漏洞。

通过将

win32k.sys

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

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

© www.soinside.com 2019 - 2024. All rights reserved.