前几天在技术社区看到有安全研究员披露,微信 for Linux 版本在处理接收到的文件时存在一个安全隐患。经过初步验证,这确实是一个可以通过构造恶意文件名触发的命令注入漏洞。
漏洞原理简述
简单来说,是程序在处理用户接收到的文件时,没有对文件名中可能包含的特殊字符(例如反引号 `)进行充分的安全校验或转义。攻击者可以构造一个文件名中嵌入了系统命令的文件,并将其发送给目标用户。当受害者在微信中点击此文件尝试打开时,嵌入的命令便会在其系统中被执行。
用更通俗的话解释就是:微信 Linux 版存在一个“一键RCE”漏洞,只需将系统命令用反引号包裹并放入文件名中,目标用户点击该文件,命令就会被执行。 这无疑是一个需要引起重视的安全漏洞。
漏洞复现过程
为了验证这个漏洞,我们可以进行一个简单的本地复现。这里以弹出一个计算器程序(kcalc)为例,因为它能直观地证明命令被执行了。
关键步骤:
- 在 Linux 系统(例如 Kylin、Ubuntu 等)上,安装并运行最新版的微信 for Linux(测试时版本为 v4.1)。
- 构造一个特殊的文件名。文件名可以弄得长一些、看起来正常一些,以增加迷惑性。例如:
中国工业软件行业发展研究报告:慢行业下需坚守长期主义之路-艾瑞咨询;`kcalc`.txt
注意,这里的关键是将要执行的命令 kcalc 用反引号括了起来。
- 将这个文件通过任何方式(例如从另一台设备发送)传送到复现环境中的微信上。
- 在微信中接收到该文件后,点击它。
复现结果:
如果漏洞存在,系统会立即弹出计算器窗口。这清楚地证明了,文件名中的 kcalc 命令被成功执行。

有研究者使用了 strace 工具跟踪微信进程的系统调用,在日志中清晰地看到了 id、lscpu 等命令被调用的记录,进一步证实了漏洞的利用链。通过系统调用分析,可以更深入地理解其触发原理。
临时缓解与修复建议
在官方发布修复版本之前,用户可以采取以下措施进行防护:
- 提高警惕:尽量避免点击或打开文件名中包含反引号
`、分号 ;、管道符 | 等异常特殊字符的可疑文件。
- 切换使用渠道:临时改用微信网页版 (
https://web.wechat.com/)。
- 暂停使用:在关键业务环境中,考虑暂时停止使用微信 Linux 客户端,直到官方确认漏洞已被修复。
技术社区是安全信息共享和解决方案探讨的重要平台。如果您对漏洞原理、防御技术或二进制分析有更多兴趣,欢迎在云栈社区的相关板块与我们交流。
|