ZUS Coffee 安全测试报告
善意声明
作为一名怀着赤诚之心的安全研究员,我谨在此郑重声明:本次安全审计的唯一目的是帮助改进系统安全性,为保护用户数据安全尽一份力。报告中所有敏感信息均已进行脱敏处理,以防被不法分子利用。我始终秉持"善意披露、负责任报告"的原则,希望通过专业的漏洞发现和及时报告,协助开发团队尽快修复安全隐患。在此过程中,我严格遵守相关法律法规,绝无任何破坏或恶意利用的企图。
衷心期待通过白帽黑客与开发团队的良性互动,共同为企业的信息安全加固,为广大用户筑起更坚实的数据保护屏障。
严重性等级: CRITICAL (CVSS 8.9)
总体概述
Web应用安全性
经检测,ZUS Coffee Web部分整体防护措施较为完善,WAF、CloudFront、CORS配置及认证机制均运行正常,未发现明显漏洞,开发团队做得非常出色。
移动应用安全性
移动应用基于Flutter开发。通过APK反编译、提取libapp.so文件及字符串分析,我们发现了多个敏感API接口和硬编码敏感信息。这些信息一旦被滥用,可能导致API滥用、数据泄露、虚假推荐操控、会话劫持及推送通知滥用等风险。
漏洞影响链

Flutter应用源码分析
分析方法
使用自定义的Frida脚本(extract_functions_apk.js)对APK包中的libapp.so进行动态分析:
Java.perform(function() {
var libName = "libapp.so";
var lib = Module.findBaseAddress(libName);
if (lib) {
console.log("[+] Found " + libName + " at " + lib);
var exports = Module.enumerateExports(libName);
exports.forEach(function(exp) {
console.log(
"[EXPORT] " + exp.type + " " + exp.name + " at " + exp.address
);
});
var symbols = Module.enumerateSymbols(libName);
symbols.forEach(function(sym) {
console.log("[SYMBOL] " + sym.name + " at " + sym.address);
});
} else {
console.log("[-] Library not found");
}
});
});
安全隐患分析
测试方法与流程
移动应用测试方法
1. APK反编译与文件提取
- 将APK转换为ZIP文件并解压
- 提取libapp.so文件
2. 字符串提取与目录结构分析
strings libapp.so | grep -i dart && strings libapp.so | grep -i "package:love_coffee" > output/zus_filtered_strings.txt
3. 敏感API路径搜索
v1接口搜索:
strings source/libapp.so | grep "/api/v1/"
v3接口搜索:
strings source/libapp.so | grep "/api/v3/"
余额相关接口
- /api/v1/balance/history
- /api/v1/balance/reload
- /api/v1/balance/gift-card/update-gc
- /api/v1/balance/gift-card/view-redeemed
- /api/v1/balance/gift-card/view-sent
- /api/v1/balance/gift-card/continue-payment
购物车与结账接口
- /api/v1/cart/add
- /api/v1/cart/clear
- /api/v1/checkout
- /api/v1/checkout/pay
- /api/v1/checkout/update/payment_method
- /api/v1/orders/continue_payment
用户与反馈接口
- /api/v1/user/import-contact-v2
- /api/v1/feedback/order_product/store
认证与地区接口 (v3)
- /api/v3/auth/login
- /api/v3/auth/register
- /api/v3/auth/phone
- /api/v3/user/switch_country
- /api/v3/countries
4. 第三方服务与硬编码密钥提取
<meta-data android:name="io.branch.sdk.BranchKey"
android:value="key_live_xxxxxxxxxxxxxxxx"/>
敏感数据汇总
类别 | Key名称 | Key (截断显示) | 潜在风险 |
---|---|---|---|
Google API Keys | google_api_key | AIzaSy..... | API滥用、未经授权的数据访问、资源配额耗尽 |
Google App ID | google_app_id | 1:60847..... | 第三方应用可能利用该ID进行未经授权的调用 |
Crash Reporting | google_crash_reporting_api_key | AIzaSy..... | 可伪造崩溃报告,导致敏感数据泄露 |
Facebook App ID | facebook_app_id | 173173..... | 可能用于伪造登录、滥用Facebook API |
Facebook Client Token | facebook_client_token | c49338..... | 会话劫持、滥用API接口 |
Firebase Database | firebase_database_url | https:api.z..... | 若安全规则配置不当,可能导致数据未经授权的读取或写入 |
Google Storage | google_storage_bucket | zuscof..... | 配置错误时可能导致敏感文件的上传或下载 |
GCM Sender ID | gcm_defaultSenderId | 608474..... | 可能被用于未经授权地发送推送通知,导致骚扰或钓鱼攻击 |
Branch Key | io.branch.sdk.BranchKey | key_live_..... | 可被利用来操控归因、制造虚假推荐,进而获得不正当奖励或访问敏感深链数据 |
风险评估与潜在攻击场景
潜在攻击场景
- API滥用: 利用Google API Keys和Crash Reporting API Key发起大量未经授权的请求,耗尽服务配额或窃取敏感数据
- 未经授权的数据访问: 通过Firebase Database URL读取或篡改用户订单、个人信息等,甚至导致数据破坏
- 虚假推荐与归因操控: 利用Branch Key操控深链系统,制造虚假推荐,获得不正当奖励
- 会话劫持与登录伪造: 利用Facebook Client Token伪造登录请求或劫持用户会话
- 推送通知滥用: 利用GCM Sender ID发送未经授权的推送通知,诱导钓鱼攻击
涉及的敏感数据
- Google API Keys与Crash Reporting API Key
- Firebase Database URL
- Branch Key深链配置
- Facebook Client Token
- GCM Sender ID
建议措施
即时改进措施
- 移除客户端硬编码敏感数据
- 强化Firebase安全规则
- 定期更新与轮换密钥
长期安全策略
- 建立API监控与日志审计系统
- 加固深链安全机制
- 定期审查子域配置
联系方式
安全研究员信息
姓名: 钟智强
职位: 高级安全研究员 | 高级全栈开发工程师 | 计算机视觉专家
电子邮件: johnmelodymel@qq.com
微信: ctkqiang
响应时间承诺
- 紧急漏洞问题:24小时内响应
- 一般技术咨询:48小时内回复
首选沟通渠道
1. 电子邮件(安全加密通信)
2. 微信语音/视频会议