打开网易新闻 查看精彩图片

一个AI助手,用几句提示词,就把两款服役40年的文本编辑器扒了个底朝天。Vim和GNU Emacs的远程代码执行漏洞,触发条件简单到离谱:打开文件。

这事是网络安全公司Calif的研究员Hung Nguyen干的。他专门做AI红队测试,这次让Claude分析Vim源码,找"打开文件就能触发的RCE零日漏洞"。结果AI真找到了——藏在modeline处理逻辑里的沙箱逃逸。

Modeline是Vim文件开头的一段配置文本,告诉编辑器怎么渲染这个文件。本来设计得很贴心,比如指定缩进宽度、语法高亮。但Claude发现,这里的安全检查有漏洞,嵌在文件里的代码能突破沙箱,以当前用户权限执行任意命令。

影响范围:Vim 9.2.0271及之前所有版本。没有CVE编号,因为补丁已经发了——Vim团队收到报告后,在9.2.0272版本里修掉了。

官方公告写得直白:"攻击者只要能让人打开一个特制文件,就能拿到运行Vim的用户权限。"

GNU Emacs那边更麻烦。Claude同样找到了RCE路径,但到现在还没修。Emacs维护者的态度是:这锅Git背。

Emacs的"甩锅"逻辑,用户买单

Emacs的"甩锅"逻辑,用户买单

漏洞出在Emacs的版本控制集成(vc-git)。打开文件时,vc-refresh-state函数会触发Git操作,Git去读.git/config,config里可以定义core.fsmonitor程序——攻击者塞进去的恶意脚本就这么跑起来了。

打开网易新闻 查看精彩图片

Nguyen设计的攻击场景很日常:一个压缩包,里面藏着.git/目录和改过配置的config文件。用户解压、用Emacs打开里面的文本文件,payload静默执行,界面上看不出任何异常。

Emacs维护者的技术辩解成立吗?确实,直接执行命令的是Git,不是Emacs本身。但用户感知不到这层区分,他们只知道"打开文件电脑就中招了"。

这种责任切割在开源社区很常见。2014年Shellshock漏洞爆发时,Bash和系统发行商之间也有过类似扯皮。最后往往是用户承担后果,因为攻击者不care你的架构图。

AI找漏洞,正在改写安全行业的成本公式

AI找漏洞,正在改写安全行业的成本公式

这次事件最刺眼的地方在于效率。传统漏洞挖掘需要研究者熟读数十万行C代码,理解内存管理、字符串处理的每个边角。Claude几分钟内完成了源码分析和漏洞定位,还顺手生成了多个PoC利用版本,并给出修复建议。

Calif公司的业务方向很说明问题:AI红队测试、安全工程。他们把大模型当成放大器,让单个研究员的覆盖面和深度都提升一个数量级。

但别急着喊"AI要取代安全研究员"。Claude能找到漏洞,是因为Nguyen的提示词足够精准——"RCE零日""打开文件触发"。这相当于给AI划了搜索范围。没有领域知识的人,连该问什么都不知道。

更现实的图景是分层:AI负责地毯式扫描和初筛,人类研究员做验证、构造利用链、评估实际影响。Vim的补丁从报告到发布速度很快,说明维护者拿到AI输出后,人工复核和修复的效率才是关键瓶颈。

打开网易新闻 查看精彩图片

老工具的债,谁来还

老工具的债,谁来还

Vim和Emacs的设计年代,"打开本地文件"被视为安全边界内的操作。Modeline、vc-git这些功能都是为了让开发者工作流更顺滑,没人预料到供应链攻击会进化到这种粒度。

现在的攻击面完全不同。npm包、Docker镜像、邮件附件、共享文档——任何文件都可能来自不可信源头。编辑器作为开发者每天接触的第一道关卡,成了理想的跳板。

Vim选择了修复,Emacs选择了推诿。两种态度背后是不同的维护压力:Vim的代码库相对集中,Bram Moolenaar去世后的新维护团队需要证明治理能力的连续性;GNU Emacs作为FSF旗舰项目,决策流程更官僚,对"非自身bug"的认定也更固执。

用户能做什么?升级Vim到9.2.0272以上版本。Emacs用户暂时无解,只能避免打开来源不明的文件,或者在配置里禁用vc-git集成——但这会牺牲版本控制便利。

一个讽刺的细节:这两款编辑器都标榜"可编程""高度定制",这种灵活性恰恰成了攻击载体。Modeline和vc-git本质上都是"打开文件就执行代码"的设计,区别只在于执行环境有没有被正确隔离。

Claude找到这两个漏洞,某种程度上是AI在帮人类审计技术债。Vim和Emacs的代码里还有多少类似的设计假设,已经跟不上2024年的威胁模型?

没人知道答案。但攻击者已经在用同样的AI工具扫描了。