代码之家  ›  专栏  ›  技术社区  ›  JesperE

使用SetDllDirectory可能存在安全漏洞?

  •  1
  • JesperE  · 技术社区  · 16 年前

    我有一个DLL,它可以调用 SetDllDirectory() 在其DllMain()函数中。SetDllDirectory()的参数是DLL所在的目录,由 GetModuleFileName() 功能。这样做的效果是,如果DLL被放置为 c:/foo/bar.dll ,然后加载 bar.dll 将添加 c:/foo 指向调用进程的DLL搜索路径。

    我的问题是:这会打开任何形式的安全漏洞吗?在加载库的进程必须显式调用的函数中执行SetDllDirectory()调用是否更安全?

    1 回复  |  直到 16 年前
        1
  •  1
  •   Eduard Wirch    16 年前

    事实并非如此。实际上,这并不是一个新的。由于应用程序路径是windows查找dll的第一个位置,因此有人可能会在此文件夹中放置恶意dll。因此,如果不调用SetDllDirectory(),就会出现安全漏洞。