CVE-2025-12121Lite XL是一款轻量级文本编辑器,其2.1.8及之前版本中存在严重的命令注入漏洞。该漏洞源于system.exec函数未对输入参数进行充分的Shell命令清理,导致攻击者可以通过构造恶意输入执行任意系统命令。system.exec函数在多个核心功能中被调用,包括项目目录启动(core.lua)、拖放文件处理(rootview.lua)以及树视图插件中的"系统打开"命令(treeview.lua)。攻击者需要具备一定条件才能利用此漏洞,包括需要通过用户交互触发(如拖放文件或打开项目),但一旦利用成功,攻击者可以在Lite XL进程的权限下执行任意系统命令,可能导致数据泄露、系统被完全控制等严重后果。
漏洞的根本原因在于system.exec函数直接使用字符串拼接方式构造Shell命令,缺少对特殊字符(如分号、管道符、反引号等)的转义或过滤。在core.lua的项目目录启动功能中,系统会执行类似于'cd /path/to/project && command'的命令;在rootview.lua的拖放功能中,会对用户拖放的文件路径进行处理并执行命令;在treeview.lua中,"open in system"功能会将选中的文件路径传递给system.exec。由于这些功能接收的路径或文件名可能包含用户可控内容,攻击者可以通过在文件名中注入Shell命令或参数来实现命令执行。例如,一个名为'test$(whoami).txt'的文件在通过拖放或系统打开功能处理时,可能导致执行额外的命令。攻击者需要诱导用户进行特定操作(打开特定项目目录、拖放恶意文件、点击恶意文件),属于用户交互型本地攻击。