dll劫持漏洞

热点 2026-10-17 05:28:09 7763

2017年,持漏腾讯安全团队截获了一个针对《绝地求生》玩家的持漏恶意样本。攻击者把伪造的持漏dxgi.dll丢进游戏目录,玩家启动游戏时,持漏系统会优先加载这个冒牌货,持漏而不是持漏系统目录里的正版文件。一瞬间,持漏玩家的持漏账号密码就被传到了黑客服务器上。这场攻击前后持续了三个月,持漏中招的持漏玩家数以万计。

这就是持漏dll劫持——一个存在了二十年,至今仍活跃在攻击一线的持漏老牌漏洞。它的持漏原理并不复杂。Windows系统在加载dll文件时,持漏有一套固定的持漏搜索顺序:应用程序所在目录、系统目录、环境变量目录。如果程序没有明确指定dll的完整路径,系统就会按这个顺序逐个查找。攻击者只需要把恶意dll放到应用程序目录下,就能让程序在加载时“误入歧途”。

最讽刺的是,很多dll劫持漏洞其实是开发者自己“造”出来的。不少程序员为了省事,在代码里直接写“LoadLibrary("helper.dll")”,而不写绝对路径。更常见的情况是,程序用相对路径加载dll,或者系统目录里的dll缺失时,程序会退而求其次去当前目录找。这些看似无害的编程习惯,恰恰给攻击者留下了可乘之机。

我见过一个真实的案例。某知名视频剪辑软件,安装时会往系统目录里塞一个特定版本的ffmpeg.dll。可这个dll版本太老,存在已知漏洞。攻击者就在软件目录下放了一个恶意ffmpeg.dll,软件启动时优先加载了这个假文件,结果整个电脑都被控制了。软件厂商后来不得不发紧急补丁,把所有加载dll的代码都改成了绝对路径。

修复dll劫持漏洞说难也难,说简单也简单。最直接的方法就是加载dll时用完整路径,别让系统去猜。其次是启用SafeDllSearchMode,这个注册表项能强制系统优先搜索系统目录,但副作用是可能影响一些老软件的正常运行。还有个偏门的办法——在程序启动时主动检查dll的签名,但这会增加启动时间,很多用户接受不了。

说实话,这个漏洞之所以能活到今天,很大程度上是因为Windows的兼容性包袱太重。微软不敢轻易改动dll的加载机制,怕把整个生态搞崩。于是,这个二十年前的“老毛病”,到现在依然是攻击者的心头好。据我观察,2023年针对主流办公软件和聊天工具的dll劫持攻击,比前两年还多了近三成。攻击者越来越精明,他们知道很多企业用户不敢随意升级软件,就专挑这些“僵户软件”下手。

对普通用户来说,最有效的防御手段反而很简单:尽量从官方渠道下载软件,别用那些来路不明的绿色版、破解版。因为很多破解版本身就被植入了恶意dll,等你运行的时候,系统已经帮你把“劫持”执行完了。

本文地址:http://www.79wt.cn/news/315a9099594.html
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

友情链接