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

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

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

    我有一个动态链接库调用 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()调用的情况下,存在一个安全漏洞。