
CVE-2026-82090 · CVSS 9.2 CRÍTICO · XSS almacenado de 0 clics en Mozilla Pocket — todas las versiones (v0 → v8.33.0.0) · forever-day de 18 años · sin parche · publicado por MITRE
Autor: Ing. Zampier Zago (FUNFACTOR1) División: Sección 1 — Departamento de Ciberseguridad, PS 1978 Limited Contacto: [email protected] Web: www.ps1978ltd.it Clasificación: Análisis de vulnerabilidad de seguridad — CVE-2026-82090
Aviso sobre contenido de doble uso: Este repositorio contiene un análisis de vulnerabilidad y una Prueba de Concepto (PoC) para un producto al final de su vida útil (EOL). La información y el código proporcionados son estrictamente para fines educativos, análisis defensivo y documentación oficial de CVE. El autor no asume ninguna responsabilidad por el uso indebido de esta información.
https://github.com/user-attachments/assets/e2b0aa46-df64-452b-afbf-fa31dd8c650d
Se ha confirmado una vulnerabilidad de Cross-Site Scripting (XSS) basada en DOM en Pocket Android versión 8.33.0.0 (paquete com.ideashower.readitlater.pro), la versión final distribuida por Mozilla / Read It Later, Inc. antes del cese del servicio en julio de 2025. La vulnerabilidad permite a un atacante inyectar y ejecutar JavaScript arbitrario en el WebView de la aplicación sin ninguna interacción del usuario más allá de una única acción "Save to Pocket" — un exploit de 0 clics posterior a la entrega.
La causa raíz es la inyección no saneada de contenido HTML de origen externo directamente en el DOM mediante el método .html() de jQuery ($(document.body).html(content)), en el archivo incluido en los assets assets/html/j/articleview-mobile.js (líneas 95–99). El contenido se obtiene y se renderiza automáticamente en segundo plano mediante com.pocket.sdk.offline.DownloadingService sin requerir interacción del usuario.
La aplicación también expone un puente nativo de Java a JavaScript (PocketAndroidArticleInterface), registrado mediante addJavascriptInterface y confirmado en classes2.dex, invocable por JavaScript que se ejecute dentro del WebView.
Registro de divulgación al proveedor: El XSS se reportó formalmente a Mozilla Security el 2024-07-10 con clasificación CWE-79 y todo el detalle técnico. Mozilla acusó recibo el 2024-07-11 y rechazó explícitamente su remediación, declarando Pocket fuera de alcance. Mozilla publicó posteriormente la v8.33.0.0 en 2025 con el código vulnerable completamente sin cambios. El análisis forense de la v8.33.0.0 confirma la llamada vulnerable idéntica en las líneas 95–99 de articleview-mobile.js.
Linaje: La misma línea idéntica — $(document.body).html(content), en un archivo con el mismo nombre articleview-mobile.js — está presente en el paquete homólogo de iOS ReadItLaterPro.app (Pocket iOS v4.5.2), que data de la época inmediatamente anterior al cambio de marca de Read It Later a Pocket el 17 de abril de 2012. El CVE abarca todas las versiones desde la v0 hasta la v8.33.0.0 — el defecto se ha distribuido de forma continua, sin modificaciones, a lo largo de los 18 años de vida del producto (véase §7). La confirmación forense a nivel de código mediante el paquete más antiguo disponible (iOS v4.5.2) sitúa el sink idéntico al menos en 2012.
No hay parche disponible. El producto está abandonado. Todas las instancias instaladas permanecen vulnerables de forma permanente.
| Campo | Valor |
|---|---|
| CVE | CVE-2026-82090 — Publicado 2026-08-28 — CNA: MITRE Corporation |
| Tipo de vulnerabilidad | XSS basado en DOM (0-click) + abuso del puente JavaScript |
| CWE | CWE-79, CWE-116 |
| Estado del exploit | 0-click, 0-day — sin parche disponible; producto al final de su vida útil |
| Respuesta del proveedor | 2024-07-11 — "Pocket está fuera de alcance" (Frida, Mozilla Security Team) |
| Producto afectado | Pocket Android v8.33.0.0 (versión final) |
| ID del paquete | com.ideashower.readitlater.pro |
| Proveedor | Mozilla Corporation / Read It Later, Inc. |
| Puntuación 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 |
| Gravedad | CRÍTICA |
| Primer reporte al proveedor | 2021-04-19 (elusi��n del muro de pago) |
| XSS reportado formalmente a Mozilla Security | 2024-07-10 |
| APK final publicado con la vulnerabilidad intacta | 2025 — v8.33.0.0 |
| Cese del servicio | 2025-07-08 |
| Linaje del código | 18 años — todas las versiones (v0 → v8.33.0.0, 2007 → 2025). Confirmación forense del código a partir del paquete de iOS de 2012. |
com.ideashower.readitlater.procom.ideashower.readitlater.pro_8.33.0.0.apkhttps://play.google.com/store/apps/details?id=com.ideashower.readitlater.pro, pero la aplicación ya no está disponible para su descarga.| Campo | Valor |
|---|---|
| Tipo | Cross-Site Scripting basado en DOM |
| CWE | CWE-79 — Neutralización incorrecta de la entrada durante la generación de páginas web |
| CWE secundario | CWE-116 — Codificación o escape incorrectos de la salida |
| Vector de ataque | Remoto, 0 clics (cero interacción del usuario tras la entrega) |
| Privilegios requeridos | Ninguno |
| Alcance | Modificado — el contexto de WebView cruza el límite de confianza hacia el puente nativo de Android |
Archivo: assets/html/j/articleview-mobile.js
Líneas 95–99:
// article content was retrieved
loadCallback : function(content)
{
// TODO : 3.0 : If file was missing, handle that correctly
$(document.body).html(content);
Causa raíz: El HTML de origen externo se pasa directamente al método .html() de jQuery 3.4.1 sin ningún tipo de saneamiento. jQuery 3.4.1 ejecuta las etiquetas <script> incrustadas y los manejadores de eventos en línea (onerror, onload). No existe ninguna llamada a DOMPurify, sanitize(), escapeHtml() ni a un equivalente en ninguna parte del archivo de 1.836 líneas. La variable content proviene de la capa Java sin filtrado del lado de JS.
El comentario // TODO : 3.0 : If file was missing, handle that correctly que precede inmediatamente a la llamada vulnerable demuestra que el código nunca fue endurecido para producción. Este comentario estuvo presente en todas las versiones de la aplicación hasta la versión final v8.33.0.0.
Archivo: assets/html/j/articleview-mobile.js, líneas 11–14: