CVE-2026-103922 json
Capacitor Android and iOS: remote content can be loaded at the app origin via the internal HTTP proxy path
published 2026-10-01 38 d ago modified 2026-10-05 34 d ago also EUVD-2026-90973 , GHSA-rvm3-566m-v7fv
- cvss
- 9.3
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.3%
- EPSS 0.3% chance of exploitation in 30 days, percentile 27%
- public exploits
- 0
- none known
Summary
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 /_capacitor_http_interceptor_. 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.
Patch / fix
- npm @capacitor/android 6.2.2, 7.6.9, 8.4.3, 8.5.1
- npm @capacitor/ios 6.2.2, 7.6.9, 8.4.3, 8.5.1
- swift github.com/ionic-team/capacitor-swift-pm 6.2.2, 7.6.9, 8.4.3, 8.5.1
- maven com.capacitorjs:core 6.2.2, 7.6.9, 8.4.3, 8.5.1
- github.com/ionic-team/capacitor@430356a commit
- github.com/ionic-team/capacitor@80b6c5e commit
- github.com/ionic-team/capacitor@85ccc44 commit
- github.com/ionic-team/capacitor@af9a287 commit
- github.com/ionic-team/capacitor@d5e3170 commit
- github.com/ionic-team/capacitor@ee586ae commit
- github.com/ionic-team/capacitor@745b5f8 commit
- github.com/ionic-team/capacitor/releases/tag/8.5.1 release
CISA SSVC
- Exploitation
- none
- Automatable
- no
- Technical impact
- total
- Assessed
- 38 d ago
Exploit prediction
0.34% chance of exploitation in the next 30 days, higher than 27% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 9.3 | 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 |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| npm | @capacitor/android | >=6.0.0, <6.2.2 >=7.0.0, <7.6.9 >=8.5.0, <8.5.1 >=8.3.5, <8.4.3 >=8.0.0, <=8.3.4 |
6.2.2 7.6.9 8.5.1 8.4.3 |
| npm | @capacitor/ios | >=6.0.0, <6.2.2 >=7.0.0, <7.6.9 >=8.5.0, <8.5.1 >=8.3.5, <8.4.3 >=8.0.0, <=8.3.4 |
6.2.2 7.6.9 8.5.1 8.4.3 |
| swift | github.com/ionic-team/capacitor-swift-pm | >=6.0.0, <6.2.2 >=7.0.0, <7.6.9 >=8.5.0, <8.5.1 >=8.3.5, <8.4.3 >=8.0.0, <=8.3.4 |
6.2.2 7.6.9 8.5.1 8.4.3 |
| maven | com.capacitorjs:core | >=6.0.0, <6.2.2 >=7.0.0, <7.6.9 >=8.5.0, <8.5.1 >=8.3.5, <8.4.3 >=8.0.0, <=8.3.4 |
6.2.2 7.6.9 8.5.1 8.4.3 |
Affected products
- ionic-team capacitor
- @capacitor android
- @capacitor ios
- com.capacitorjs core
- swift github.com/ionic-team/capacitor-swift-pm
Classification
References
-
github.com
/ionic-team/capacitor/commit/430356a91e1419fc66862dc09835081aa501677e
web
-
github.com
/ionic-team/capacitor/commit/80b6c5e81d062e1e158914040f49e044d95b7ccb
web
-
github.com
/ionic-team/capacitor/commit/85ccc44151fdd5ae5e0d806d875766ef4b84ad5d
web
-
github.com
/ionic-team/capacitor/commit/af9a287fef45f0ac68ce640cb42fed2d06b0f1b4
web
-
github.com
/ionic-team/capacitor/commit/d5e3170ba0ff155fc542b7e6d16cff5201406540
web
-
github.com
/ionic-team/capacitor/commit/ee586ae680887ba99d066616f976db149542d922
web
-
github.com
/ionic-team/capacitor/commit/745b5f805bf77bc6463977cc7d718cd9de44ccbc
web
-
github.com
/ionic-team/capacitor/security/advisories/GHSA-rvm3-566m-v7fv
web
-
github.com
/ionic-team/capacitor/releases/tag/8.5.1
web
-
nvd.nist.gov
/vuln/detail/CVE-2026-103922
advisory
-
github.com
/ionic-team/capacitor
package
Sources
- CVE List CVE-2026-103922
- GitHub Advisory GHSA-rvm3-566m-v7fv
- NVD CVE-2026-103922
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.