原文标题:The Skeleton Keys: A Large Scale Analysis of Credential Leakage in Mini-apps原文作者:Yizhe Shi,Zhemin Yang,Kangwei Zhong,Guangliang Yang,Yifan Yang,Xiaohan Zhang,Min Yang原文链接:https://www.ndss-symposium.org/wp-content/uploads/2025-273-paper.pdf发表会议:NDSS笔记作者:王彦@安全学术圈主编:黄诚@安全学术圈编辑:张贝宁@安全学术圈
1 研究背景与动机
近年来,“应用内应用”(如微信小程序、抖音小程序)在移动生态中迅速普及。超级应用(Super-app)通过提供支付处理、数据分析等敏感服务赋能小程序开发者,但这一生态的安全性尚未得到充分研究。尽管超级应用平台采用凭证认证机制保护服务访问,但凭证的设计与工作流程仍不透明。作者指出,目前存在凭证泄露风险,攻击者可借此绕过认证,危害用户和服务安全,如figure 1所示。现有研究多聚焦于客户端硬编码凭证的泄漏,而动态生成、非结构化凭证的安全风险尚未被系统性探索。本研究旨在填补这一空白,揭示凭证泄漏的普遍性及其对超级应用平台、小程序服务器和用户的潜在威胁。
2 核心贡献
-
本研究首次系统性分析了“应用内应用”生态中的凭证机制,揭示其安全风险。通过手动分析21个主流超级应用平台(如微信、支付宝、TikTok)的开发文档与示例代码,总结出7类凭证(如访问凭证、加密凭证、根凭证)及其功能,并构建威胁模型。 -
为检测动态凭证泄漏,团队开发了自动化工具KeyMagnet,通过语义分析比对服务器端(CSG)与客户端(CBG)的凭证使用模式,精度达95.04%,召回率85.56%。 -
在大规模评估中,KeyMagnet检测到54,728个小程序存在84,491次凭证泄漏,涵盖教育、政务等高敏感领域,并发现跨平台泄漏(如百度小程序泄露微信凭证)与模板传播漏洞。研究团队通过负责任披露推动修复,提交的89个漏洞中38个被标记为高危,实际验证了账户劫持、支付欺诈等攻击可行性。
3 研究方法与技术
研究首先定义了“凭证”的类别与形式,发现多数凭证为非结构化且动态生成,难以用传统特征识别。通过分析21个流行的超级应用平台及其开发文档,研究识别出七种凭证,并根据功能划分为三类:
-
访问凭证:核心功能是验证请求者是否有权限访问超级应用平台提供的资源与服务(例如电商服务、欺诈检测服务)。其安全机制通常基于令牌实现,然而,若恶意用户窃取此类凭证,便可绕过权限验证机制,直接访问本应受限的服务。 -
加密凭证:用于保障通信安全,通过加密算法(如AES、RSA)确保数据传输的机密性与完整性。开发者若错误地将加密凭证(如微信的sessionKey)从服务器端迁移至客户端,则会引发严重漏洞。攻击者可利用泄露的加密凭证劫持通信(如拦截或篡改用户手机号加密数据)或伪造身份登录服务器。 -
根凭证:根凭证是超级应用平台中最高级别的凭证(如微信的AppSecret),其功能是派生并管理其他子凭证(如访问凭证accessToken)。根据安全规范,根凭证应严格限制在服务器端使用,但实际开发中常因外包团队的疏漏导致泄露。一旦根凭证暴露,攻击者便可直接生成所有关联的子凭证,从而彻底控制超级应用平台的服务与用户账户。
KeyMagnet 通过提出一种新颖的语义分析和比较技术来检验小程序是否存在凭据泄露问题,该技术具有三个分析阶段,如图2所示:
-
第一阶段通过分析超级应用的开发文档,自动提取与凭证相关的API及其参数、描述等信息,构建服务端凭证语义图(CSG),提取凭证相关API及其依赖关系; -
第二阶段通过静态和动态数据流分析,追踪客户端代码中与凭证相关的API调用和数据流动,构建客户端行为图(CBG),提取所有与关键数据(包括凭据)相关的潜在重要行为; -
第三阶段则通过图匹配技术比对两种语义图,判断小程序客户端中是否存在服务端的凭证语义,从而识别出凭证迁移和泄露行为。首先,基于API签名、参数来源和上下文信息,推断CSG和CBG中的等价节点。然后,比较两图中节点之间的依赖关系(边),判断CSG是否为CBG的子图。若服务端凭证语义(CSG)在客户端行为(CBG)中出现,则判定存在凭证泄露风险。如图6所示。
4 主要发现
4.1 检测结果
本研究利用KeyMagnet对六大应用平台(WeChat、Baidu、Alipay、TikTok、Line、VK)共413,775个小程序进行了大规模自动化检测,最终成功分析了402,527个小程序。检测结果显示,凭证泄露问题在小程序生态中极为普遍,共发现84,491个凭证泄露事件,涉及54,728个小程序,覆盖了根凭证、访问凭证和加密凭证三大类。WeChat平台由于小程序基数大,泄露数量最多,三类凭证均有较高比例。TABLE III详细列出了各平台不同类型凭证泄露的小程序数量及占比,反映出凭证泄露在各平台的分布情况。
4.2 KeyMagnet 检测准确性
为评估KeyMagnet的检测准确性,研究团队在每个平台随机抽取500个被判定为有凭证泄露和500个无泄露的小程序进行人工验证。结果表明,KeyMagnet在各平台均表现出较高的检测精度和召回率,平均精确率为95.04%,召回率为85.56%,F1分数为90.05%。其中,Baidu平台的F1分数高达97.09%。表2展示了各平台的详细检测性能指标,包括真阳性、假阳性、真阴性、假阴性、精确率、召回率和F1分数。误报主要源于API语义结构相似导致的节点推断错误,漏报则多因凭证泄露后未被进一步使用或API依赖不完整。
4.3 结果分析
进一步分析发现,凭证泄露问题在高频使用类别(如购物、餐饮)和敏感类别(如政务、教育)的小程序中尤为突出。Figure 7展示了易受攻击小程序在不同类别的分布情况,购物、餐饮等高频类别的小程序泄露最多,政务、教育等敏感类别也不容忽视,反映显示用户常用和敏感类别均存在大量凭证泄露。
此外,跨平台和模板化开发加剧了凭证泄露的传播,同一开发者或公司在不同平台发布的小程序常因代码复用导致多平台同时泄露凭证,甚至存在一个小程序泄露另一个小程序凭证的情况。大量小程序由第三方平台模板开发,模板本身的漏洞会导致成千上万小程序集体泄露凭证。常见的泄露场景包括“一键登录”(phoneLogin)、二维码生成(createQRCode)等功能,开发者常将凭证下发到客户端,导致泄露。凭证泄露带来的安全危害包括用户账号劫持、敏感信息窃取、支付欺诈、钓鱼攻击和功能操控等,严重威胁用户和开发者的利益。
5 缓解措施及建议
为应对凭证泄漏威胁,需多方协同改进安全实践。开发者层面,首要任务是避免将凭证逻辑迁移至客户端,严格遵循“服务器端执行敏感操作”原则,并对第三方模板进行安全审计(如某模板因全局硬编码根凭证导致数万小程序受影响)。超级应用平台需承担更多责任:一方面优化开发文档,提供明确的安全示例(当前某电商平台的官方示例错误建议客户端存储RSA私钥);另一方面,可集成KeyMagnet至小程序发布流程,自动化筛查漏洞。技术防护上,平台应实施凭证动态轮换(如定期更新会话密钥)、IP白名单限制(仅允许受信服务器访问敏感API),以及细粒度权限控制(如分离日志服务的读写权限)。生态治理层面,需建立统一的漏洞披露机制,解决研究者与开发者沟通壁垒——例如,超级应用可设立安全响应中心(SRC),提供标准化报告模板与修复指南,推动漏洞高效闭环。研究团队已验证,通过主动通知开发者,26%的漏洞在提交后迅速修复,凸显协同治理的可行性。
6 局限性及未来方向
6.1 局限性
尽管KeyMagnet在检测动态凭证泄漏上成效显著,仍存在一定局限:
-
动态分析的覆盖率受限于复杂交互场景:部分小程序需登录或完成特定操作才能触发凭证请求,而现有爬虫策略难以全面模拟用户行为,可能遗漏未激活的泄漏路径。 -
加密流量未被纳入检测范围:若开发者对传输的凭证进行端到端加密,KeyMagnet无法通过流量分析捕获泄漏,需结合解密代理或运行时插桩技术扩展能力。
6.2 未来方向
未来工作可从三方面突破:
-
引入强化学习优化动态交互,通过智能探索提升代码覆盖率; -
扩展支持东南亚主流超级应用(如Grab、Gojek),验证工具的跨生态普适性; -
探索实时监控方案,结合威胁情报对泄漏凭证进行自动撤销与告警,形成“检测-响应”闭环。此外,研究可进一步量化凭证泄漏的经济损失,为政策制定与行业标准提供数据支撑。。
7 总结
本研究首次系统性揭示了app-in-app生态中动态凭证泄漏的严重性,提出高效检测工具KeyMagnet,并通过大规模实证分析验证其有效性。研究不仅推动了开发者与平台的安全实践改进(如修复高危CVE),也为后续研究提供了方法论与数据集支持。未来工作需进一步优化检测覆盖率,并探索跨生态协同防护机制,以应对日益复杂的小程序安全挑战。
安全学术圈招募队友-ing 有兴趣加入学术圈的请联系 secdr#qq.com
专题最新征文
-
期刊征文 | 暗网抑制前沿进展 (中文核心)
-
期刊征文 | 网络攻击分析与研判 (CCF T2)
-
期刊征文 | 域名安全评估与风险预警 (CCF T2)
原文始发于微信公众号(安全学术圈):复旦大学 | 万能密钥: 小程序中凭据泄露的大规模分析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论