DARKNAVY将在本文中以微信为例,从URL解析、文件处理、网页访问等典型场景出发,系统梳理即时通讯客户端的关键攻击面,剖析攻防背后的博弈。
IM攻击面概览
从体系架构出发,即时通讯软件的攻击面可划分为三个主要维度,分别是客户端层面、通信协议层面以及云端服务层面。本文将重点分析客户端的攻击面,探讨其中可能导致远程代码执行或敏感信息泄露的安全问题。
1
URL链接
多数IM客户端支持自定义协议(如 weixin://
、tg://
)以实现应用内跳转,然而,攻击者可借助构造伪装为合法链接的恶意请求,利用客户端对URL校验不严的漏洞诱导用户访问钓鱼站点。更具隐蔽性的是对一些特殊功能URL的滥用。例如,slack://settings
可以实现更改设置的功能,攻击者通过构造特定参数的链接并诱导用户点击,可以实现数据窃取[2]。
2
文件解析
为提升用户体验,IM客户端通常集成自有文件解析逻辑以实现格式预览与内容提取。攻击者可通过构造特制的恶意文件,利用解析功能的漏洞实现远程代码执行。例如,CVE-2019-11932[3]和CVE-2025-30401[4]分别是WhatsApp Android客户端和Windows客户端中的严重漏洞,前者通过恶意GIF文件触发攻击,后者则通过伪装成图像的可执行文件诱导用户执行。
3
内置浏览器组件
多数IM客户端内置浏览器以支持网页访问,通常采用基于Chrome的自定义内核。其攻击面主要集中在两类技术路径上:
-
一是JSBridge,若客户端未对暴露给网页接口进行精细化权限控制,则可能被恶意网页调用实现权限滥用;
-
二是浏览器内核漏洞,例如,DARKNAVY团队于2023年发布的预警[5]中指出,源于Chromium内核中libwebp组件的漏洞CVE-2023-41064 & 4863,影响包括微信、钉钉、QQ在内的多个主流IM软件。
4
小程序生态
为拓展服务边界,微信、钉钉等IM客户端纷纷开放小程序平台,赋予第三方开发者丰富的系统权限,如文件系统访问、传感器调用、API接口使用等。然而,若客户端在权限管理或功能实现上存在疏漏,攻击者可借助恶意小程序实施攻击。
微信攻击面分析
DARKNAVY团队对微信客户端的攻击面进行了初步调研,下面将从多个维度介绍微信客户端面临的主要安全风险及其应对机制。
1
微信URL链接
微信客户端内置了调试链接机制,当用户访问的URL中包含 debugxweb.qq.com
时,会根据URL中的参数触发不同调试行为。例如,传入参数 show_webview_version
可在页面上展示当前WebView内核的版本信息及相关配置。
show_webview_version展示的版本信息
尽管该机制为调试带来便利,但若攻击者构造恶意URL并诱导用户访问,可能在无用户感知的情况下触发高风险操作,如版本回退或配置变更。为降低风险,微信客户端限制了 install_embed_plugin
等敏感操作仅可在开启 bEnableLocalDebug
选项后执行。同时,对于如 set_config_url
等可修改获取配置URL的功能,微信也加入了严格的域名与协议校验,仅允许使用 HTTPS 且域名限定为 dldir1.qq.com
或 dldir1v6.qq.com
,有效规避了配置被篡改的风险。
此外,微信支持 weixin://
协议实现内部跳转,例如 weixin://dl/
用于页面导航。对于带 ticket
参数的链接,微信客户端会通过 /cgi-bin/mmbiz-bin/translatelink
接口向云端请求真实跳转地址,从而避免攻击者伪造链接诱导用户访问任意页面,有效增强了链接跳转的安全性。
2
微信内置浏览器组件(XWEB)
安卓微信使用自研的 XWEB 内核,基于 Chromium 开发。截止本文编辑时,内核开发版的Chromium版本是134.0.6998.136,而现网版本是130.0.6723.103,而Chrome官方浏览器的版本是136.0.7103.93。XWEB保持了相对领先的内核版本,不过仍存在一定的滞后性,有可能受未修复的公开漏洞影响。
为提升浏览器安全性,微信默认启用了多进程沙箱机制。主进程运行在 xweb_privileged_process_0
,而渲染进程则隔离于 xweb_sandboxed_process_0
,有效缓解了对渲染进程漏洞的攻击利用。
微信还提供了丰富的 JSBridge 接口供网页调用原生功能,例如 sendEmail
可唤起客户端发邮件、scanQRCode
可调用摄像头扫描二维码。
为防止滥用,微信客户端在加载网页时会根据URL向云端请求权限列表,以精细化控制每个JSBridge接口是否可用。在某些特定官方测试页面上,大多数接口默认开放,而在其他页面中,仅开放少数接口。此种基于页面来源的权限划分策略,有效限制了潜在恶意网页的破坏能力。
3
微信小程序安全机制
微信小程序采用JavaScript开发,架构上分为渲染层与逻辑层,分别在独立线程中运行,相互隔离。其中渲染层负责界面展示,而逻辑层处理业务逻辑。开发者编写的逻辑层的JavaScript脚本不能使用浏览器暴露出来的 DOM API,而渲染层的JavaScript脚本也无法使用开发者的高权限功能。微信客户端给渲染层和逻辑层暴露的JSAPI功能也有所不同,例如渲染层可以调用insertVideoPlayer
、insertTextArea
等功能,而逻辑层可以调用saveFile
、addDownloadTask
等功能。这样的隔离防止了攻击者通过小程序的XSS等漏洞在渲染层执行高权限操作。
结语
微信作为国内最具代表性的IM软件,在安全机制上体现出多层防护与权限细化管理的设计思路,如JSBridge精细授权、浏览器沙箱隔离、小程序双线程架构等,体现出其对安全风险的高度重视。
作为长期关注即时通讯软件安全的研究团队,DARKNAVY始希望通过持续的漏洞研究、攻防分析与技术分享,推动IM生态在保障用户体验的同时,更加稳健、安全、可信地向前发展。
预告
原文始发于微信公众号(DARKNAVY):攻防速写|一条微信消息,实现客户端持久化攻击
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论