
CVE-2026-82090 · CVSS 9.2 КРИТИЧЕСКИЙ · 0-click хранимая XSS в Mozilla Pocket — все версии (v0 → v8.33.0.0) · 18-летний forever-day · без патча · опубликовано MITRE
Автор: Ing. Zampier Zago (FUNFACTOR1) Подразделение: Section 1 — Department of Cyber Security, PS 1978 Limited Контакт: [email protected] Веб-сайт: www.ps1978ltd.it Классификация: Анализ уязвимости безопасности — CVE-2026-82090
Отказ от ответственности за двойное использование: Этот репозиторий содержит анализ уязвимости и Proof of Concept (PoC) для продукта, снятого с поддержки (End-of-Life, EOL). Предоставленная информация и код предназначены строго для образовательных целей, защитного анализа и официальной документации CVE. Автор не несёт ответственности за любое неправомерное использование этой информации.
https://github.com/user-attachments/assets/e2b0aa46-df64-452b-afbf-fa31dd8c650d
Уязвимость DOM-based Cross-Site Scripting (XSS) подтверждена в Pocket для Android версии 8.33.0.0 (пакет com.ideashower.readitlater.pro) — финальном релизе, выпущенном Mozilla / Read It Later, Inc. перед прекращением обслуживания в июле 2025 года. Уязвимость позволяет злоумышленнику внедрить и выполнить произвольный JavaScript в WebView приложения без какого-либо взаимодействия с пользователем, кроме единственного действия «Save to Pocket» — 0-click эксплойт после доставки.
Первопричиной является несанитизированное внедрение HTML-содержимого из внешних источников непосредственно в DOM через метод jQuery .html() ($(document.body).html(content)) в файле, входящем в состав ресурсов, assets/html/j/articleview-mobile.js (строки 95–99). Содержимое извлекается и отображается автоматически в фоновом режиме службой com.pocket.sdk.offline.DownloadingService без необходимости какого-либо взаимодействия с пользователем.
Приложение также предоставляет нативный мост Java-to-JavaScript (PocketAndroidArticleInterface), зарегистрированный через addJavascriptInterface и подтверждённый в classes2.dex, вызываемый JavaScript, исполняемым внутри WebView.
Запись о раскрытии вендору: Об XSS официально сообщено в Mozilla Security 2024-07-10 с классификацией CWE-79 и полными техническими деталями. Mozilla подтвердила получение 2024-07-11 и явно отказалась от устранения, объявив Pocket вне области действия. Впоследствии Mozilla выпустила v8.33.0.0 в 2025 году с полностью неизменённым уязвимым кодом. Криминалистический анализ v8.33.0.0 подтверждает идентичный уязвимый вызов в строках 95–99 файла articleview-mobile.js.
Происхождение: Та же самая строка — $(document.body).html(content), в файле с тем же именем articleview-mobile.js — присутствует в аналогичном пакете для iOS ReadItLaterPro.app (Pocket iOS v4.5.2), относящемся к эпохе, непосредственно предшествующей ребрендингу Read It Later в Pocket 17 апреля 2012 года. CVE охватывает все версии от v0 до v8.33.0.0 — дефект непрерывно поставлялся, не изменяясь, на протяжении всего 18-летнего жизненного цикла продукта (см. §7). Криминалистическое подтверждение на уровне кода через самый старый доступный пакет (iOS v4.5.2) датирует идентичный сток как минимум 2012 годом.
Патч недоступен. Продукт заброшен. Все установленные экземпляры остаются навсегда уязвимыми.
com.ideashower.readitlater.procom.ideashower.readitlater.pro_8.33.0.0.apkhttps://play.google.com/store/apps/details?id=com.ideashower.readitlater.pro, но приложение больше недоступно для загрузки.Файл: assets/html/j/articleview-mobile.js
Строки 95–99:```javascript
// article content was retrieved
loadCallback : function(content)
{
// TODO : 3.0 : If file was missing, handle that correctly
$(document.body).html(content);
**Первопричина:** HTML из внешнего источника передаётся напрямую в метод `.html()` jQuery 3.4.1 без какой-либо санитизации. 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`, непосредственно предшествующий уязвимому вызову, демонстрирует, что код так и не был доведён до продакшн-уровня. Этот комментарий присутствовал в каждой версии приложения вплоть до финального релиза v8.33.0.0.
### 3.3 Свидетельства из JavaScript Bridge
**Файл:** `assets/html/j/articleview-mobile.js`, строки 11–14:```javascript
// Android comm object
if (typeof PocketAndroidArticleInterface == 'undefined')
PocketAndroidArticleInterface = false;
isAndroid = !!PocketAndroidArticleInterface;
Подтверждено с помощью анализа строк DEX (classes2.dex):```
PocketAndroidArticleInterface
setJavaScriptEnabled
addJavascriptInterface
Подтверждённые методы моста из мест вызова JS: `onReady()`, `onError()`, `onScrollChanged()`, `setFrozen()`, `placePageBlockers()`, `toggleFullscreen()`, `setViewType()`, `scrollToPosition()`, `onTextSearch()`, `onRequestedHighlightPatch()`, `updatePageSwipingDisabledAreas()`, `getHorizontalMargin()`, `getMaxMediaHeight()`, `isConnected()`.
### 3.4 Служба фоновой синхронизации
**AndroidManifest.xml** подтверждает:```xml
<service
android:name="com.pocket.sdk.offline.DownloadingService"
android:permission="android.permission.FOREGROUND_SERVICE_DATA_SYNC">
С зарегистрированным приёмником BOOT_COMPLETED. Сервис автоматически извлекает и отображает содержимое статьи при загрузке устройства и появлении сети, вызывая loadCallback в скрытом WebView без какого-либо взаимодействия с пользователем.
Phase 1 — Content Injection [CONFIRMED] Attacker hosts page with XSS payload. Victim saves URL via "Save to Pocket". Malicious HTML stored in local Pocket database.
Phase 2 — Zero-Click Background Sync [CONFIRMED] DownloadingService auto-starts on boot (BOOT_COMPLETED). Fetches article content silently, no user interaction.
Phase 3 — Automatic WebView Rendering [CONFIRMED] Pagination engine (updatePaging) triggers hidden WebView render. No user opens the article.
Phase 4 — JavaScript Execution [CONFIRMED] loadCallback calls $(document.body).html(content). jQuery 3.4.1 executes embedded scripts and event handlers.
Phase 5 — Native Bridge Reachability [PARTIAL] Bridge object PocketAndroidArticleInterface is reachable from the XSS execution context (confirmed via classes2.dex string analysis and JS call-site inventory). Full native method surface and downstream impact pending complete JADX decompilation.
---
## 4. Доказательство концепции```html
<!DOCTYPE html>
<html>
<body>
</body>
</html>
Шаги воспроизведения:
DownloadingService автоматически загружает содержимое.loadCallback → $(document.body).html(content) → срабатывает полезная нагрузка.Примечание об охвате платформ в PoC: Приведённое выше исполняемое доказательство концепции нацелено на сборку для Android, которая представляет собой случай 0-click (фоновый
DownloadingService). Аналог для iOS (Pocket iOS v4.5.2 /ReadItLaterPro.app) содержит идентичный уязвимый стокloadCallback()в файле с тем же именем, но достигает нативного кода через иной механизм моста (URL-схемаx-ril-cmd:, перехватываемая делегатомUIWebView) и деградирует до случая 1-click (пользователь должен открыть сохранённую статью). Доказательства для iOS получены путём статического анализа поставляемого пакета приложения и полностью задокументированы вiOS_forensic_analysis_v4.5.2.mdв этом репозитории. Отдельный исполняемый PoC для iOS не публикуется; анализ общей кодовой базы демонстрирует эквивалентность стока на обеих платформах.
Полный вектор: 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
Базовый балл: 9.2 — КРИТИЧЕСКИЙ
Все даты сверены с оригинальными доказательствами в виде электронных писем (POCKET_MAIL.pdf, POCKET_MAIL1.pdf, CRONO2.pdf).
Запись CVE подтверждает все версии от v0 до v8.33.0.0 как затронутые. Дефект не является регрессией — это исходная архитектура конвейера отображения статей, присутствовавшая с момента запуска Read It Later как расширения для Firefox в 2007 году, перенесённая в мобильные приложения (Android с 2011 года, iOS ранее) и поставленная без изменений вплоть до финального релиза для Android в 2025 году. Криминалистическое подтверждение на уровне кода идентичного уязвимого стока прослеживается до 2012 года через самый старый доступный пакет (iOS v4.5.2).
ReadItLaterPro.app)Пакет приложения для iOS называется ReadItLaterPro.app — название продукта до ребрендинга, использовавшееся Read It Later, Inc. до публичного переименования приложения в Pocket 17 апреля 2012 года. Пакет нацелен на iOS 5.0+, что помещает кодовую базу в период 2011 — начало 2012 года.
Криминалистический анализ этого пакета для iOS подтверждает посимвольно идентичный уязвимый шаблон в файле с тем же именем, что и в версии для Android. Полный криминалистический анализ iOS — уязвимый сток, конвейер контента, нативный мост, инвентаризация телеметрии и ссылки на доказательства — опубликован в этом репозитории как iOS_forensic_analysis_v4.5.2.md.
Файл: manifest/cache/j/articleview-mobile.js (iOS) — то же имя файла, что и assets/html/j/articleview-mobile.js (Android)
Строки 97–107 (iOS):```javascript // article content was retrieved loadCallback : function(content) { // TODO : 3.0 : If file was missing, handle that correctly
$(document.body).html(content); // ← IDENTICAL TO ANDROID
// Add empty content to bottom in case an image is at bottom.
$(document.body).append($('<br> '))
this.onArticleReady();
},
Тот же самый комментарий `// TODO : 3.0` присутствует на обеих платформах — один и тот же точный плейсхолдер, к которому так и не вернулись, на протяжении ~13 лет.
### 7.2 Подтверждена общая кодовая база
Пакет iOS содержит явную логику ветвления по платформам, которая доказывает, что Read It Later, Inc. / Mozilla поставляли **единую общую кодовую базу JavaScript** на обе платформы:```javascript
var isAndroid;
if (typeof ReadItLaterJSMethods == 'undefined')
ReadItLaterJSMethods = false;
isAndroid = !!ReadItLaterJSMethods;
Когда isAndroid === false, выполняется путь моста iOS; когда true — путь Android. Оба пути сходятся на одном и том же уязвимом loadCallback() без какой-либо санитизации на обеих платформах.
Примечание о хронологии UIWebView: Apple представила WKWebView в качестве преемника в iOS 8 (2014). UIWebView был официально объявлен устаревшим в iOS 12 (2018). App Store перестал принимать новые приложения, использующие UIWebView, в апреле 2020 года, а обновления существующих приложений — в декабре 2020 года. UIWebView никогда официально не удалялся из SDK — он по-прежнему присутствует, но больше не принимается для отправки в App Store. Его слабые места в области безопасности, значимые здесь, заключаются в том, что он работает внутри процесса (без отдельного процесса WebContent), не поддерживает Content Security Policy и выполняет внедрённый JavaScript синхронно в главном потоке через stringByEvaluatingJavaScriptFromString:.
Read It Later, Inc. — а впоследствии Mozilla после приобретения — выпускала один и тот же несанитизированный шаблон инъекции .html(), в файле с тем же именем, с тем же неисправленным комментарием TODO, на протяжении всего 18-летнего жизненного цикла продукта (2007 → 2025), что подтверждено MITRE как затрагивающее все версии от v0 до v8.33.0.0.
Это включает период после официального отчёта CWE-79 от 2024-07-10. По крайней мере одна дополнительная линейка релизов Android была выпущена в 2024–2025 годах (завершившаяся v8.33.0.0) с сохранённым дословно уязвимым кодом.
Средство чтения статей Pocket внедряет необработанный HTML из внешних источников в DOM через $(document.body).html(content) без какой-либо санитизации. Комментарий // TODO в строке 95 подтверждает, что код никогда не был усилен для эксплуатации. Этот архитектурный выбор присутствовал с самых ранних мобильных сборок (см. §7) вплоть до финального релиза Android v8.33.0.0 — неизменный на протяжении примерно 13 лет и как минимум одной полной смены владельца, и неизменный после официального отчёта о безопасности в июле 2024 года.
О хронологии ответа вендора после 2024 года и точной последовательности между официальным отчётом CWE-79, отказом Mozilla и финальным неисправленным релизом см. §6.
Меры защиты от вендора отсутствуют и не предвидятся.
Для конечных пользователей: Немедленно удалите com.ideashower.readitlater.pro. Отзовите разрешения Google OAuth.
Для сообщества безопасности: Этот случай квалифицируется как уязвимость «Forever-Day» — подтверждённая, неисправленная, в заброшенном программном обеспечении без доступного пути устранения. Подходит для классификации под тегом Unsupported When Assigned согласно политике MITRE EOL.
Проанализированный APK: com.ideashower.readitlater.pro_8.33.0.0.apk
Инструменты: Android Studio, DEX2JAR, ручной обзор кода, разбор бинарного AXML (UTF-16LE), инспекция схемы Protocol Buffer, извлечение строк из DEX. Бандл iOS исследован посредством извлечения строк и обзора исходного кода встроенного конвейера JavaScript.
Цепочка доказательств:```
APK acquired └── com.ideashower.readitlater.pro_8.33.0.0.apk
Decompiled ├── assets/html/j/articleview-mobile.js (XSS — lines 95–99) ├── assets/html/article-mobile.html (jQuery 3.4.1) ├── AndroidManifest.xml (DownloadingService, SDK receivers) └── classes.dex / classes2.dex / classes3.dex
iOS counterpart bundle acquired and analyzed └── ReadItLaterPro.app (Pocket iOS v4.5.2) └── manifest/cache/j/articleview-mobile.js (XSS — lines 97–107) └── full analysis: iOS_forensic_analysis_v4.5.2.md
Vendor communication record └── Original emails verified: POCKET_MAIL.pdf, POCKET_MAIL1.pdf, CRONO2.pdf First report: 2021-04-19 XSS formally reported: 2024-07-10 Vendor final refusal: 2024-07-11
Dynamic evidence └── Video recording 2026-01-02: app fully operational post-sunset on real device
---
## 11. Запись CVE
**CVE ID:** CVE-2026-82090 — Опубликовано 2026-08-28 корпорацией MITRE (CNA). Изначально отправлено как CAN-2026-2030598 через cveform.mitre.org.
**Поставщик:** Mozilla Corporation
**Продукт:** Pocket (Android)
**Версия:** 8.33.0.0
**Тип уязвимости:** Межсайтовый скриптинг (XSS)
**Описание (для cveform.mitre.org):**```
** UNSUPPORTED WHEN ASSIGNED ** A DOM-Based Cross-Site Scripting
(XSS) vulnerability (CWE-79) in the articleview-mobile.js
component of Mozilla Pocket for Android through version 8.33.0.0
allows remote attackers to execute arbitrary JavaScript within
the application's WebView. By leveraging the background
DownloadingService, a crafted HTML payload is processed
automatically without user interaction (zero-click), allowing
interaction with the native PocketAndroidArticleInterface Java
bridge.
NOTE: This product is End-of-Life and no longer supported by
the vendor.
Дополнительная информация / Коммуникация с вендором:``` First disclosure: 2021-04-19 (paywall bypass). Formal security report identifying XSS (CWE-79): 2024-07-10 to Mozilla Security. Vendor response (2024-07-11): Product declared out of scope. Final APK v8.33.0.0 released in 2025 with vulnerable code unchanged. Service sunset 2025-07-08. Product is abandoned. The same vulnerable line is present in the iOS counterpart bundle (ReadItLaterPro.app, v4.5.2, circa 2012), evidencing ~13 years of unmodified shipment across both mobile platforms.
---
## 12. Ссылки
- CVE-2026-82090 (официальная запись): https://www.cve.org/CVERecord?id=CVE-2026-82090
- CWE-79: https://cwe.mitre.org/data/definitions/79.html
- CWE-116: https://cwe.mitre.org/data/definitions/116.html
- Спецификация CVSS v4.0: https://www.first.org/cvss/v4.0/specification-document
- Процесс MITRE CVE EOL: https://www.cve.org/Resources/General/End-of-Life-EOL-Assignment-Process.pdf
- Операционные правила MITRE CNA: https://www.cve.org/resourcessupport/allresources/cnarules
- Поведение jQuery `.html()`: https://api.jquery.com/html/
- Android `addJavascriptInterface`: https://developer.android.com/reference/android/webkit/WebView#addJavascriptInterface(java.lang.Object,%20java.lang.String)
- Apple — прекращение поддержки `UIWebView`: https://developer.apple.com/documentation/uikit/uiwebview
- Apple — Обновление приложений, использующих Web Views (сроки App Store для UIWebView): https://developer.apple.com/news/?id=12232019b
- Read It Later → ребрендинг в Pocket (17 апреля 2012 г.): https://blog.getpocket.com/2012/04/introducing-the-all-new-read-it-later-now-called-pocket/
---
*Ing. Zampier Zago (FUNFACTOR1) — Секция 1 — Департамент кибербезопасности, PS 1978 Limited — [email protected] — [www.ps1978ltd.it](http://www.ps1978ltd.it) — https://github.com/FUNFACTOR1*
| Поле | Значение |
|---|
| CVE | CVE-2026-82090 — опубликовано 2026-08-28 — CNA: MITRE Corporation |
| Тип уязвимости | DOM-Based XSS (0-click) + злоупотребление JavaScript-мостом |
| CWE | CWE-79, CWE-116 |
| Статус эксплойта | 0-click, 0-day — патч недоступен; продукт снят с поддержки |
| Ответ вендора | 2024-07-11 — «Pocket вне области действия» (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 (обход пейволла) |
| XSS официально сообщён в Mozilla Security | 2024-07-10 |
| Финальный APK выпущен с неустранённой уязвимостью | 2025 — v8.33.0.0 |
| Прекращение обслуживания | 2025-07-08 |
| Происхождение кода | 18 лет — все версии (v0 → v8.33.0.0, 2007 → 2025). Криминалистическое подтверждение кода из пакета iOS 2012 года. |
| Поле | Значение |
|---|
| Тип | DOM-Based Cross-Site Scripting |
| CWE | CWE-79 — Ненадлежащая нейтрализация входных данных при генерации веб-страницы |
| Вторичный CWE | CWE-116 — Ненадлежащее кодирование или экранирование выходных данных |
| Вектор атаки | Удалённый, 0-click (нулевое взаимодействие с пользователем после доставки) |
| Требуемые привилегии | Отсутствуют |
| Область действия | Изменена — контекст WebView пересекает границу доверия в нативный мост Android |
| Метрика | Значение | Обоснование |
|---|
| Вектор атаки (AV) | Сетевой (N) | Полезная нагрузка доставляется и исполняется через интернет |
| Сложность атаки (AC) | Низкая (L) | Нет состояний гонки или защитных механизмов памяти, которые нужно обходить |
| Требования к атаке (AT) | Присутствуют (P) | Пользователь должен сохранить хотя бы одну статью до атаки, чтобы запустить фоновую синхронизацию |
| Требуемые привилегии (PR) | Отсутствуют (N) | Аутентификация на цели не требуется |
| Взаимодействие с пользователем (UI) | Отсутствует (N) | Исполнение автоматическое через фоновую службу после сохранения |
| Конфиденциальность уязвимости (VC) | Высокая (H) | Раскрываются сессионные токены, база данных статей, привычки чтения |
| Целостность уязвимости (VI) | Высокая (H) | JS может изменять состояние приложения через методы нативного моста |
| Доступность уязвимости (VA) | Высокая (H) | Доступность фоновой службы может быть нарушена |
| Последующие (SC / SI / SA) | Отсутствуют (N) | Продемонстрированное воздействие ограничено песочницей приложения Android / границей доверия WebView. Переход к отдельной последующей системе не доказан; SC/SI/SA консервативно установлены в None во избежание завышения оценки |
| Уровень устранения (RL) | Недоступен (U) | Продукт заброшен; исправление не ожидается |
| Дата | Событие | Источник / Стороны |
|---|
| 2021-04-19 | Первоначальный отчёт в службу поддержки Pocket: обход пейволла, позволяющий обойти контроль доступа издателей на итальянских новостных сайтах. Предоставлены видео, скриншоты и примеры URL. | Zampier Zago → [email protected] |
| 2021-04-22 | Ответ службы поддержки Pocket: запрошены конкретные URL и скриншоты. | Pocket Support (Manuel) → Zampier Zago |
| 2021-05-17 | Исследователь предоставил два рабочих PoC-URL, демонстрирующих полный обход контента. | Zampier Zago → [email protected] |
| 2021–2024 | Дальнейших действий вендора не последовало. Первоначальная позиция вендора: «не связано с Pocket». Исследователь сомневался в собственной находке три года из-за категоричного отказа. | — |
| ~июнь 2024 | Исследователь проводит анализ APK, выявляет XSS в WebView (articleview-mobile.js), вектор злоупотребления мостом JavaScript, CWE-79 / CWE-200 / CWE-693. | Zampier Zago |
| 2024-05-31 | Дело официально переоткрыто. Публичное стороннее подтверждение идентичного обхода пейволла (bardeen.ai). Исследователь ссылается на первоначальный отчёт 2021 года. | Zampier Zago → [email protected] |
| 2024-06-06 | Pocket Support (Alejandra Galo): эскалация внутри компании, исправление не обещано. «Наш парсер не предназначен для обхода указанных пейволлов». | Pocket Support → Zampier Zago |
| 2024-07-02 | Исследователь направляет официальное напоминание в Pocket/Mozilla Security Team через тикет поддержки #151540, явно ссылаясь на первый отчёт 2021 года и запрашивая официальное подтверждение. | Zampier Zago → [email protected] |
| 2024-07-04, 13:18 CST | Pocket Support (Dayana Galeano): перенаправляет на [email protected]. «Поскольку вы сообщаете об уязвимости безопасности, рекомендую обратиться вместо этого на [email protected]». | Pocket Support → Zampier Zago |
| 2024-07-10, 21:05 | Исследователь направляет полный технический отчёт по безопасности в Mozilla Security ([email protected]), включая CWE-79 (XSS), CWE-200 (раскрытие информации), CWE-693 (отказ защитного механизма), примеры HTTP-запросов/ответов, демонстрацию XSS-полезной нагрузки и анализ воздействия. | Zampier Zago → [email protected] |
| 2024-07-11, 09:32 | Ответ Mozilla Security (Frida): «Pocket находится вне области нашей программы bug bounty для веб-приложений, и мы принимаем только отчёты с критической степенью серьёзности». Запрошены отдельные обращения через HackerOne. Исправление не обещано. | Mozilla Security Team → Zampier Zago |
| 2024-07-24, 19:00 | Mozilla Privacy Team ([email protected]): перенаправляет на форму bug bounty. Содержательного взаимодействия нет. | Mozilla Privacy Team → Zampier Zago |
| 2025 | Mozilla выпускает v8.33.0.0 как финальную версию Pocket для Android перед закрытием сервиса. Уязвимый код в articleview-mobile.js (строки 95–99) идентичен и не изменён. Патч безопасности не выпущен. Kill-switch или принудительное удаление отсутствуют. | Mozilla (публично) |
| 2025-07-08 | Сервис Pocket официально прекращён. Приложение остаётся установленным и работоспособным на устройствах пользователей. | Mozilla (публично) |
| 2026-01-02 | Видеодоказательство записано на реальном устройстве: Pocket Android v8.33.0.0 полностью работоспособен спустя месяцы после прекращения сервиса. Обход пейволла подтверждён как активный. Фоновые службы подтверждены как работающие. (Доступна сжатая версия; оригинал с полными проверяемыми метаданными предоставляется по запросу.) | Zampier Zago (видеозапись) |
| Аспект | Android v8.33.0.0 (2025) | iOS v4.5.2 (~2012) |
|---|
| Уязвимый файл | assets/html/j/articleview-mobile.js | manifest/cache/j/articleview-mobile.js |
| Уязвимый сток | $(document.body).html(content) L95–99 | $(document.body).html(content) L97–107 |
| Санитизация | Отсутствует | Отсутствует |
| Механизм нативного моста | addJavascriptInterface → PocketAndroidArticleInterface (Java) | Схема URL x-ril-cmd:, перехватываемая делегатом UIWebView (Objective-C) |
| Мост достигает нативного кода | Да | Да |
| Фоновый авто-рендеринг | Да — DownloadingService по BOOT_COMPLETED | Нет — статья должна быть открыта пользователем |
| Требуется взаимодействие с пользователем | Нет (0-click) | Открыть статью (1-click) |
| Транспорт статьи | HTTPS | HTTP в открытом виде (http://text.getpocket.com/v3beta/mobile) на момент анализа бандла — дополнительный вектор MITM в исходном развёртывании (эндпоинт офлайн с момента прекращения работы сервиса) |
| Технология WebView | Современный Android WebView | UIWebView (устарел с iOS 12; не принимается App Store с 2020 года) |