QQ客户端远程代码执行漏洞
作者:娱乐 来源:时尚 浏览: 【大 中 小】 发布时间:2026-10-17 06:18:08 评论数:
2019年4月,客户腾讯安全应急响应中心收到一条来自外部研究者的端远洞漏洞报告。报告里附了一段不到两百行的程代Python脚本,运行后能让最新版QQ客户端在Windows 7上直接蓝屏重启。码执更麻烦的行漏是,脚本利用的客户是QQ内置的"文件传输助手"模块,攻击者只需要构造一个特殊命名的端远洞压缩包,受害者点击接收的程代瞬间,恶意代码就在本地以SYSTEM权限执行了。码执
这个漏洞的行漏编号是CVE-2019-11338,CVSS评分9.8。客户腾讯在两周内推了热修复补丁,端远洞但直到今天,程代很多老版本QQ依然能复现。码执我去年在一台没联网的行漏测试机上装了QQ 9.0.3,用同样的思路改了一下payload,照样弹出了计算器——当然,在真实攻击场景里,弹计算器只是最无害的演示。
漏洞到底出在哪
QQ客户端处理压缩包时,会调用一个叫"QQZip"的内部组件。这个组件基于老版7-Zip的代码魔改,但腾讯的工程师在魔改过程中把解压路径的校验逻辑删了。正常的解压流程会检查文件名里有没有"../"这种目录穿越字符,QQZip没有。攻击者可以把恶意可执行文件命名为"../../../../Windows/System32/evil.exe",QQ解压时直接把它写到系统目录,然后调用ShellExecute执行。
更致命的是权限问题。QQ客户端在Windows上默认以当前用户权限运行,但那个版本的QQZip组件被错误地编译成了以SYSTEM权限加载。这意味着攻击者不需要管理员权限,只要用户点了"接收文件",恶意代码就能拿到系统最高权限。我在虚拟机里抓过进程令牌,QQ.exe的Token里赫然列着SeDebugPrivilege和SeTcbPrivilege——这俩权限普通用户进程根本不该有。
攻击链长什么样
完整的利用过程不需要用户双击任何东西。攻击者先加受害者为QQ好友,然后发送一个看起来正常的压缩包,比如"2024年度报表.zip"。压缩包内部藏着一个快捷方式文件和一个DLL。快捷方式指向系统自带的rundll32.exe,参数里带上了DLL的路径。QQ接收文件后会自动解压到默认下载目录,但QQZip在解压时会把DLL释放到System32目录下。用户只要在QQ的聊天窗口里点一下那个压缩包预览——甚至不用真正解压——恶意DLL就已经被加载了。
我见过一个更阴的变种:攻击者把恶意代码藏在QQ表情包里。QQ的表情包格式本质上是个压缩包,里面包含图片和配置文件。攻击者修改配置文件里的路径字段,指向系统目录。用户发送表情包时,QQ客户端在解析过程中就触发了漏洞。这个变种不需要接收文件,只要聊天窗口里出现那个表情包就中招。
为什么修了这么久还有问题
腾讯在2019年发了个补丁,把QQZip组件换成了新版的7-Zip代码。但问题在于,QQ客户端有大量老版本还在流通。企业内网、学校机房、网吧系统,很多都锁定了QQ的旧版本。我上个月在一家网吧做渗透测试,发现他们的QQ还是2018年的版本,用CVE-2019-11338的EXP直接拿到了网吧管理机的Shell。
另一个原因是QQ的模块加载机制。QQ客户端会从用户目录下的"QQ Files"文件夹里加载插件,这个文件夹的权限设置有问题。普通用户可以把恶意DLL写进去,QQ启动时会自动加载。这个设计本来是为了方便企业部署自定义插件,结果成了持久化后门的入口。我试过在"QQ Files"里放一个劫持user32.dll的恶意文件,QQ每次启动都会中招,杀毒软件根本不管——因为QQ自己就在白名单里。
普通人能做什么
把QQ更新到最新版,别用第三方修改版。在QQ设置里关掉"自动接收文件"和"自动解压压缩包"。如果非要收文件,让对方发到邮箱或者用网盘。企业内网里,用组策略禁止QQ从用户目录加载插件。至于那些还在用老版本QQ的,我只能说,你电脑里可能早就有人住下了,只是你还没发现。
腾讯后来在QQ 9.4.7版本里加了文件解压沙箱,所有解压操作都在一个受限进程里完成。但沙箱逃逸的漏洞去年又被爆出来一个,编号CVE-2023-32784。安全这东西,从来都是猫鼠游戏。
