
CVE-2026-82090 · CVSS 9.2 CRITICAL · Mozilla Pocket में 0-click stored XSS — सभी संस्करण (v0 → v8.33.0.0) · 18-वर्ष पुराना forever-day · कोई पैच नहीं · MITRE द्वारा प्रकाशित
लेखक: Ing. Zampier Zago (FUNFACTOR1) प्रभाग: अनुभाग 1 — साइबर सुरक्षा विभाग, PS 1978 Limited संपर्क: [email protected] वेब: www.ps1978ltd.it वर्गीकरण: सुरक्षा भेद्यता विश्लेषण — CVE-2026-82090
दोहरे उपयोग वाली सामग्री अस्वीकरण: इस रिपॉज़िटरी में एक जीवन-चक्र-समाप्त (EOL) उत्पाद के लिए भेद्यता विश्लेषण और एक प्रूफ़ ऑफ़ कॉन्सेप्ट (PoC) शामिल है। प्रदान की गई जानकारी और कोड पूर्णतः शैक्षिक उद्देश्यों, रक्षात्मक विश्लेषण और आधिकारिक CVE दस्तावेज़ीकरण के लिए हैं। इस जानकारी के किसी भी दुरुपयोग के लिए लेखक कोई ज़िम्मेदारी नहीं लेता।
https://github.com/user-attachments/assets/e2b0aa46-df64-452b-afbf-fa31dd8c650d
Pocket Android संस्करण 8.33.0.0 (पैकेज com.ideashower.readitlater.pro) में एक DOM-आधारित क्रॉस-साइट स्क्रिप्टिंग (XSS) भेद्यता की पुष्टि की गई है, जो जुलाई 2025 में सेवा समाप्ति से पहले Mozilla / Read It Later, Inc. द्वारा जारी अंतिम रिलीज़ है। यह भेद्यता एक हमलावर को एप्लिकेशन के WebView में मनमाना JavaScript इंजेक्ट और निष्पादित करने की अनुमति देती है, जिसके लिए एकल "Save to Pocket" क्रिया के अतिरिक्त किसी भी उपयोगकर्ता इंटरैक्शन की आवश्यकता नहीं होती — डिलीवरी के बाद यह एक 0-click एक्सप्लॉइट है।
मूल कारण jQuery की .html() विधि ($(document.body).html(content)) के माध्यम से बाहरी स्रोत से प्राप्त HTML सामग्री का DOM में बिना सैनिटाइज़ किए सीधे इंजेक्शन है, जो एसेट-बंडल फ़ाइल assets/html/j/articleview-mobile.js (पंक्तियाँ 95–99) में है। सामग्री को com.pocket.sdk.offline.DownloadingService द्वारा पृष्ठभूमि में स्वचालित रूप से फ़ेच और रेंडर किया जाता है, जिसके लिए किसी उपयोगकर्ता इंटरैक्शन की आवश्यकता नहीं होती।
एप्लिकेशन एक नेटिव Java-to-JavaScript ब्रिज (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) में मौजूद है, जो 17 अप्रैल 2012 को Read It Later के Pocket के रूप में रीब्रांड होने से ठीक पहले के युग की है। यह CVE v0 से लेकर v8.33.0.0 तक के सभी संस्करणों को कवर करता है — यह दोष उत्पाद के पूरे 18-वर्षीय जीवनकाल में लगातार, बिना किसी संशोधन के शिप किया गया है (देखें §7)। सबसे पुराने उपलब्ध बंडल (iOS v4.5.2) के माध्यम से फ़ॉरेंसिक कोड-स्तरीय पुष्टि उसी सिंक को कम से कम 2012 तक का दर्शाती है।
कोई पैच उपलब्ध नहीं है। उत्पाद परित्यक्त है। सभी स्थापित इंस्टेंस स्थायी रूप से भेद्य बने हुए हैं।
| फ़ील्ड | मान |
|---|---|
| CVE | CVE-2026-82090 — प्रकाशित 2026-08-28 — CNA: MITRE Corporation |
| भेद्यता प्रकार | DOM-आधारित XSS (0-क्लिक) + JavaScript Bridge दुरुपयोग |
| CWE | CWE-79, CWE-116 |
| शोषण स्थिति | 0-क्लिक, 0-डे — कोई पैच उपलब्ध नहीं; उत्पाद End-of-Life |
| विक्रेता प्रतिक्रिया | 2024-07-11 — "Pocket is out of scope" (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 |
| गंभीरता | CRITICAL |
| विक्रेता को पहली बार रिपोर्ट किया गया | 2021-04-19 (पेवॉल बायपास) |
| Mozilla Security को औपचारिक रूप से XSS रिपोर्ट किया गया | 2024-07-10 |
| भेद्यता बरकरार रखते हुए अंतिम APK जारी | 2025 — v8.33.0.0 |
| सेवा बंद | 2025-07-08 |
| कोड वंशावली | 18 वर्ष — सभी संस्करण (v0 → v8.33.0.0, 2007 → 2025)। 2012 iOS बंडल से फोरेंसिक कोड पुष्टि। |
com.ideashower.readitlater.procom.ideashower.readitlater.pro_8.33.0.0.apkhttps://play.google.com/store/apps/details?id=com.ideashower.readitlater.pro पर पहुँचा जा सकता है, लेकिन ऐप अब डाउनलोड के लिए उपलब्ध नहीं है।| फ़ील्ड | मान |
|---|---|
| प्रकार | DOM-आधारित क्रॉस-साइट स्क्रिप्टिंग |
| CWE | CWE-79 — वेब पेज जनरेशन के दौरान इनपुट का अनुचित न्यूट्रलाइज़ेशन |
| द्वितीयक CWE | CWE-116 — आउटपुट का अनुचित एन्कोडिंग या एस्केपिंग |
| आक्रमण वेक्टर | रिमोट, 0-क्लिक (डिलीवरी के बाद शून्य उपयोगकर्ता इंटरैक्शन) |
| आवश्यक विशेषाधिकार | कोई नहीं |
| दायरा | परिवर्तित — WebView संदर्भ ट्रस्ट सीमा पार करके नेटिव Android ब्रिज में प्रवेश करता है |
फ़ाइल: 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 एम्बेडेड <script> टैग और इनलाइन इवेंट हैंडलर (onerror, onload) को निष्पादित करता है। 1,836 पंक्तियों वाली फ़ाइल में कहीं भी DOMPurify, sanitize(), escapeHtml(), या समकक्ष किसी भी फ़ंक्शन का कॉल मौजूद नहीं है। content वेरिएबल Java लेयर से उत्पन्न होता है, बिना किसी JS-पक्षीय फ़िल्टरिंग के।
असुरक्षित कॉल से ठीक पहले मौजूद // TODO : 3.0 : If file was missing, handle that correctly टिप्पणी यह दर्शाती है कि कोड को कभी भी प्रोडक्शन के लिए सुदृढ़ (hardened) नहीं किया गया। यह टिप्पणी ऐप के प्रत्येक संस्करण में अंतिम रिलीज़ v8.33.0.0 तक मौजूद रही।
फ़ाइल: assets/html/j/articleview-mobile.js, पंक्तियाँ 11–14:
// Android comm object
if (typeof PocketAndroidArticleInterface == 'undefined')
PocketAndroidArticleInterface = false;
isAndroid = !!PocketAndroidArticleInterface;
DEX स्ट्रिंग विश्लेषण (classes2.dex) के माध्यम से पुष्टि की गई:
PocketAndroidArticleInterface
setJavaScriptEnabled
addJavascriptInterface