
CVE-2026-82090 · CVSS 9.2 CRITICAL · Mozilla Pocket의 0-click 저장형 XSS — 모든 버전(v0 → v8.33.0.0) · 18년간 영구 미패치 · 패치 없음 · MITRE 공개
저자: Ing. Zampier Zago (FUNFACTOR1) 부서: Section 1 — Department of Cyber Security, 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
DOM 기반 크로스 사이트 스크립팅(XSS) 취약점이 Pocket Android 버전 8.33.0.0(패키지 com.ideashower.readitlater.pro)에서 확인되었으며, 이는 2025년 7월 서비스 종료 전 Mozilla / Read It Later, Inc.가 배포한 최종 릴리스입니다. 이 취약점을 통해 공격자는 단 한 번의 "Save to Pocket" 동작 외에는 사용자 상호작용 없이 애플리케이션의 WebView에서 임의의 JavaScript를 주입하고 실행할 수 있습니다 — 전달 후 0-click 익스플로잇입니다.
근본 원인은 에셋 번들 파일 assets/html/j/articleview-mobile.js(95–99행)에서 jQuery의 .html() 메서드($(document.body).html(content))를 통해 외부 소스의 HTML 콘텐츠를 DOM에 직접 살균 처리 없이 주입하는 것입니다. 콘텐츠는 com.pocket.sdk.offline.DownloadingService에 의해 사용자 상호작용 없이 백그라운드에서 자동으로 가져와 렌더링됩니다.
또한 애플리케이션은 addJavascriptInterface를 통해 등록되고 classes2.dex에서 확인된 네이티브 Java-to-JavaScript 브리지(PocketAndroidArticleInterface)를 노출하며, 이는 WebView 내에서 실행되는 JavaScript에 의해 호출 가능합니다.
벤더 공개 기록: 이 XSS는 2024-07-10에 CWE-79 분류와 전체 기술 세부 정보와 함께 Mozilla Security에 공식 보고되었습니다. Mozilla는 2024-07-11에 접수를 확인하고 Pocket이 범위 밖이라고 선언하며 명시적으로 수정을 거부했습니다. Mozilla는 이후 2025년에 v8.33.0.0을 출시하면서 취약한 코드를 전혀 변경하지 않았습니다. v8.33.0.0의 포렌식 분석은 articleview-mobile.js의 95–99행에서 동일한 취약한 호출을 확인합니다.
계보: 동일한 이름의 파일 articleview-mobile.js에서 동일한 행 — $(document.body).html(content) — 이 iOS 대응 번들 ReadItLaterPro.app(Pocket iOS v4.5.2)에 존재하며, 이는 Read It Later가 Pocket으로 리브랜딩된 2012년 4월 17일 직전 시대로 거슬러 올라갑니다. 이 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이 정제 없이 jQuery 3.4.1의 `.html()` 메서드에 직접 전달됩니다. jQuery 3.4.1은 내장된 `<script>` 태그와 인라인 이벤트 핸들러(`onerror`, `onload`)를 실행합니다. 1,836줄의 파일 어디에도 `DOMPurify`, `sanitize()`, `escapeHtml()` 또는 이에 상응하는 호출이 존재하지 않습니다. `content` 변수는 JS 측 필터링 없이 Java 계층에서 비롯됩니다.
취약한 호출 바로 앞에 있는 `// TODO : 3.0 : If file was missing, handle that correctly` 주석은 이 코드가 프로덕션 수준으로 강화된 적이 없음을 보여줍니다. 이 주석은 최종 릴리스 v8.33.0.0까지 앱의 모든 버전에 존재했습니다.
### 3.3 JavaScript 브리지 증거
**파일:** `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 리시버가 등록된 상태입니다. 이 서비스는 기기 부팅 및 네트워크 사용 가능 시 기사 콘텐츠를 자동으로 가져와 렌더링하며, 사용자 상호작용 없이 숨겨진 WebView에서 loadCallback을 트리거합니다.
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()싱크를 공유하지만, 다른 브리지 메커니즘(UIWebView델리게이트가 가로채는x-ril-cmd:URL 스킴)을 통해 네이티브 코드에 도달하며 1-click 사례(사용자가 저장된 기사를 열어야 함)로 저하된다. iOS 증거는 배포된 앱 번들의 정적 분석을 통해 확립되었으며, 이 저장소의iOS_forensic_analysis_v4.5.2.md에 전체가 문서화되어 있다. 별도의 실행 가능한 iOS PoC는 공개되지 않으며, 공유 코드베이스 분석을 통해 두 플랫폼 간 싱크의 동등성이 입증된다.
전체 벡터: 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 — CRITICAL
모든 날짜는 원본 이메일 증거(POCKET_MAIL.pdf, POCKET_MAIL1.pdf, CRONO2.pdf)를 기준으로 검증되었다.
CVE 기록은 v0부터 v8.33.0.0까지 모든 버전이 영향을 받는 것으로 확인한다. 이 결함은 회귀가 아니라 기사 렌더링 파이프라인의 원래 아키텍처로, 2007년 Read It Later가 Firefox 확장 프로그램으로 출시된 이래로 존재했으며, 모바일 앱(Android는 2011년부터, iOS는 그 이전)으로 이어졌고, 2025년 최종 Android 릴리스까지 변경 없이 배포되었다. 동일한 취약한 싱크에 대한 포렌식 코드 수준 확인은 가장 오래된 사용 가능한 번들(iOS v4.5.2)을 통해 2012년까지 거슬러 올라간다.
ReadItLaterPro.app)iOS 애플리케이션 번들의 이름은 ReadItLaterPro.app 으로, 회사가 2012년 4월 17일 앱을 공개적으로 Pocket으로 리브랜딩하기 전에 Read It Later, Inc.가 사용한 이전 제품명이다. 이 번들은 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은 iOS 8 (2014)에서 후속 기술로 WKWebView를 도입했다. UIWebView는 iOS 12 (2018)에서 공식적으로 폐기되었다. App Store는 2020년 4월에 UIWebView를 사용하는 신규 앱 접수를 중단했고, 2020년 12월에는 기존 앱의 업데이트도 중단했다. UIWebView는 SDK에서 공식적으로 제거된 적이 없다 — 여전히 존재하지만 더 이상 App Store 제출용으로 허용되지 않는다. 여기서 관련된 보안 약점은 프로세스 내에서 실행된다는 점(별도의 WebContent 프로세스 없음), Content Security Policy 지원이 없다는 점, 그리고 stringByEvaluatingJavaScriptFromString:을 통해 주입된 JavaScript를 메인 스레드에서 동기적으로 실행한다는 점이다.
Read It Later, Inc. — 그리고 이후 인수 후 Mozilla — 는 제품의 전체 18년 수명(2007 → 2025)에 걸쳐 동일한 이름의 파일에서, 동일한 미해결 TODO 주석과 함께, 동일한 정제되지 않은 .html() 주입 패턴을 출시했으며, MITRE에 의해 v0부터 v8.33.0.0까지 모든 버전에 영향을 미치는 것으로 확인되었다.
이는 2024-07-10의 공식 CWE-79 보고 이후 기간도 포함한다. 2024–2025년에 최소 하나의 추가 Android 릴리스 라인이 생산되었으며(최종적으로 v8.33.0.0), 취약한 코드가 그대로 보존되었다.
Pocket의 기사 리더는 정제 없이 $(document.body).html(content)를 통해 외부에서 가져온 원시 HTML을 DOM에 주입한다. 95번째 줄의 // TODO 주석은 이 코드가 프로덕션 수준으로 강화된 적이 없음을 확인해 준다. 이러한 아키텍처적 선택은 최초의 모바일 빌드(§7 참조)부터 최종 Android 릴리스 v8.33.0.0까지 존재했으며 — 약 13년과 최소 한 번의 완전한 소유권 이전에 걸쳐 변경되지 않았고, 2024년 7월의 공식 보안 보고 이후에도 변경되지 않았다.
2024년 이후 벤더 대응 타임라인과 공식 CWE-79 보고, Mozilla의 거부, 그리고 최종 미패치 릴리스 사이의 정확한 순서에 대해서는 §6을 참조하라.
벤더 완화책은 존재하지 않으며 앞으로도 나오지 않을 것이다.
최종 사용자용: com.ideashower.readitlater.pro를 즉시 제거하라. Google OAuth 권한을 취소하라.
보안 커뮤니티용: 이 사례는 "Forever-Day" 취약점에 해당한다 — 확인되었고, 패치되지 않았으며, 폐기된 소프트웨어에 있어 사용 가능한 해결 경로가 없다. MITRE EOL 정책에 따라 Unsupported When Assigned 태그로 분류하기에 적합하다.
분석된 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 Corporation(CNA)에 의해 게시됨. 원래 cveform.mitre.org를 통해 CAN-2026-2030598로 제출됨.
**공급업체:** 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 — 웹 뷰를 사용하는 앱 업데이트 (App Store UIWebView 기한): https://developer.apple.com/news/?id=12232019b
- Read It Later → Pocket 리브랜딩 (2012년 4월 17일): https://blog.getpocket.com/2012/04/introducing-the-all-new-read-it-later-now-called-pocket/
---
*Ing. Zampier Zago (FUNFACTOR1) — Section 1 — Department of Cyber Security, 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 기반 XSS (0-click) + JavaScript 브리지 악용 |
| CWE | CWE-79, CWE-116 |
| 익스플로잇 상태 | 0-click, 0-day — 패치 없음; 제품 수명 종료 |
| 벤더 대응 | 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 번들에서 포렌식 코드 확인. |
| 필드 | 값 |
|---|
| 유형 | DOM 기반 크로스 사이트 스크립팅 |
| CWE | CWE-79 — 웹 페이지 생성 중 입력의 부적절한 중화 |
| 보조 CWE | CWE-116 — 출력의 부적절한 인코딩 또는 이스케이프 |
| 공격 벡터 | 원격, 0-click (전달 후 사용자 상호작용 제로) |
| 필요한 권한 | 없음 |
| 범위 | 변경됨 — WebView 컨텍스트가 신뢰 경계를 넘어 네이티브 Android 브리지로 진입 |
| 지표 | 값 | 근거 |
|---|
| 공격 벡터 (AV) | 네트워크 (N) | 페이로드가 인터넷을 통해 전달되고 실행됨 |
| 공격 복잡도 (AC) | 낮음 (L) | 우회해야 할 경쟁 조건이나 메모리 보호 기능 없음 |
| 공격 요구사항 (AT) | 존재 (P) | 백그라운드 동기화를 트리거하려면 사용자가 공격 전에 최소 하나의 기사를 저장한 상태여야 함 |
| 필요 권한 (PR) | 없음 (N) | 대상에 대한 인증 불필요 |
| 사용자 상호작용 (UI) | 없음 (N) | 저장 후 백그라운드 서비스를 통해 자동 실행 |
| 취약점 기밀성 (VC) | 높음 (H) | 세션 토큰, 기사 DB, 독서 습관 노출 |
| 취약점 무결성 (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 때문이 아님." 연구자는 단호한 거부로 인해 3년간 자신의 발견을 의심함. | — |
| ~2024년 6월 | 연구자가 APK 분석을 수행하여 WebView(articleview-mobile.js)의 XSS, JavaScript 브리지 악용 벡터, CWE-79 / CWE-200 / CWE-693을 식별. | Zampier Zago |
| 2024-05-31 | 사건이 공식적으로 재개됨. 동일한 페이월 우회에 대한 공개 제3자 확인(bardeen.ai). 연구자가 원래의 2021년 보고를 참조. | Zampier Zago → [email protected] |
| 2024-06-06 | Pocket Support (Alejandra Galo): 내부적으로 에스컬레이션했으나 수정 약속 없음. "우리 Parser는 해당 Paywall을 우회하도록 설계되지 않았습니다." | Pocket Support → Zampier Zago |
| 2024-07-02 | 연구자가 지원 티켓 #151540을 통해 Pocket/Mozilla 보안팀에 공식 후속 조치를 보내며, 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은 우리 웹 버그 바운티 프로그램의 범위를 벗어나며 우리는 심각도가 critical인 보고서만 접수합니다." 개별 HackerOne 제출 요청. 수정 약속 없음. | Mozilla Security Team → Zampier Zago |
| 2024-07-24, 19:00 | Mozilla Privacy Team ([email protected]): 버그 바운티 양식으로 리디렉션. 실질적인 대응 없음. | Mozilla Privacy Team → Zampier Zago |
| 2025 | Mozilla가 서비스 종료 전 Pocket Android의 최종 버전으로 v8.33.0.0을 출시. articleview-mobile.js(95–99행)의 취약한 코드는 동일하며 수정되지 않음. 보안 패치 배포 없음. 킬 스위치나 강제 제거 없음. | 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) | x-ril-cmd: URL 스킴을 UIWebView 델리게이트가 가로챔 (Objective-C) |
| 브리지가 네이티브 코드에 도달 | 예 | 예 |
| 백그라운드 자동 렌더링 | 예 — BOOT_COMPLETED 시 DownloadingService | 아니오 — 사용자가 기사를 열어야 함 |
| 사용자 상호작용 필요 | 없음 (0-click) | 기사 열기 (1-click) |
| 기사 전송 | HTTPS | 번들 분석 당시 HTTP 평문 (http://text.getpocket.com/v3beta/mobile) — 원래 배포에서 추가적인 MITM 벡터 (서비스 종료 이후 엔드포인트 오프라인) |
| WebView 기술 | 최신 Android WebView | UIWebView (iOS 12에서 폐기됨, 2020년부터 App Store에서 허용되지 않음) |