Loading...
Skip to main content

CVE-2026-103922 — Vulnerability in @capacitor/ios — CVE Details

CRITICAL

Capacitor Android and iOS: remote content can be loaded at the app origin via the internal HTTP proxy path

Published October 5, 2026Updated October 5, 2026Source: osv

Summary

### Impact Capacitor's WebView navigation guard validated only the **host and scheme** of a target URL, not its **path**. Because the internal HTTP proxy path (`/_capacitor_http_interceptor_`) is served at the application's own origin, a frame navigation to it was always treated as in-app navigation and allowed. Loading that path as a document caused the native layer to fetch an arbitrary, caller-specified URL and return the response body to the WebView **at the app's own origin**. Script in that response then ran with full same-origin trust: access to `localStorage`, cookies, and every native capability the application exposes through its registered Capacitor plugins. The proxy handler was additionally served **regardless of whether the `CapacitorHttp` plugin was enabled**, so applications that never enabled `CapacitorHttp` were also affected. Exploitation requires a victim to activate a link inside the application's WebView. Any Capacitor application that renders user-controlled or unsanitized links (chat messages, comments, rich-text content) is a viable delivery surface. Both **Android and iOS** are affected. ### Patches Two changes on each platform: 1. The navigation guard now blocks frame navigations whose path is the internal proxy path. 2. The proxy handler is served only when `CapacitorHttp` is enabled, and never for a document (main frame) request. Legitimate `CapacitorHttp` usage is unaffected. `fetch` and `XMLHttpRequest` are subresource requests and do not pass through the navigation guard. Upgrade to a patched version, then rebuild and redistribute your application. ### Workarounds If you cannot upgrade immediately, note first that **disabling `CapacitorHttp` is not sufficient** on affected versions, because the proxy path is served regardless of that setting. Registered plugins are consulted before the navigation guard runs, so a small plugin can block the path. On Android, override `shouldOverrideLoad(Uri url)` and return `true` when `url.getPath()` starts with `/_capacitor_http_interceptor_`. On iOS, implement `shouldOverrideLoad(_:)` and return `true` for the same path. Returning `true` cancels the navigation; return `null`/`nil` for all other URLs so normal navigation is unchanged. Independently, sanitize user-controlled link targets before rendering them in the WebView.

Advisory Timeline

  • First published October 5, 2026 (6 days ago).
  • Last revised October 5, 2026 — 0 days after initial publication.

Remediation

Upgrade to the fixed version using your package manager.

npm
Update @capacitor/ios to 8.5.1 or later
npm install @capacitor/ios@8.5.1
Maven
Update com.capacitorjs:core to 8.5.1 or later
<!-- Update pom.xml dependency version to 8.5.1 for com.capacitorjs:core -->
Maven
Update com.capacitorjs:core to 8.4.3 or later
<!-- Update pom.xml dependency version to 8.4.3 for com.capacitorjs:core -->
npm
Update @capacitor/android to 6.2.2 or later
npm install @capacitor/android@6.2.2
npm
Update @capacitor/android to 8.4.3 or later
npm install @capacitor/android@8.4.3
Maven
Update com.capacitorjs:core to 7.6.9 or later
<!-- Update pom.xml dependency version to 7.6.9 for com.capacitorjs:core -->
npm
Update @capacitor/android to 8.5.1 or later
npm install @capacitor/android@8.5.1
npm
Update @capacitor/ios to 8.4.3 or later
npm install @capacitor/ios@8.4.3
Maven
Update com.capacitorjs:core to 6.2.2 or later
<!-- Update pom.xml dependency version to 6.2.2 for com.capacitorjs:core -->
npm
Update @capacitor/ios to 6.2.2 or later
npm install @capacitor/ios@6.2.2
npm
Update @capacitor/android to 7.6.9 or later
npm install @capacitor/android@7.6.9
npm
Update @capacitor/ios to 7.6.9 or later
npm install @capacitor/ios@7.6.9

After upgrading, run your dependency scanner again to confirm the vulnerability is resolved.

Affected Packages (15)

Affects 2 ecosystems: npm (2), maven (1).

PackageEcosystemAffectedFixed In
@capacitor/ios
npm
All versions8.5.1
com.capacitorjs:core
maven
8.5.08.5.1
com.capacitorjs:core
maven
8.4.0, 8.4.1, 8.4.28.4.3
@capacitor/ios
npm
All versionsRange-based data available
@capacitor/android
npm
All versions6.2.2
@capacitor/android
npm
All versions8.4.3
com.capacitorjs:core
maven
7.0.0, 7.0.1, 7.1.0, 7.2.0 (+16 more)7.6.9
@capacitor/android
npm
All versions8.5.1
@capacitor/ios
npm
All versions8.4.3
com.capacitorjs:core
maven
6.0.0, 6.1.0, 6.1.1, 6.1.2 (+2 more)6.2.2
@capacitor/ios
npm
All versions6.2.2
@capacitor/android
npm
All versionsRange-based data available
@capacitor/android
npm
All versions7.6.9
com.capacitorjs:core
maven
8.0.0, 8.0.1, 8.0.2, 8.1.0 (+6 more)Range-based data available
@capacitor/ios
npm
All versions7.6.9

Vulnerability Classification

Common Weakness Enumeration (CWE) identifiers for this vulnerability type.

CVSS Score Breakdown

What the CVSS (Common Vulnerability Scoring System) 9.3 score means for each attack dimension.

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Changed
Confidentiality
High
Integrity
High
Availability
None

CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N

Frequently Asked Questions

What is CVE-2026-103922?
Capacitor Android and iOS: remote content can be loaded at the app origin via the internal HTTP proxy path This vulnerability has been assigned a severity rating of CRITICAL (CVSS score: 9.3/10).
How do I check if my project is affected by CVE-2026-103922?
CVE-2026-103922 affects @capacitor/ios, com.capacitorjs:core and @capacitor/android. Use GeekWala's free vulnerability scanner to check your dependencies against CVE-2026-103922 and 200,000+ other known vulnerabilities.

Severity & Exploitability

CVSS Score
9.3

Exploitation is straightforward and causes maximum impact. Patch immediately.

Also Known As

GHSA-rvm3-566m-v7fv

Related CVEs

Check if you're affected

Scan your dependencies to see if this vulnerability affects your projects.

Scan Your Dependencies