CVE-2026-42214Notepad Next是一款跨平台的Notepad++重新实现版本。在0.14版本之前,该软件存在严重的安全漏洞。当用户打开特制的文件时,由于`detectLanguageFromExtension()`函数在处理文件扩展名时缺乏必要的清理和消毒,直接将扩展名拼接到Lua脚本中执行。攻击者可利用此特性在文件扩展名中植入恶意Lua代码。一旦受害者使用Notepad Next打开该文件,恶意代码将自动运行。由于程序无条件调用了`luaL_openlibs()`,攻击者可以利用完整的os、io和package库执行任意系统命令,导致系统完全被控制。
该漏洞的根源在于Notepad Next的`detectLanguageFromExtension()`函数中存在Lua代码注入漏洞。在版本0.14之前,该函数负责根据文件扩展名检测语言,但在实现过程中,它直接对文件扩展名进行了字符串插值操作,将其拼接到Lua脚本字符串中,且未对输入进行任何过滤或转义。
攻击者可以通过构造一个特殊的文件名,将其扩展名部分替换为恶意的Lua代码片段。当受害者使用Notepad Next打开此文件时,应用会自动触发语言检测逻辑,导致嵌入在扩展名中的恶意Lua代码被解释器执行。
更为严重的是,Notepad Next在初始化Lua环境时无条件调用了`luaL_openlibs()`,这意味着注入的代码拥有对标准库的完全访问权限,包括`os`(操作系统)、`io`(输入输出)和`package`(包管理)库。攻击者利用这些库可以调用系统命令、读写本地文件甚至下载并执行额外的恶意载荷,从而实现本地权限下的任意代码执行。