【问题标题】:How to protect against DLL Hijacking?如何防止 DLL 劫持?
【发布时间】:2016-02-09 10:25:02
【问题描述】:

不时发布安全公告,警告 DLL 注入的风险。

是否有防止 DLL 劫持的通用方法?我不熟悉该主题,但请求绝对文件名而不是相对文件名应该足以防止工作目录中的恶意 DLL,不是吗?

如果可以覆盖我安装目录中的 DLL,也可以覆盖我的可执行文件,因此签名检查毫无用处。

【问题讨论】:

标签: dll loadlibrary dlopen dll-injection


【解决方案1】:

对于不使用绝对路径请求 DLL 的应用程序,可以实现 DLL 劫持。这会触发搜索过程,并且通过将受感染的 DLL 放置在搜索补丁中高于真实版本的位置,就有可能执行恶意代码。但是,您的安装目录应该位于搜索路径的第一位,因此它似乎不适用于您的情况。不过,在将敏感数据传递给 DLL 时应该小心,例如密码和用户名。

【讨论】:

    【解决方案2】:

    在 DLL 劫持中,如果程序员开始使用绝对路径而不是相对路径,那么漏洞将会减少。读取绝对路径,Windows 或任何其他操作系统将不依赖于路径的系统变量,而是直接使用预期的 DLL,从而消除了在更高优先级路径中加载同名 DLL 的机会。这种方法也不是万无一失的,因为如果系统受到破坏,并且网络犯罪分子知道 DLL 的确切路径,他们会将原始 DLL 替换为假 DLL。这将覆盖文件,以便将原始 DLL 更改为恶意代码。但同样,网络犯罪分子需要知道调用 DLL 的应用程序中提到的确切绝对路径。这个过程对于网络犯罪分子来说是艰难的,因此值得信赖。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-22
      • 2010-11-28
      • 1970-01-01
      • 2019-05-08
      • 2012-08-27
      • 2012-05-19
      • 1970-01-01
      相关资源
      最近更新 更多