请解释一下Notepad++的DLL劫持是如何工作的。

3
Notepad++确认了这个DLL劫持漏洞:https://wikileaks.org/ciav7p1/cms/page_26968090.html。我不明白它是怎么工作的。作为Notepad ++用户,我很关心,作为开发者,我也很好奇。
这里有一个通用的DLL劫持解释-什么是dll劫持?。 有点太笼统了。
这是否意味着为了有效地利用此漏洞,攻击者必须首先控制我的PC,使用其他攻击向量将恶意版本放置在DLL搜索路径中的 SciLexer.dll(?)
如果攻击者已经拥有这样的权限来控制我的PC,为什么他还要费心去攻击Notepad++呢? 为什么不针对更核心的库或甚至系统库?
我也不明白WikiLeak文本中这个备注的含义:For the life of me, I couldn't get this function [Scintilla_DirectFunction(..)] to be called。 如果这是该DLL中唯一导出的函数,也是Notepad核心调用的唯一函数,那么为什么它没有被调用? 这也意味着恶意代码也不会被调用。
曾经有人发现过被黑客攻击的 SciLexer.dll吗?CIA还是其他人攻击了它,还是仅仅是发现了这个漏洞?
此外,Notepad++团队在最新版本7.3.3中,在发布说明中声称他们“修复了CIA黑客Notepad++问题”。 有什么想法他们如何做到的?

在我看来,你是正确的,能够劫持特定DLL的攻击者已经拥有了该机器。Notepad++的修复只是对公众关注的一种膝反应,实际上几乎没有任何安全改进。 - Gur
这是来自Notepad++的注释:https://notepad-plus-plus.org/news/notepad-7.3.3-fix-cia-hacking-issue.html - Paco Abato
1个回答

6
一个DLL劫持攻击很简单:考虑一下你的下载目录,里面有许多文件。如果有人设法让你下载被篡改的SciLexer.dll,它很可能会被下载到你的下载目录中。你下载完文件后不做任何操作,文件就会留在下载目录中。稍后你从网上下载了一个txt文件,这个文件也放在了下载目录中。如果你现在打开资源管理器并双击下载的txt文件,当前目录就是下载目录。易受DLL劫持漏洞影响的Notepad++版本将在当前目录(现在是下载目录)中搜索要加载的SciLexer.dll文件。因此,Notepad++将加载你之前下载的被篡改的SciLexer.dll文件。关于修复方法,你可以查看源代码更改以修复该漏洞。看起来Nodepad ++团队已经改变了加载该dll的方式,并额外添加了对SciLexer.dll的证书检查。

4
除了 SciLexer.dll 位于 Notepad++ 目录下,且是 LoadLibrary 的第一优先级,使得劫持它变得不那么容易之外,没有其他要点。 - Gur
谢谢。我有一点怀疑,当前目录(文档从中读取)是否曾经在库搜索路径中。那听起来像是错误。正如 Gur 指出的,安装目录是查找的首要位置,通常在非常 (?) 的安装后就会出现,这几乎不可能被利用。感觉这个“泄漏”有点小题大做。 - Espinosa
感谢提供源代码链接。目前看来唯一实施的更改是检查证书。 - Espinosa
1
如果我理解正确的话,这里的重点是欺骗我下载一个被感染的 DLL 文件要容易得多(无需安装,无需管理员权限,在文档目录中很容易被忽略),而不是一个被感染的完整 Notepad++(在安装软件时会更加警觉)。 - Espinosa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接