挖洞经验 | 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功能,建议用户升级至最新版本。

防御建议

  1. 及时更新浏览器到最新版本
  2. 避免扫描来源不明的二维码
  3. 开发者应对用户输入进行严格过滤,特别是涉及URI处理时
  4. 考虑禁用javascript: URI的执行能力

相关资源

  • CVE编号: CVE-2019-17003
  • 参考来源: payatu
  • 报告时间: 2020-01-06

本报告详细记录了漏洞的发现过程、利用方法和影响范围,可作为安全研究和防御的参考。请注意,此漏洞信息仅用于教育目的,切勿用于非法活动。

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/)生成包含以下内容的二维码: 或 2. 漏洞触发场景 基本XSS攻击 用户处于浏览某网站(如google.com)的状态 使用Firefox for iOS扫描恶意二维码 浏览器执行javascript代码,显示用户之前访问网站的相关信息 阅读模式下的XSS 构造以下形式的跳转链接: 本地文件加载XSS 内联页面加载XSS 3. CSP绕过 即使目标网站设置了严格的CSP策略: 恶意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 本报告详细记录了漏洞的发现过程、利用方法和影响范围,可作为安全研究和防御的参考。请注意,此漏洞信息仅用于教育目的,切勿用于非法活动。