Security Digest · Vulnerability record
CVE-2026-103922: Capacitor Android and iOS: remote content can be loaded at the app origin via the internal HTTP proxy path
Capacitor is a cross-platform native runtime for web applications.
CVSS 9.3 Critical EPSS 0.2% · p11
Should you act?
Critical and remotely reachable
No known exploitation yet, but it is network-reachable without credentials. This signal is computed from CISA KEV, EPSS and CVSS data; it is not an editorial verdict.
- No confirmed exploitation. It is not in CISA’s KEV catalog and CISA’s SSVC assessment records no known exploitation. That can change quickly after a public write-up; re-check if you are affected.
- EPSS 0.2%, percentile 11: FIRST’s model estimates a 0.2% chance of exploitation activity in the next 30 days, higher than 11% of all scored CVEs (low). EPSS is a probability, not a verdict.
- Needs a user to click or open something. Phishing makes that realistic, but it is not wormable.
- Only applies if your dependency tree includes
@capacitor/android(npm) >= 6.0.0, < 6.2.2, fixed in 6.2.2;@capacitor/android(npm) >= 7.0.0, < 7.6.9, fixed in 7.6.9;@capacitor/ios(npm) >= 6.0.0, < 6.2.2, fixed in 6.2.2;@capacitor/ios(npm) >= 7.0.0, < 7.6.9, fixed in 7.6.9. Check your lockfile, including transitive dependencies.
What it is
Capacitor is a cross-platform native runtime for web applications. From 6.0.0 until 6.2.2, 7.6.9, 8.3.5, 8.4.3, and 8.5.1, the Android and iOS WebView navigation guard validates a target URL's host and scheme but not its path, allowing a victim who activates an untrusted link to navigate a frame to /capacitorhttpinterceptor. The native proxy can fetch an attacker-selected URL and return the response as a document at the application's own origin, allowing script in that response to access same-origin storage, cookies, and registered Capacitor plugin capabilities. Applications remain affected when CapacitorHttp is disabled because affected releases serve the proxy path regardless of that setting. This issue is fixed in versions 6.2.2, 7.6.9, 8.3.5, 8.4.3, and 8.5.1.
From the GitHub advisory
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 (/capacitorhttpinterceptor) 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.
Weakness type: CWE-346, CWE-441.
Product: @capacitor/android (npm) · Assigned by: GitHub_M · Published: 2026-10-01
Affected and fixed versions
| Ecosystem | Package | Vulnerable | First fixed |
|---|---|---|---|
| npm | @capacitor/android | >= 6.0.0, < 6.2.2 | 6.2.2 |
| npm | @capacitor/android | >= 7.0.0, < 7.6.9 | 7.6.9 |
| npm | @capacitor/ios | >= 6.0.0, < 6.2.2 | 6.2.2 |
| npm | @capacitor/ios | >= 7.0.0, < 7.6.9 | 7.6.9 |
| Swift | github.com/ionic-team/capacitor-swift-pm | >= 6.0.0, < 6.2.2 | 6.2.2 |
| Swift | github.com/ionic-team/capacitor-swift-pm | >= 7.0.0, < 7.6.9 | 7.6.9 |
| Maven | com.capacitorjs:core | >= 6.0.0, < 6.2.2 | 6.2.2 |
| Maven | com.capacitorjs:core | >= 7.0.0, < 7.6.9 | 7.6.9 |
| npm | @capacitor/android | >= 8.5.0, < 8.5.1 | 8.5.1 |
| npm | @capacitor/ios | >= 8.5.0, < 8.5.1 | 8.5.1 |
| Swift | github.com/ionic-team/capacitor-swift-pm | >= 8.5.0, < 8.5.1 | 8.5.1 |
| Maven | com.capacitorjs:core | >= 8.5.0, < 8.5.1 | 8.5.1 |
| Maven | com.capacitorjs:core | >= 8.3.5, < 8.4.3 | 8.4.3 |
| npm | @capacitor/android | >= 8.3.5, < 8.4.3 | 8.4.3 |
| npm | @capacitor/ios | >= 8.3.5, < 8.4.3 | 8.4.3 |
| Swift | github.com/ionic-team/capacitor-swift-pm | >= 8.3.5, < 8.4.3 | 8.4.3 |
| Swift | github.com/ionic-team/capacitor-swift-pm | >= 8.0.0, <= 8.3.4 | none listed |
| Maven | com.capacitorjs:core | >= 8.0.0, <= 8.3.4 | none listed |
| npm | @capacitor/android | >= 8.0.0, <= 8.3.4 | none listed |
| npm | @capacitor/ios | >= 8.0.0, <= 8.3.4 | none listed |
| Vendor | Product | Affected versions (per CVE record) |
|---|---|---|
| ionic-team | capacitor | >= 6.0.0, < 6.2.2, >= 7.0.0, < 7.6.9, >= 8.0.0, < 8.3.5, >= 8.3.5, < 8.4.3, >= 8.5.0, < 8.5.1 |
| @capacitor | android | >= 8.5.0, < 8.5.1, >= 8.3.5, < 8.4.3, >= 8.0.0, < 8.3.5, >= 7.0.0, < 7.6.9, >= 6.0.0, < 6.2.2 |
| @capacitor | ios | >= 8.5.0, < 8.5.1, >= 8.3.5, < 8.4.3, >= 8.0.0, < 8.3.5, >= 7.0.0, < 7.6.9, >= 6.0.0, < 6.2.2 |
| com.capacitorjs | core | >= 8.5.0, < 8.5.1, >= 8.3.5, < 8.4.3, >= 8.0.0, < 8.3.5, >= 7.0.0, < 7.6.9, >= 6.0.0, < 6.2.2 |
| swift | github.com/ionic-team/capacitor-swift-pm | >= 8.5.0, < 8.5.1, >= 8.3.5, < 8.4.3, >= 8.0.0, < 8.3.5, >= 7.0.0, < 7.6.9, >= 6.0.0, < 6.2.2 |
Severity scores
| Scored by | CVSS | Score | Vector |
|---|---|---|---|
| GitHub_M | 3.1 | 9.3 Critical | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N |
| GitHub | 3.1 | 9.3 | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N |
- Attack vector: network (remotely reachable)
- Attack complexity: low
- Privileges required: none (no login)
- User interaction: required (a user must click/open something)
- Scope: changed (can affect other components)
CVSS measures how bad a flaw is if exploited, not how likely exploitation is. Read it next to the exploitation data below.
Exploitation and urgency
- CISA KEV: not listed (no confirmed in-the-wild exploitation known to CISA).
- CISA SSVC assessment: exploitation none, automatable no, technical impact total.
- FIRST EPSS (model of 2026-10-21): 0.21% probability of exploitation activity in the next 30 days; percentile 11.
Timeline
- — CVE record last updated
- — CVE record published by GitHub_M
- — GitHub-reviewed advisory GHSA-rvm3-566m-v7fv published (critical)
Sources and references
Original sources first. Version and fix details should always be confirmed against the vendor or project advisory.
Vulnerability records
- GitHub Advisory GHSA-rvm3-566m-v7fv github.com
- CVE.org record CVE-2026-103922 cve.org
- NVD entry CVE-2026-103922 nvd.nist.gov
Other references from the CVE record and advisory
- github.com github.com
- github.com github.com
- github.com github.com
- github.com github.com
- github.com github.com
- github.com github.com
- github.com github.com
- github.com github.com
- github.com github.com