FUNFACTOR1/DOM-Based-XSS-in-Pocket-Mobile-Android-iOS-Unsanitized-WebView-HTML-Injection-since-13-Year

GitHub: FUNFACTOR1/DOM-Based-XSS-in-Pocket-Mobile-Android-iOS-Unsanitized-WebView-HTML-Injection-since-13-Year

该项目是一份针对 Mozilla Pocket Android 的 0-click DOM 型 XSS 漏洞报告,揭示了 WebView 中未净化 HTML 注入及 Java Bridge 滥用问题。

Stars: 2 | Forks: 0

# XSS 0-Click / 0-Day 漏洞报告 ## 导致 Pocket Android 中 JavaScript Bridge 滥用的跨站脚本攻击 (0-Click) ### 自主编写的 CVE 记录:CAN-2026-2030598 (MITRE 提交) **作者:** Ing. Zampier Zago **分类:** 安全漏洞分析 — CVE 提交 ## 1. 执行摘要 已在 Pocket Android 8.33.0.0 版本(包名 `com.ideashower.readitlater.pro`,Mozilla / Read It Later, Inc. 于 2025 年 7 月终止服务前发布的最终版本)中确认存在基于 DOM 的跨站脚本 (XSS) 漏洞。该漏洞允许攻击者在应用的 WebView 中注入并执行任意 JavaScript,除了单次“保存到 Pocket”操作外无需任何用户交互——这是一个交付后的 **0-click 漏洞利用**。 根本原因是未经过滤的外部 HTML 内容通过 jQuery 的 `.html()` 方法 (`$(document.body).html(content)`) 被直接注入到 DOM 中,位于 asset 打包文件 `assets/html/j/articleview-mobile.js`(第 95–99 行)。内容由 `com.pocket.sdk.offline.DownloadingService` 自动在后台获取并渲染,无需任何用户交互。 该应用还暴露了一个原生的 Java 到 JavaScript bridge (`PocketAndroidArticleInterface`),通过 `addJavascriptInterface` 注册并在 `classes2.dex` 中得到确认,可由在 WebView 中执行的 JavaScript 调用。 **厂商披露记录:** 该 XSS 漏洞已于 **2024-07-10** 正式报告给 Mozilla Security,并附带 CWE-79 分类和完整的技术细节。Mozilla 于 **2024-07-11** 确认收到,但明确拒绝修复,声明 Pocket 不在范围内。Mozilla 随后在 2025 年发布了 v8.33.0.0 版本,其中的漏洞代码完全没有改变。对 v8.33.0.0 的取证分析证实了 `articleview-mobile.js` 第 95–99 行存在相同的易受攻击调用。 **沿革:** 完全相同的一行代码 —— `$(document.body).html(content)`,存在于同名的 `articleview-mobile.js` 文件中 —— 也存在于 iOS 对应的打包文件 `ReadItLaterPro.app`(Pocket iOS v4.5.2)中,时间可追溯至 2012 年 4 月 17 日 Read It Later 更名为 Pocket 之前的时期。因此,该缺陷在两大主流移动平台上连续发布了约 13 年且未被修改(参见 §7)。 目前没有可用的补丁。该产品已被放弃。所有已安装的实例将永久处于易受攻击状态。 | 字段 | 值 | |---|---| | 漏洞类型 | 基于 DOM 的 XSS (0-click) + JavaScript Bridge 滥用 | | CWE | CWE-79, CWE-116 | | 漏洞利用状态 | 0-click, 0-day — 无可用补丁;产品已停止支持 | | 厂商响应 | 2024-07-11 — “Pocket 不在范围内” (Frida, Mozilla Security Team) | | 受影响产品 | Pocket Android v8.33.0.0 (最终发布版本) | | 包 ID | `com.ideashower.readitlater.pro` | | 厂商 | Mozilla Corporation / Read It Later, Inc. | | CVSS v4.0 评分 | 9.2 — `CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N` | | 严重程度 | 危急 | | 首次向厂商报告时间 | 2021-04-19 (付费墙绕过) | | 正式向 Mozilla Security 报告 XSS 时间 | 2024-07-10 | | 包含该漏洞的最终发布 APK | 2025 — v8.33.0.0 | | 服务停止 | 2025-07-08 | | 代码沿革 | 跨越 Android + iOS 约 13 年 (2012 → 2025) | ## 2. 受影响产品 - **产品名称:** Pocket — Save. Read. Grow. (Android) - **包名:** `com.ideashower.readitlater.pro` - **构建版本:** 8.33.0.0 (服务停止前的最终发布版本) - **分析的 APK:** `com.ideashower.readitlater.pro_8.33.0.0.apk` - **厂商:** Read It Later, Inc. / Mozilla Corporation - **Google Play URL:** https://play.google.com/store/apps/details?id=com.ideashower.readitlater.pro - **服务状态:** 已停止 (2025-07-08)。该应用仍安装在数百万台设备上,没有部署强制卸载、熔断机制或安全更新。视频证据 (2026-01-02) 证实,在官方关闭数月后,该应用仍可全面运行——包括付费墙绕过和后台服务。 ## 3. 漏洞详情 — 问题 #1:通过 WebView 实现 0-Click XSS ### 3.1 漏洞分类 | 字段 | 值 | |---|---| | 类型 | 基于 DOM 的跨站脚本攻击 | | CWE | CWE-79 — Web 页面生成时对输入的不当中和处理 | | 次要 CWE | CWE-116 — 输出不正确的编码或转义 | | 攻击向量 | 远程,0-click (交付后零用户交互) | | 所需权限 | 无 | | 范围 | 已改变 — WebView 上下文越过了信任边界进入原生 Android bridge | ### 3.2 易受攻击的组件 **文件:** `assets/html/j/articleview-mobile.js` **第 95–99 行:** ``` // article content was retrieved loadCallback : function(content) { // TODO : 3.0 : If file was missing, handle that correctly $(document.body).html(content); ``` **根本原因:** 外部获取的 HTML 在未经任何清理的情况下直接传递给 jQuery 3.4.1 的 `.html()` 方法。jQuery 3.4.1 会执行嵌入的 `