
CVE-2026-82090 · CVSS 9.2 CRITIQUE · XSS stocké 0-clic dans Mozilla Pocket — toutes les versions (v0 → v8.33.0.0) · faille de 18 ans · aucun correctif · publié par MITRE
Auteur : Ing. Zampier Zago (FUNFACTOR1) Division : Section 1 — Département de cybersécurité, PS 1978 Limited Contact : [email protected] Web : www.ps1978ltd.it Classification : Analyse de vulnérabilité de sécurité — CVE-2026-82090
Avertissement relatif au contenu à double usage : Ce dépôt contient une analyse de vulnérabilité et une preuve de concept (PoC) pour un produit en fin de vie (EOL). Les informations et le code fournis sont strictement destinés à des fins éducatives, à l'analyse défensive et à la documentation officielle de la CVE. L'auteur décline toute responsabilité quant à un quelconque usage abusif de ces informations.
https://github.com/user-attachments/assets/e2b0aa46-df64-452b-afbf-fa31dd8c650d
Une vulnérabilité de Cross-Site Scripting (XSS) basée sur le DOM a été confirmée dans Pocket Android version 8.33.0.0 (paquet com.ideashower.readitlater.pro), la dernière version publiée par Mozilla / Read It Later, Inc. avant l'arrêt du service en juillet 2025. La vulnérabilité permet à un attaquant d'injecter et d'exécuter du JavaScript arbitraire dans la WebView de l'application sans aucune interaction de l'utilisateur au-delà d'une simple action « Save to Pocket » — un exploit 0-click après livraison.
La cause racine est l'injection non assainie de contenu HTML d'origine externe directement dans le DOM via la méthode .html() de jQuery ($(document.body).html(content)), dans le fichier intégré aux assets assets/html/j/articleview-mobile.js (lignes 95–99). Le contenu est récupéré et rendu automatiquement en arrière-plan par com.pocket.sdk.offline.DownloadingService, sans aucune interaction de l'utilisateur requise.
L'application expose également un pont natif Java-vers-JavaScript (PocketAndroidArticleInterface), enregistré via addJavascriptInterface et confirmé dans classes2.dex, appelable par du JavaScript s'exécutant au sein de la WebView.
Historique de divulgation au fournisseur : Le XSS a été formellement signalé à Mozilla Security le 2024-07-10 avec une classification CWE-79 et l'intégralité des détails techniques. Mozilla a accusé réception le 2024-07-11 et a explicitement refusé de corriger, déclarant Pocket hors périmètre. Mozilla a ensuite publié la v8.33.0.0 en 2025 avec le code vulnérable entièrement inchangé. L'analyse forensique de la v8.33.0.0 confirme l'appel vulnérable identique aux lignes 95–99 de articleview-mobile.js.
Filiation : La même ligne identique — $(document.body).html(content), dans un fichier du même nom articleview-mobile.js — est présente dans le bundle homologue iOS ReadItLaterPro.app (Pocket iOS v4.5.2), datant de l'époque précédant immédiatement le changement de marque de Read It Later en Pocket le 17 avril 2012. La CVE couvre toutes les versions de la v0 à la v8.33.0.0 — le défaut a été livré de façon continue, sans modification, pendant toute la durée de vie du produit, soit 18 ans (voir §7). La confirmation forensique au niveau du code via le plus ancien bundle disponible (iOS v4.5.2) date le sink identique à au moins 2012.
Aucun correctif n'est disponible. Le produit est abandonné. Toutes les instances installées restent vulnérables de façon permanente.
| Champ | Valeur |
|---|---|
| CVE | CVE-2026-82090 — Publié le 2026-08-28 — CNA : MITRE Corporation |
| Type de vulnérabilité | XSS basé sur le DOM (0-click) + abus de pont JavaScript |
| CWE | CWE-79, CWE-116 |
| Statut de l'exploit | 0-click, 0-day — aucun correctif disponible ; produit en fin de vie |
| Réponse du fournisseur | 2024-07-11 — « Pocket est hors périmètre » (Frida, équipe de sécurité Mozilla) |
| Produit affecté | Pocket Android v8.33.0.0 (version finale) |
| ID du package | com.ideashower.readitlater.pro |
| Fournisseur | Mozilla Corporation / Read It Later, Inc. |
| Score 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 |
| Gravité | CRITIQUE |
| Première signalisation au fournisseur | 2021-04-19 (contournement du paywall) |
| XSS signalé formellement à la sécurité Mozilla | 2024-07-10 |
| Dernier APK publié avec la vulnérabilité intacte | 2025 — v8.33.0.0 |
| Arrêt du service | 2025-07-08 |
| Lignée du code | 18 ans — toutes les versions (v0 → v8.33.0.0, 2007 → 2025). Confirmation forensique du code à partir du bundle 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, mais l'application n'est plus disponible au téléchargement.| Champ | Valeur |
|---|---|
| Type | Cross-Site Scripting basé sur le DOM |
| CWE | CWE-79 — Neutralisation incorrecte de l'entrée lors de la génération de pages web |
| CWE secondaire | CWE-116 — Encodage ou échappement incorrect de la sortie |
| Vecteur d'attaque | À distance, 0-click (aucune interaction utilisateur après la livraison) |
| Privilèges requis | Aucun |
| Portée | Modifiée — le contexte WebView franchit la frontière de confiance vers le pont natif Android |
Fichier : assets/html/j/articleview-mobile.js
Lignes 95–99 :
// article content was retrieved
loadCallback : function(content)
{
// TODO : 3.0 : If file was missing, handle that correctly
$(document.body).html(content);
Cause racine : du HTML provenant de sources externes est transmis directement à la méthode .html() de jQuery 3.4.1 sans aucune désinfection. jQuery 3.4.1 exécute les balises <script> intégrées et les gestionnaires d'événements en ligne (onerror, onload). Aucun appel à DOMPurify, sanitize(), escapeHtml() ou équivalent n'existe nulle part dans le fichier de 1 836 lignes. La variable content provient de la couche Java sans filtrage côté JS.
Le commentaire // TODO : 3.0 : If file was missing, handle that correctly précédant immédiatement l'appel vulnérable démontre que le code n'a jamais été durci pour la production. Ce commentaire était présent dans chaque version de l'application jusqu'à la version finale v8.33.0.0.
Fichier : assets/html/j/articleview-mobile.js, lignes 11–14 :