Contact emails
vk...@google.com
Explainer
https://github.com/explainers-by-googlers/security-info-web-request
Specification
https://github.com/WICG/controlled-frame/pull/151
Design docs
https://github.com/explainers-by-googlers/security-info-web-request
Summary
This proposal introduces a WebRequest.SecurityInfo API for ControlledFrame. It allows a web app to intercept an HTTPS, WSS or WebTransport request to a server, retrieve the server's certificate fingerprint (as verified by the browser), and then use that fingerprint to manually verify the certificate of a separate raw TCP/UDP connection to the same server. This provides a simple way for the app to confirm it's talking to the correct server.
Blink component
Blink
Web Feature ID
Missing feature
Motivation
Web apps sometimes need to establish secure raw TCP/UDP connections (e.g., via Direct Sockets) for custom protocols, often to support legacy servers that cannot be updated to modern alternatives like WebTransport. Unlike standard HTTPS, these raw sockets don't have a built-in mechanism to verify the server's TLS certificate against a trusted root store.
This proposal introduces a WebRequest SecurityInfo API for ControlledFrame. It allows a web app to intercept an HTTPS, WSS or WebTransport request to a server, retrieve the server's certificate fingerprint (as verified by the browser), and then use that fingerprint to manually verify the certificate of a separate raw TCP/UDP connection to the same server. This provides a simple way for the app to confirm it's talking to the correct server.
Initial public proposal
https://github.com/WICG/proposals/issues/245
TAG review
Tag does not review Isolated Web Apps.
It was stated publicly here
https://github.com/w3ctag/design-reviews/issues/842#issuecomment-2917031448
TAG review status
Pending
Risks
Interoperability and Compatibility
Other browsers may choose to implement this API.
Gecko: No signal
WebKit: No signal
Web developers: No signals
Other signals:
Security
This API exposes the server's leaf certificate and fingerprint to the web app. This is not considered a new security or privacy risk.
A web app with Isolated Context and the direct-sockets permission can already open a raw TCP connection to any server, perform a (D)TLS handshake using a WASM library, and retrieve the exact same server certificate.
WebView application risks
Does this intent deprecate or change behavior of existing APIs,
such that it has potentially high risk for Android WebView-based
applications?
No information provided
Debuggability
There's no devTools support for this feature.
Since, this feature itself does not modify any web requests, it gives read-only view into server certificate.
Will this feature be supported on all six Blink platforms
(Windows, Mac, Linux, ChromeOS, Android, and Android WebView)?
No
This feature is implemented on desktop platforms, although it will only be available to the end users on platforms that support Isolated Web Apps, which is currently only ChromeOS.
Android is excluded for historical reasons, although there are no apparent interoperability blockers here.
No
Flag name on about://flags
controlled-frame-web-request-security-info
Finch feature name
kControlledFrameWebRequestSecurityInfo
Rollout plan
Will ship enabled for all users
Requires code in //chrome?
True
Tracking bug
https://g-issues.chromium.org/issues/462114142
Launch bug
https://launch.corp.google.com/launch/4436388
Measurement
Added new values to Extensions.WebRequest.EventListenerFlag
which are securityInfo, securityInfoRawDer
Availability expectation
Feature is available only in Isolated Web Apps on desktop platforms.
https://chromestatus.com/feature/5146307550248960
Adoption expectation
Expected to be used initially by a small number of developers inside Isolated Web Apps.
Adoption plan
Working directly with developers that are planning to rely on the API.
Estimated milestones
| Shipping on desktop | 147 |
| DevTrial on desktop | 145 |
Anticipated spec changes
Open questions about a feature may be a source of future web compat or
interop issues. Please list open issues (e.g. links to known github
issues in the project for the feature specification) whose resolution
may introduce web compat/interop risk (e.g., changing to naming or
structure of the API in a non-backward-compatible way).
No information provided
Link to entry on the Chrome Platform Status
https://chromestatus.com/feature/5076692209106944?gate=6523426508505088
Links to previous Intent discussions
Intent to Prototype:
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/691df8c4.050a0220.2a427a.06b0.GAE%40google.com