
CVE-2026-82090 · CVSS 9.2 CRÍTICO · XSS armazenado de 0 cliques no Mozilla Pocket — todas as versões (v0 → v8.33.0.0) · forever-day de 18 anos · sem patch · publicado pelo MITRE
Autor: Ing. Zampier Zago (FUNFACTOR1) Divisão: Seção 1 — Departamento de Segurança Cibernética, PS 1978 Limited Contato: [email protected] Web: www.ps1978ltd.it Classificação: Análise de Vulnerabilidade de Segurança — CVE-2026-82090
Aviso de Conteúdo de Uso Duplo: Este repositório contém uma análise de vulnerabilidade e uma Prova de Conceito (PoC) para um produto em Fim de Vida (EOL). As informações e o código fornecidos destinam-se estritamente a fins educacionais, análise defensiva e documentação oficial de CVE. O autor não se responsabiliza por qualquer uso indevido destas informações.
https://github.com/user-attachments/assets/e2b0aa46-df64-452b-afbf-fa31dd8c650d
Uma vulnerabilidade de Cross-Site Scripting (XSS) baseada em DOM foi confirmada no Pocket Android versão 8.33.0.0 (pacote com.ideashower.readitlater.pro), a versão final distribuída pela Mozilla / Read It Later, Inc. antes do encerramento do serviço em julho de 2025. A vulnerabilidade permite que um atacante injete e execute JavaScript arbitrário no WebView da aplicação sem qualquer interação do usuário além de uma única ação "Save to Pocket" — um exploit de 0-click após a entrega.
A causa raiz é a injeção não sanitizada de conteúdo HTML de origem externa diretamente no DOM através do método .html() do jQuery ($(document.body).html(content)), no arquivo empacotado nos assets assets/html/j/articleview-mobile.js (linhas 95–99). O conteúdo é obtido e renderizado automaticamente em segundo plano pelo com.pocket.sdk.offline.DownloadingService sem exigir interação do usuário.
A aplicação também expõe uma ponte nativa Java-para-JavaScript (PocketAndroidArticleInterface), registrada via addJavascriptInterface e confirmada em classes2.dex, invocável por JavaScript executado dentro do WebView.
Registro de divulgação ao fornecedor: O XSS foi formalmente reportado à Mozilla Security em 2024-07-10 com classificação CWE-79 e detalhamento técnico completo. A Mozilla confirmou o recebimento em 2024-07-11 e recusou explicitamente a correção, declarando o Pocket fora de escopo. A Mozilla subsequentemente lançou a v8.33.0.0 em 2025 com o código vulnerável totalmente inalterado. A análise forense da v8.33.0.0 confirma a chamada vulnerável idêntica nas linhas 95–99 de articleview-mobile.js.
Linhagem: A mesma linha idêntica — $(document.body).html(content), em um arquivo de mesmo nome articleview-mobile.js — está presente no pacote correspondente do iOS ReadItLaterPro.app (Pocket iOS v4.5.2), datando da era imediatamente anterior ao rebranding de Read It Later para Pocket em 17 de abril de 2012. A CVE abrange todas as versões da v0 até a v8.33.0.0 — o defeito foi continuamente distribuído, sem modificação, ao longo de toda a vida útil de 18 anos do produto (ver §7). A confirmação forense em nível de código através do pacote mais antigo disponível (iOS v4.5.2) data o sink idêntico em pelo menos 2012.
Nenhum patch está disponível. O produto está abandonado. Todas as instâncias instaladas permanecem permanentemente vulneráveis.
| Campo | Valor |
|---|---|
| CVE | CVE-2026-82090 — Publicado em 2026-08-28 — CNA: MITRE Corporation |
| Tipo de vulnerabilidade | XSS baseado em DOM (0-click) + Abuso de ponte JavaScript |
| CWE | CWE-79, CWE-116 |
| Estado do exploit | 0-click, 0-day — sem patch disponível; produto em fim de vida |
| Resposta do fornecedor | 2024-07-11 — "Pocket está fora do escopo" (Frida, Equipe de Segurança da Mozilla) |
| Produto afetado | Pocket Android v8.33.0.0 (versão final) |
| ID do pacote | com.ideashower.readitlater.pro |
| Fornecedor | Mozilla Corporation / Read It Later, Inc. |
| Pontuação 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 |
| Gravidade | CRÍTICA |
| Primeiro relato ao fornecedor | 2021-04-19 (contorno de paywall) |
| XSS formalmente reportado à Segurança da Mozilla | 2024-07-10 |
| APK final lançado com a vulnerabilidade intacta | 2025 — v8.33.0.0 |
| Encerramento do serviço | 2025-07-08 |
| Linhagem do código | 18 anos — todas as versões (v0 → v8.33.0.0, 2007 → 2025). Confirmação forense do código a partir do pacote 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, mas o aplicativo não está mais disponível para download.| Campo | Valor |
|---|---|
| Tipo | Cross-Site Scripting baseado em DOM |
| CWE | CWE-79 — Neutralização Incorreta de Entrada Durante a Geração de Página Web |
| CWE secundário | CWE-116 — Codificação ou Escape Incorreto de Saída |
| Vetor de ataque | Remoto, 0-click (zero interação do usuário após a entrega) |
| Privilégios necessários | Nenhum |
| Escopo | Alterado — o contexto do WebView cruza a fronteira de confiança para a ponte nativa do Android |
Arquivo: assets/html/j/articleview-mobile.js
Linhas 95–99:
// article content was retrieved
loadCallback : function(content)
{
// TODO : 3.0 : If file was missing, handle that correctly
$(document.body).html(content);
Causa raiz: HTML de origem externa é passado diretamente para o método .html() do jQuery 3.4.1 sem qualquer sanitização. O jQuery 3.4.1 executa tags <script> incorporadas e manipuladores de eventos inline (onerror, onload). Não existe qualquer chamada a DOMPurify, sanitize(), escapeHtml() ou equivalente em nenhum ponto do ficheiro de 1.836 linhas. A variável content tem origem na camada Java sem filtragem do lado do JS.
O comentário // TODO : 3.0 : If file was missing, handle that correctly imediatamente antes da chamada vulnerável demonstra que o código nunca foi endurecido para produção. Este comentário esteve presente em todas as versões da aplicação até à versão final v8.33.0.0.
Ficheiro: assets/html/j/articleview-mobile.js, linhas 11–14:
// Android comm object
if (typeof PocketAndroidArticleInterface == 'undefined')
PocketAndroidArticleInterface = false;
isAndroid = !!PocketAndroidArticleInterface;