
CVE-2026-82090 · CVSS 9.2 KRITISCH · 0-Klick-Stored-XSS in Mozilla Pocket — alle Versionen (v0 → v8.33.0.0) · 18-Jahre-Forever-Day · kein Patch · MITRE veröffentlicht
Autor: Ing. Zampier Zago (FUNFACTOR1) Abteilung: Sektion 1 — Abteilung für Cybersicherheit, PS 1978 Limited Kontakt: [email protected] Web: www.ps1978ltd.it Klassifizierung: Analyse von Sicherheitsschwachstellen — CVE-2026-82090
Haftungsausschluss für Dual-Use-Inhalte: Dieses Repository enthält eine Schwachstellenanalyse und einen Proof of Concept (PoC) für ein End-of-Life-Produkt (EOL). Die bereitgestellten Informationen und der Code dienen ausschließlich Bildungszwecken, der defensiven Analyse und der offiziellen CVE-Dokumentation. Der Autor übernimmt keine Verantwortung für jeglichen Missbrauch dieser Informationen.
https://github.com/user-attachments/assets/e2b0aa46-df64-452b-afbf-fa31dd8c650d
Eine DOM-basierte Cross-Site-Scripting-Schwachstelle (XSS) wurde in Pocket für Android Version 8.33.0.0 (Paket com.ideashower.readitlater.pro) bestätigt, der letzten von Mozilla / Read It Later, Inc. veröffentlichten Version vor der Einstellung des Dienstes im Juli 2025. Die Schwachstelle ermöglicht es einem Angreifer, beliebiges JavaScript in die WebView der Anwendung einzuschleusen und auszuführen, ohne dass eine Benutzerinteraktion über eine einzige „Save to Pocket“-Aktion hinaus erforderlich ist — ein 0-Click-Exploit nach der Zustellung.
Die Ursache liegt in der nicht bereinigten Einschleusung extern bezogener HTML-Inhalte direkt in das DOM über die .html()-Methode von jQuery ($(document.body).html(content)) in der mitgelieferten Datei assets/html/j/articleview-mobile.js (Zeilen 95–99). Inhalte werden automatisch im Hintergrund durch com.pocket.sdk.offline.DownloadingService abgerufen und gerendert, ohne dass eine Benutzerinteraktion erforderlich ist.
Die Anwendung stellt außerdem eine native Java-zu-JavaScript-Bridge (PocketAndroidArticleInterface) bereit, die über addJavascriptInterface registriert und in classes2.dex bestätigt wurde und von JavaScript, das innerhalb der WebView ausgeführt wird, aufgerufen werden kann.
Aufzeichnung der Offenlegung gegenüber dem Hersteller: Das XSS wurde am 2024-07-10 förmlich an Mozilla Security gemeldet, mit Klassifizierung als CWE-79 und vollständigen technischen Details. Mozilla bestätigte den Eingang am 2024-07-11 und lehnte eine Behebung ausdrücklich ab, indem Pocket für außerhalb des Zuständigkeitsbereichs erklärt wurde. Mozilla veröffentlichte anschließend im Jahr 2025 v8.33.0.0, wobei der anfällige Code vollständig unverändert blieb. Die forensische Analyse von v8.33.0.0 bestätigt den identischen anfälligen Aufruf in den Zeilen 95–99 von articleview-mobile.js.
Abstammung: Dieselbe identische Zeile — $(document.body).html(content), in einer Datei mit demselben Namen articleview-mobile.js — ist im iOS-Gegenstück-Bundle ReadItLaterPro.app (Pocket iOS v4.5.2) vorhanden, das aus der Zeit unmittelbar vor dem Rebranding von Read It Later zu Pocket am 17. April 2012 stammt. Die CVE umfasst alle Versionen von v0 bis v8.33.0.0 — der Defekt wurde über die gesamte 18-jährige Lebensdauer des Produkts hinweg unverändert kontinuierlich ausgeliefert (siehe §7). Die forensische Bestätigung auf Codeebene über das älteste verfügbare Bundle (iOS v4.5.2) datiert die identische Senke auf mindestens 2012.
Es ist kein Patch verfügbar. Das Produkt ist aufgegeben. Alle installierten Instanzen bleiben dauerhaft anfällig.
| Feld | Wert |
|---|---|
| CVE | CVE-2026-82090 — Veröffentlicht 2026-08-28 — CNA: MITRE Corporation |
| Schwachstellentyp | DOM-basiertes XSS (0-Klick) + Missbrauch der JavaScript-Bridge |
| CWE | CWE-79, CWE-116 |
| Exploit-Status | 0-Klick, 0-Day — kein Patch verfügbar; Produkt End-of-Life |
| Herstellerreaktion | 2024-07-11 — „Pocket liegt außerhalb des Zuständigkeitsbereichs“ (Frida, Mozilla Security Team) |
| Betroffenes Produkt | Pocket Android v8.33.0.0 (letzte Version) |
| Paket-ID | com.ideashower.readitlater.pro |
| Hersteller | Mozilla Corporation / Read It Later, Inc. |
| CVSS v4.0 Score | 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 |
| Schweregrad | CRITICAL |
| Erstmalige Meldung an den Hersteller | 2021-04-19 (Umgehung der Paywall) |
| XSS formell an Mozilla Security gemeldet | 2024-07-10 |
| Letzte APK mit unveränderter Schwachstelle veröffentlicht | 2025 — v8.33.0.0 |
| Dienstabschaltung | 2025-07-08 |
| Code-Abstammung | 18 Jahre — alle Versionen (v0 → v8.33.0.0, 2007 → 2025). Forensische Codebestätigung aus dem iOS-Bundle von 2012. |
com.ideashower.readitlater.procom.ideashower.readitlater.pro_8.33.0.0.apkhttps://play.google.com/store/apps/details?id=com.ideashower.readitlater.pro erreichbar, die App kann jedoch nicht mehr heruntergeladen werden.| Feld | Wert |
|---|---|
| Typ | DOM-basiertes Cross-Site Scripting |
| CWE | CWE-79 — Unzureichende Neutralisierung von Eingaben bei der Webseitengenerierung |
| Sekundäres CWE | CWE-116 — Unzureichende Kodierung oder Maskierung der Ausgabe |
| Angriffsvektor | Remote, 0-Klick (keine Benutzerinteraktion nach der Zustellung) |
| Erforderliche Berechtigungen | Keine |
| Geltungsbereich | Geändert — der WebView-Kontext überschreitet die Vertrauensgrenze in die native Android-Bridge |
| Betroffene Komponente | assets/html/j/articleview-mobile.js |
| Betroffene Zeilen | 95–99 |
// article content was retrieved
loadCallback : function(content)
{
// TODO : 3.0 : If file was missing, handle that correctly
$(document.body).html(content);
Ursache: Extern bezogenes HTML wird ohne Bereinigung direkt an die .html()-Methode von jQuery 3.4.1 übergeben. jQuery 3.4.1 führt eingebettete <script>-Tags und Inline-Event-Handler (onerror, onload) aus. Es gibt nirgends in der 1.836 Zeilen umfassenden Datei einen Aufruf von DOMPurify, sanitize(), escapeHtml() oder etwas Vergleichbarem. Die Variable content stammt aus der Java-Schicht ohne JS-seitige Filterung.
Der Kommentar // TODO : 3.0 : If file was missing, handle that correctly, der dem verwundbaren Aufruf unmittelbar vorausgeht, zeigt, dass der Code nie für den Produktionseinsatz gehärtet wurde. Dieser Kommentar war in jeder Version der App bis zur finalen Veröffentlichung v8.33.0.0 vorhanden.