挖洞经验 | Firefox for iOS浏览器的二维码扫码XSS漏洞
字数 993 2025-08-18 11:39:12
Firefox for iOS浏览器二维码扫码XSS漏洞分析报告
漏洞概述
本报告详细分析了Firefox for iOS浏览器(v10-v19)中存在的二维码扫码功能XSS漏洞(CVE-2019-17003)。该漏洞允许攻击者通过构造恶意二维码,在用户扫码时执行任意JavaScript代码,可能导致用户敏感信息泄露、会话劫持等安全问题。
漏洞背景
Firefox for iOS v10版本引入了二维码扫码功能,该功能使用WebKit web view组件加载内容,其余部分采用SWIFT架构实现。由于对javascript: URI的处理不当,导致XSS漏洞产生。
漏洞复现步骤
1. 构造恶意javascript URI
使用二维码生成网站(如https://www.the-qrcode-generator.com/)生成包含以下内容的二维码:
javascript:fetch('/').then(res=>res.text()).then(data=>alert(data));
或
javascript:alert(document.body.innerHTML);
2. 漏洞触发场景
基本XSS攻击
- 用户处于浏览某网站(如google.com)的状态
- 使用Firefox for iOS扫描恶意二维码
- 浏览器执行javascript代码,显示用户之前访问网站的相关信息
阅读模式下的XSS
构造以下形式的跳转链接:
http://localhost:6571/reader-mode/page?url=https://wwww.anysite.com
本地文件加载XSS
file:///test.html
内联页面加载XSS
internal://
3. CSP绕过
即使目标网站设置了严格的CSP策略:
<?php
header("Content-Security-Policy: default-src 'self'");
if(isset($_GET['xss'])) {
echo $_GET['xss'];
}
?>
恶意javascript URI仍可绕过限制执行代码。
漏洞影响范围
- Firefox for iOS v10至v19版本
- Opera mini for iOS(未修复)
漏洞原理分析
漏洞根本原因在于Firefox for iOS在地址栏中支持javascript URI调用,且未对二维码扫描输入的内容进行适当过滤和验证,导致恶意代码被执行。
修复方案
Firefox官方已在后续版本中从地址栏删除了javascript URI功能,建议用户升级至最新版本。
防御建议
- 及时更新浏览器到最新版本
- 避免扫描来源不明的二维码
- 开发者应对用户输入进行严格过滤,特别是涉及URI处理时
- 考虑禁用javascript: URI的执行能力
相关资源
- CVE编号: CVE-2019-17003
- 参考来源: payatu
- 报告时间: 2020-01-06
本报告详细记录了漏洞的发现过程、利用方法和影响范围,可作为安全研究和防御的参考。请注意,此漏洞信息仅用于教育目的,切勿用于非法活动。