Skip to content

Update dependency @capacitor/ios to v6.2.2 [SECURITY] - #9

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/npm-capacitor-ios-vulnerability
Open

renovate[bot] wants to merge 1 commit into
mainfrom
renovate/npm-capacitor-ios-vulnerability

Conversation

@renovate

@renovate renovate Bot commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
@capacitor/ios (source) 6.1.0 → 6.2.2 age confidence

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

CVE-2026-103922 / GHSA-rvm3-566m-v7fv

More information

Details

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.

Severity

  • CVSS Score: 9.3 / 10 (Critical)
  • Vector String: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


Release Notes

ionic-team/capacitor (@​capacitor/ios)

v6.2.2

Compare Source

Bug Fixes
  • block navigation to the internal HTTP proxy path (d5e3170)
  • block the HTTP proxy path in subframes (85ccc44)
  • publish Capacitor 6 as latest-6 (#​7950) (5ee9161)

v6.2.1

Compare Source

Bug Fixes

v6.2.0

Compare Source

Bug Fixes
Features
  • core: cherrypick: expose methodName via CAPPluginCall (#​7641) (#​7684) (bf6ef8e)
  • ios: cherry-pick - JSValueEncoder/Decoder feature parity with JSONEncoder/Decoder (#​7657) (ce30924)

v6.1.2

Compare Source

Bug Fixes

v6.1.1

Compare Source

Bug Fixes

Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Enabled.

♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants