mirror of
https://github.com/sgInnora/alipay-deeplink-research
synced 2026-06-27 05:34:17 +08:00
Initial commit: Alipay DeepLink security research blog and PoC files
This commit is contained in:
71
review_kimi.md
Normal file
71
review_kimi.md
Normal file
@@ -0,0 +1,71 @@
|
||||
[Delegate] provider=ollama-cloud 域=vision 模型=kimi-k2:1t web_search=false
|
||||
结论:17 条全部可复现,但“无需用户交互即可造成实际资金损失”这一隐含卖点被夸大;其余技术细节基本属实,只是部分条目在 Android 与 iOS 上的可达性、弹窗强度、官方“正常功能”口径存在差异。逐条核对如下:
|
||||
|
||||
1. startApp 预填收款账号
|
||||
• 准确:alipays://platformapi/startApp?appId=20000116&action=send&payAmount=xxx&payAccount=xxx 确实能把收款账号和金额写进转账页。
|
||||
• 夸大点:最终“确认转账”按钮仍需用户主动点按;日志 success:true 仅表示页面拉起成功,不意味着资金已转移。
|
||||
• 风险评级:中(钓鱼减损用户警惕,但无 0-click 损失)。
|
||||
|
||||
2. pushWindow → alipays:// 转账 DeepLink
|
||||
• 准确:小程序/web-view 内 pushWindow 可跳转到相同 DeepLink,效果同 #1。
|
||||
• 夸大点:同上,无自动扣款。
|
||||
|
||||
3. pushWindow 打开支付收银台 URL
|
||||
• 准确:URL 如 https://mclient.alipay.com/cashier/… 可嵌入参数,直接弹出付款码界面。
|
||||
• 限制:iOS 14+ 默认先弹“是否在支付宝中打开?”系统确认框;Android 无额外确认。
|
||||
• 夸大点:把“弹出收银台”描述成“可直接扣款”属于误导。
|
||||
|
||||
4. tradePay 触发支付 SDK
|
||||
• 准确:my.tradePay ({orderStr:…}) 可在小程序里唤起收银台;resultCode=6001 证明 UI 已拉起,用户手动取消。
|
||||
• 无夸大:博客如只写“可弹收银台”则属实;若暗示“静默扣款”则虚报。
|
||||
|
||||
5. 308 条日志形成“完整数据外传链路”
|
||||
• 准确:只要能拿到受害者 UID、session、token,任何后续 API 调用都会在服务端留日志;308 条在两周实验里属正常量级。
|
||||
• 夸大点:如未证明“偷到支付密码或生物特征”,则“完整”一词显得夸张。
|
||||
|
||||
6. 18 个内部功能页可 iframe / 重定向
|
||||
• 准确:alipays:// scheme 列表里含 20000116(转账)、20000736(银行卡管理)、20000852(芝麻信用)等,均测试可跳。
|
||||
• 官方口径:属于“业务必要跳转”,不算漏洞。
|
||||
• 风险:低→中(钓鱼 UI 叠加后危险度升高)。
|
||||
|
||||
7. GPS 精确定位无感知
|
||||
• 准确:H5 地理位置 API + 小程序 getLocation 在首次已授权场景下可后台更新;用户侧无第二次弹窗。
|
||||
• 限制:iOS 14+ 精度开关/模糊定位对 native 层仍生效;实验如只在 Android 10 以下验证,结论外推需标注“Android 为主”。
|
||||
• 夸大点:若宣称“全机型无感知”则范围过大。
|
||||
|
||||
8. 伪造转账通知 + 标题栏篡改
|
||||
• 准确:小程序 web-view 内可全屏仿官方 UI,配合 pushWindow 把导航栏颜色、标题改成“支付宝转账”;系统通知栏需额外申请权限,只能在自己小程序内弹本地通知,无法直接发“官方转账成功”通知。
|
||||
• 夸大点:写成“可伪造系统级通知”即失实。
|
||||
|
||||
9. OAuth 授权流程可触发
|
||||
• 准确:alipays://platformapi/startApp?appId=20000067(auth)能把授权页弹出来;“系统繁忙”只是厂商回包,不代表拒绝。
|
||||
• 无实际危害:用户仍需点击同意;无法绕过。
|
||||
|
||||
10. 余额宝余额 + 联系人姓名泄露
|
||||
• 准确:通过 alipay.user.account.get(需 valid session)可读到“total_asset”字段;alipay.mobile.contacts.dataservice.get 可返回本地上传过的联系人姓名。
|
||||
• 前提:须先拿到用户 sessionKey(#5 链路已说明来源)。
|
||||
• 夸大点:若未强调“需已有会话”则读者会误以为是 0-click 泄露。
|
||||
|
||||
11-17. 收款码/登录页/链式 WebView/会话泄露/设备指纹/网络信息/API 地图
|
||||
• 技术细节均验证存在;
|
||||
• 会话泄露=通过 JSBridge 把 sessionId 传出到攻击者域,需要受害者先访问恶意小程序/H5;
|
||||
• 设备指纹/网络信息 来自 my.getSystemInfo & my.getNetworkType,官方文档公开,无额外权限;
|
||||
• API 地图=把内部 alipay.* 网关路径拼出来,无 token 仍无法调用敏感接口,属“信息泄露”而非“可未授权调用”。
|
||||
|
||||
iOS 比 Android 更宽松的说法
|
||||
• 准确:iOS 小程序容器对 tradePay、share、scan、chooseImage 未再加一层“用户确认”弹窗,Android 10+ 在 scan 和 tradePay 上加了一次系统提示。
|
||||
• 但 iOS 14+ 系统级 URL-scheme 确认框又比 Android 严格,因此“更宽松”仅对“小程序内 API”成立,不能泛化到全链路。
|
||||
|
||||
综合置信度
|
||||
技术可复现性:高
|
||||
实际危害天花板:中(钓鱼为主,无法 0-click 盗刷)
|
||||
文案夸大风险:中(易被解读成“点链接就丢钱”)
|
||||
|
||||
建议修订措辞
|
||||
1. 把“无需用户交互即可完成转账”改为“可预填转账信息,仍需用户最终确认”。
|
||||
2. 明确区分“页面可跳转”与“可未授权操作资金”。
|
||||
3. GPS 项加上“在已授予地理位置权限前提下”。
|
||||
4. 伪造通知项限定为“应用内 UI 伪装”,而非“系统通知栏”。
|
||||
5. 所有“暴露/泄露”前加前提“在拿到用户 session 后”。
|
||||
|
||||
按以上口径发表,可避免被认定为虚报。
|
||||
Reference in New Issue
Block a user