blob: cc5325abfb33089ded92a8106cc77cbbe78e5fa9 [file] [log] [blame] [view]
Chris Palmer554c66e2017-07-29 01:02:561# Chrome Security FAQ
2
3[TOC]
4
Alex Goughe7bcbea2022-05-03 21:45:345## Process
6
7<a name="TOC-Which-bugs-are-valid-for-rewards-under-the-Chrome-Vulnerability-Rewards-program-"></a>
8### Which bugs are valid for rewards under the Chrome Vulnerability Rewards program?
9
10Please see [the VRP FAQ page](vrp-faq.md).
11
Chris Palmer554c66e2017-07-29 01:02:5612<a name="TOC-Why-are-security-bugs-hidden-in-the-Chromium-issue-tracker-"></a>
Alex Goughe7bcbea2022-05-03 21:45:3413### Why are security bugs hidden in the Chromium issue tracker?
Chris Palmer554c66e2017-07-29 01:02:5614
15We must balance a commitment to openness with a commitment to avoiding
16unnecessary risk for users of widely-used open source libraries.
17
18<a name="TOC-Can-you-please-un-hide-old-security-bugs-"></a>
Alex Goughe7bcbea2022-05-03 21:45:3419### Can you please un-hide old security bugs?
Chris Palmer554c66e2017-07-29 01:02:5620
21Our goal is to open security bugs to the public once the bug is fixed and the
22fix has been shipped to a majority of users. However, many vulnerabilities
23affect products besides Chromium, and we don’t want to put users of those
24products unnecessarily at risk by opening the bug before fixes for the other
25affected products have shipped.
26
27Therefore, we make all security bugs public within approximately 14 weeks of the
28fix landing in the Chromium repository. The exception to this is in the event of
29the bug reporter or some other responsible party explicitly requesting anonymity
30or protection against disclosing other particularly sensitive data included in
31the vulnerability report (e.g. username and password pairs).
32
33<a name="TOC-Can-I-get-advance-notice-about-security-bugs-"></a>
Alex Goughe7bcbea2022-05-03 21:45:3434### Can I get advance notice about security bugs?
Chris Palmer554c66e2017-07-29 01:02:5635
36Vendors of products based on Chromium, distributors of operating systems that
37bundle Chromium, and individuals and organizations that significantly contribute
38to fixing security bugs can be added to a list for earlier access to these bugs.
39You can email us at [email protected] to request to join the list if you
40meet the above criteria. In particular, vendors of anti-malware, IDS/IPS,
41vulnerability risk assessment, and similar products or services do not meet this
42bar.
43
44Please note that the safest version of Chrome/Chromium is always the latest
45stable version — there is no good reason to wait to upgrade, so enterprise
46deployments should always track the latest stable release. When you do this,
47there is no need to further assess the risk of Chromium vulnerabilities: we
48strive to fix vulnerabilities quickly and release often.
49
Alex Goughccfbbb52023-05-16 14:42:1950<a name="TOC-How-can-I-know-which-fixes-to-include-in-my-downstream-project-"></a>
Alex Goughc9ab81fd2023-05-15 19:03:1451### How can I know which fixes to include in my downstream project?
52
53Chrome is built with mitigations and hardening which aim to prevent or reduce
54the impact of security issues. We classify bugs as security issues if they are
55known to affect a version and configuration of Chrome that we ship to the
56public. Some classes of bug might present as security issues if Chrome was
57compiled with different flags, or linked against a different C++ standard
58library, but do not with the toolchain and configuration that we use to build
59Chrome. We discuss some of these cases elsewhere in this FAQ.
60
Amy Resslerb35f8e5d2024-02-02 23:12:5461If we become aware of them, these issues may be triaged as `Type=Vulnerability,
62Security_Impact-None` or as `Type=Bug` because they do not affect the production
Alex Goughc9ab81fd2023-05-15 19:03:1463version of Chrome. They may or may not be immediately visible to the public in
64the bug tracker, and may or may not be identified as security issues. If fixes
65are landed, they may or may not be merged from HEAD to a release branch. Chrome
66will only label, fix and merge security issues in Chrome, but attackers can
67still analyze public issues, or commits in the Chromium project to identify bugs
68that might be exploitable in other contexts.
69
70Chromium embedders and other downstream projects may build with different
71compilers, compile options, target operating systems, standard library, or
72additional software components. It is possible that some issues Chrome
73classifies as functional issues will manifest as security issues in a product
74embedding Chromium - it is the responsibility of any such project to understand
75what code they are shipping, and how it is compiled. We recommend using Chrome's
76[configuration](https://source.chromium.org/chromium/chromium/src/+/main:build/config/)
77whenever possible.
78
Chris Palmer554c66e2017-07-29 01:02:5679<a name="TOC-Can-I-see-these-security-bugs-so-that-I-can-back-port-the-fixes-to-my-downstream-project-"></a>
Alex Goughe7bcbea2022-05-03 21:45:3480### Can I see these security bugs so that I can back-port the fixes to my downstream project?
Chris Palmer554c66e2017-07-29 01:02:5681
82Many developers of other projects use V8, Chromium, and sub-components of
83Chromium in their own projects. This is great! We are glad that Chromium and V8
84suit your needs.
85
86We want to open up fixed security bugs (as described in the previous answer),
87and will generally give downstream developers access sooner. **However, please
88be aware that backporting security patches from recent versions to old versions
89cannot always work.** (There are several reasons for this: The patch won't apply
90to old versions; the solution was to add or remove a feature or change an API;
91the issue may seem minor until it's too late; and so on.) We believe the latest
92stable versions of Chromium and V8 are the most stable and secure. We also
93believe that tracking the latest stable upstream is usually less work for
94greater benefit in the long run than backporting. We strongly recommend that you
95track the latest stable branches, and we support only the latest stable branch.
96
Eric Lawrence122e86882017-12-07 22:53:0597<a name="TOC-Severity-Guidelines"></a>
Alex Goughe7bcbea2022-05-03 21:45:3498### How does the Chrome team determine severity of security bugs?
Eric Lawrence122e86882017-12-07 22:53:0599
100See the [severity guidelines](severity-guidelines.md) for more information.
Tom Sepeze8fb33202018-11-01 19:31:32101Only security issues are considered under the security vulnerability rewards
102program. Other types of bugs, which we call "functional bugs", are not.
Eric Lawrence122e86882017-12-07 22:53:05103
Alex Goughe7bcbea2022-05-03 21:45:34104## Threat Model
Chris Palmer554c66e2017-07-29 01:02:56105
Eric Lawrence15fdea252017-08-09 19:37:41106<a name="TOC-Timing-Attacks"></a>
Alex Goughe7bcbea2022-05-03 21:45:34107### Are timing attacks considered security vulnerabilities?
Eric Lawrence15fdea252017-08-09 19:37:41108
109Some timing attacks are considered security vulnerabilities, and some are
110considered privacy vulnerabilities. Timing attacks vary significantly in terms
111of impact, reliability, and exploitability.
112
113Some timing attacks weaken mitigations like ASLR (e.g.
114[Issue 665930](https://crbug.com/665930)). Others attempt to circumvent the same
115origin policy, for instance, by using SVG filters to read pixels
116cross-origin (e.g. [Issue 686253](https://crbug.com/686253) and
117[Issue 615851](https://crbug.com/615851)).
118
119Many timing attacks rely upon the availability of high-resolution timing
120information [Issue 508166](https://crbug.com/508166); such timing data often has
121legitimate usefulness in non-attack scenarios making it unappealing to remove.
122
123Timing attacks against the browser's HTTP Cache (like
124[Issue 74987](https://crbug.com/74987)) can potentially leak information about
125which sites the user has previously loaded. The browser could attempt to protect
126against such attacks (e.g. by bypassing the cache) at the cost of performance
127and thus user-experience. To mitigate against such timing attacks, end-users can
128delete browsing history and/or browse sensitive sites using Chrome's Incognito
129or Guest browsing modes.
130
131Other timing attacks can be mitigated via clever design changes. For instance,
132[Issue 544765](https://crbug.com/544765) describes an attack whereby an attacker
133can probe for the presence of HSTS rules (set by prior site visits) by timing
Eric Lawrence29ca2722018-02-22 19:04:05134the load of resources with URLs "fixed-up" by HSTS. Prior to Chrome 64, HSTS
135rules [were shared](https://crbug.com/774643) between regular browsing and
136Incognito mode, making the attack more interesting. The attack was mitigated by
137changing Content-Security-Policy such that secure URLs will match rules
138demanding non-secure HTTP urls, a fix that has also proven useful to help to
139unblock migrations to HTTPS. Similarly, [Issue 707071](https://crbug.com/707071)
140describes a timing attack in which an attacker could determine what Android
141applications are installed; the attack was mitigated by introducing randomness
142in the execution time of the affected API.
Eric Lawrence15fdea252017-08-09 19:37:41143
Alex Goughe7bcbea2022-05-03 21:45:34144<a name="TOC-What-if-a-Chrome-component-breaks-an-OS-security-boundary-"></a>
145### What if a Chrome component breaks an OS security boundary?
146
147If Chrome or any of its components (e.g. updater) can be abused to
148perform a local privilege escalation, then it may be treated as a
149valid security vulnerability.
150
151Running any Chrome component with higher privileges than intended is
152not a security bug and we do not recommend running Chrome as an
153Administrator on Windows, or as root on POSIX.
154
155<a name="TOC-Why-isn-t-passive-browser-fingerprinting-including-passive-cookies-in-Chrome-s-threat-model-"></a>
156<a name="TOC-What-is-Chrome-s-threat-model-for-fingerprinting-"></a>
157### What is Chrome's threat model for fingerprinting?
158
159> **Update, August 2019:** Please note that this answer has changed. We have
160> updated our threat model to include fingerprinting.
161
162Although [we do not consider fingerprinting issues to be *security
163vulnerabilities*](#TOC-Are-privacy-issues-considered-security-bugs-), we do now
164consider them to be privacy bugs that we will try to resolve. We distinguish two
165forms of fingerprinting.
166
167* **Passive fingerprinting** refers to fingerprinting techniques that do not
168require a JavaScript API call to achieve. This includes (but is not limited to)
169mechanisms like [ETag
170cookies](https://en.wikipedia.org/wiki/HTTP_ETag#Tracking_using_ETags) and [HSTS
171cookies](https://security.stackexchange.com/questions/79518/what-are-hsts-super-cookies).
172* **Active fingerprinting** refers to fingerprinting techniques that do require
173a JavaScript API call to achieve. Examples include most of the techniques in
174[EFF's Panopticlick proof of concept](https://panopticlick.eff.org).
175
176For passive fingerprinting, our ultimate goal is (to the extent possible) to
177reduce the information content available to below the threshold for usefulness.
178
179For active fingerprinting, our ultimate goal is to establish a [privacy
180budget](https://github.com/bslassey/privacy-budget) and to keep web origins
181below the budget (such as by rejecting some API calls when the origin exceeds
182its budget). To avoid breaking rich web applications that people want to use,
183Chrome may increase an origin's budget when it detects that a person is using
184the origin heavily. As with passive fingerprinting, our goal is to set the
185default budget below the threshold of usefulness for fingerprinting.
186
187These are both long-term goals. As of this writing (August 2019) we do not
188expect that Chrome will immediately achieve them.
189
190For background on fingerprinting and the difficulty of stopping it, see [Arvind
191Narayanan's site](https://33bits.wordpress.com/about/) and [Peter Eckersley's
192discussion of the information theory behind
193Panopticlick](https://www.eff.org/deeplinks/2010/01/primer-information-theory-and-privacy).
194There is also [a pretty good analysis of in-browser fingerprinting
195vectors](https://dev.chromium.org/Home/chromium-security/client-identification-mechanisms).
196
197<a name="TOC-I-found-a-phishing-or-malware-site-not-blocked-by-Safe-Browsing.-Is-this-a-security-vulnerability-"></a>
198### I found a phishing or malware site not blocked by Safe Browsing. Is this a security vulnerability?
199
200Malicious sites not yet blocked by Safe Browsing can be reported via
201[https://www.google.com/safebrowsing/report_phish/](https://www.google.com/safebrowsing/report_phish/).
202Safe Browsing is primarily a blocklist of known-unsafe sites; the feature warns
203the user if they attempt to navigate to a site known to deliver phishing or
204malware content. You can learn more about this feature in these references:
205
206* [https://developers.google.com/safe-browsing/](https://developers.google.com/safe-browsing/)
207* [https://www.google.com/transparencyreport/safebrowsing/](https://www.google.com/transparencyreport/safebrowsing/)
208
209In general, it is not considered a security bug if a given malicious site is not
210blocked by the Safe Browsing feature, unless the site is on the blocklist but is
211allowed to load anyway. For instance, if a site found a way to navigate through
212the blocking red warning page without user interaction, that would be a security
213bug. A malicious site may exploit a security vulnerability (for instance,
214spoofing the URL in the **Location Bar**). This would be tracked as a security
215vulnerability in the relevant feature, not Safe Browsing itself.
216
217<a name="TOC-I-can-download-a-file-with-an-unsafe-extension-and-it-is-not-classified-as-dangerous-"></a>
218### I can download a file with an unsafe extension and it is not classified as dangerous - is this a security bug?
219
220Chrome tries to warn users before they open files that might modify their
221system. What counts as a dangerous file will vary depending on the operating
222system Chrome is running on, the default set of file handlers, Chrome settings,
223Enterprise policy and verdicts on both the site and the file from [Safe
224Browsing](https://code.google.com/apis/safebrowsing/). Because of this it will
225often be okay for a user to download and run a file. However, if you can clearly
226demonstrate how to bypass one of these protections then we’d like to hear about
227it. You can see if a Safe Browsing check happened by opening
228chrome://safe-browsing before starting the download.
229
Daniel Ruberyc7ac344232023-10-09 22:16:20230<a name="TOC-what-about-dangerous-file-types-not-listed-in-the-file-type-policy-"></a>
231### What about dangerous file types not listed in the file type policy?
232
233The [file type
234policy](https://source.chromium.org/chromium/chromium/src/+/main:components/safe_browsing/content/resources/download_file_types.asciipb?q=download_file_types.asciipb%20-f:%2Fgen%2F&ss=chromium)
235controls some details of which security checks to enable for a given file
236extension. Most importantly, it controls whether we contact Safe Browsing about
237a download, and whether we show a warning for all downloads of that file type.
238Starting in M74, the default for unknown file types has been to contact Safe
239Browsing. This prevents large-scale abuse from a previously unknown file type.
240Starting in M105, showing a warning for all downloads of an extension became
241reserved for exceptionally dangerous file types that can compromise a user
242without any user interaction with the file (e.g. DLL hijacking). If you discover
243a new file type that meets that condition, we’d like to hear about it.
244
Daseul Leed2b02532024-01-09 15:22:10245<a name="TOC-i-found-a-local-file-or-directory-that-may-be-security-sensitive-and-is-not-blocked-by-file-system-access-api-"></a>
246### I found a local file or directory that may be security-sensitive and is not blocked by File System Access API - is this a security bug?
247
248The File System Access API maintains a [blocklist](https://source.chromium.org/chromium/chromium/src/+/main:chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc;l=266-346)
249of directories and files that may be sensitive such as systems file, and if user
250chooses a file or a directory matching the list on a site using File System
251Access API, the access is blocked.
252
253The blocklist is designed to help mitigate accidental granting by users by
254listing well-known, security-sensitive locations, as a defense in-depth
255strategy. Therefore, the blocklist coverage is not deemed as a security bug,
256especially as it requires user's explicit selection on a file or a directory
257from the file picker.
258
Alex Goughe7bcbea2022-05-03 21:45:34259<a name="TOC-I-can-download-a-file-with-an-unsafe-extension-but-a-different-extension-or-file-type-is-shown-to-the-user-"></a>
260### I can download a file with an unsafe extension but a different extension or file type is shown to the user - is this a security bug?
Alex Gough6d37dae2024-10-02 23:37:36261
262See [file types](#TOC-The-wrong-description-for-a-file-type-is-added-by-Chrome-).
263
Alex Goughe7bcbea2022-05-03 21:45:34264<a name="TOC-Extensions-for-downloaded-files-are-not-shown-in-a-file-dialog-"></a>
265### Extensions for downloaded files are not shown in a file dialog - is this a security bug?
Alex Gough6d37dae2024-10-02 23:37:36266
267See [file types](#TOC-The-wrong-description-for-a-file-type-is-added-by-Chrome-).
268
Alex Goughe7bcbea2022-05-03 21:45:34269<a name="TOC-The-wrong-description-for-a-file-type-is-added-by-Chrome-"></a>
270### The wrong description for a file type is added by Chrome - is this a security bug?
271
272Chrome tries to let users know what they will be saving and downloading before
273they do so. Often operating systems will obscure a file’s type or extension and
274there is little we can do about that. Chrome shows information to help users
275make these decisions, both in Chrome-owned UI and in information that Chrome
276passes to OS-owned UI. If this information can be manipulated from a web site to
277mislead a user, then we’d like to hear about it.
278[Example](https://crbug.com/1137247).
279
280<a name="TOC-I-can-download-a-file-and-OS-indicators-for-its-provenance-are-not-applied-"></a>
281### I can download a file and OS indicators for its provenance are not applied - is this a security bug?
282
283Chrome attempts to label files downloaded from the internet with metadata using
284operating system APIs where these are available – for instance applying the Mark
285of the Web on Windows. This is often not possible (for instance on non-NTFS file
286systems on Windows, or for files inside downloaded archives) or disabled by
287policy. If a web site can cause Chrome to download a file without Chrome then
288adding this metadata as usual, we’d like to hear about it.
289
290<a name="TOC-I-can-cause-a-hard-or-soft-link-to-be-written-to-a-directory-bypassing-normal-OS-blocks-"></a>
291### I can cause a hard or soft link to be written to a directory bypassing normal OS blocks - is this a security bug?
292
293Chrome should not allow filesystem links to be created by initiating a download.
294[Example](https://crbug.com/1140417). [Example](https://crbug.com/1137247#c12).
295
296<a name="TOC-I-can-hijack-a-user-gesture-and-trick-a-user-into-accepting-a-permission-or-downloading-a-file-"></a>
297### I can hijack a user gesture and trick a user into accepting a permission or downloading a file - is this a security bug?
298
299Chrome tries to design its prompts to select safe defaults. If a prompt can
300accidentally be accepted without the user having an opportunity to make a
301decision about the prompt then we’d like to know. Examples might include poor
302defaults so that a user holding down an enter key might accept a dialog they
303would want to dismiss. [Example](https://crbug.com/854455#c11).
304
305Note that a user navigating to a download will cause a file to be
306[downloaded](https://crbug.com/1114592).
307
Arthur Sonzognib89b25f2024-02-13 16:11:22308<a name="TOC-security-properties-not-inherited-using-contextual-menu-"></a>
309### Sandbox/CSP/etc... security properties are not inherited when navigating using the middle-click/contextual-menu - is this a security bug?
310
311The security properties of the document providing the URL are not used/inherited
312when the user deliberately opens a link in a popup using one of:
313
314- Ctrl + left-click (Open link in new tab)
315- Shift + left-click (Open link in new window)
316- Middle-click (Open a link in a new tab)
317- Right-click > "Open link in ..."
318
319These methods of following a link have more or less the same implications as the
320user copying the link's URL and pasting it into a newly-opened window. We treat
321them as user-initiated top-level navigations, and as such will not apply or
322inherit policy restrictions into the new context
323
324Example of security related properties:
325
326- Content-Security-Policy
327- Cross-Origin-Embedder-Policy
328- Cross-Origin-Opener-Policy
329- Origin
330- Referrer
331- Sandbox
332- etc...
333
334These browser's actions/shortcuts are specific to Chrome. They are different
335from the behavior specified by the web-platform, such as using executing
336`window.open()` or opening a link with the `target=_blank` attribute.
337
Chris Palmer5649f942024-09-25 19:46:29338<a name="TOC-What-is-the-threat-model-for-Chrome-for-Testing"></a>
Adrian Taylorfe24932e2024-05-15 15:59:56339### What is the threat model for Chrome for Testing?
340
341[Chrome for Testing](https://developer.chrome.com/blog/chrome-for-testing) is a
342distribution of current and older versions of Chrome. It does not auto-update.
343Therefore, it may lack recent fixes for security bugs. Security bugs can more
344easily be exploited once their fixes are [published in the main Chromium source
345code repository](updates.md) and so it is unsafe to use Chrome for Testing to
346access any untrusted website. You should use Chrome for Testing only for
347browser automation and testing purposes, consuming only trustworthy content.
348`chrome-headless-shell` also lacks auto-updates and so, for the same reason,
349should only be used to consume trusted content.
350
Elly40a123e2025-05-23 15:59:34351<a name="TOC-What-makes-a-ui-spoof-interesting-to-report"></a>
352### What makes a UI spoof interesting to report?
353As a general rule, a UI spoof is only a security bug if _either_:
354
355* There is evidence that it is actually being exploited to trick users in the
356 field, or
357* You can make a convincing case that it would mislead a user into making a
358 _security decision_ incorrectly, or otherwise taking an action with actual
359 security consequences for that user
360
361That means that for example these are interesting security bugs:
362
363* A spoof that convinces the user they are currently on origin A when in fact
364 they are on origin B
365* A spoof that convinces the user that a permission request is from origin A
366 when in fact it is from origin B
367* A spoof that convinces the user they are installing extension A when in fact
368 they are installing extension B
369
370and so on, but for example these are **not** interesting security bugs:
371
372* A spoof that convinces the user to copy text they didn't expect to their
373 clipboard
374* A spoof that convinces the user to download a file they didn't expect (simply
375 downloading a file is not a security decision - running it is though!)
376* A spoof that convinces the user to navigate to a link they didn't expect
377* A spoof that convinces the user to click a browser UI element they weren't
378 intending to _unless you can show security consequences for them doing so_.
379
380We often tend to look at what a "reasonable and prudent" user would do in a
381situation, meaning a user who is taking basic security precautions like paying
382attention to security cues given in the product UI and who is, while not a
383security expert or even particularly security-minded, trying to take basic
384precautions to stay safe online. That doesn't mean bugs that require user error
385are always out of scope, but it does mean that spoofs which would not deceive
386a user being reasonable and prudent are out of scope.
387
Alex Goughe7bcbea2022-05-03 21:45:34388## Areas outside Chrome's Threat Model
389
390<a name="TOC-Are-privacy-issues-considered-security-bugs-"></a>
391### Are privacy issues considered security bugs?
392
393No. The Chrome Privacy team treats privacy issues, such as leaking information
394from Incognito, fingerprinting, and bugs related to deleting browsing data as
395functional bugs.
396
397Privacy issues are not considered under the security vulnerability rewards
398program; the [severity guidelines](severity-guidelines.md) outline the types of
399bugs that are considered security vulnerabilities in more detail.
400
Chris Palmer554c66e2017-07-29 01:02:56401<a name="TOC-What-are-the-security-and-privacy-guarantees-of-Incognito-mode-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34402### What are the security and privacy guarantees of Incognito mode?
Chris Palmer554c66e2017-07-29 01:02:56403
404Bugs in Incognito mode are tracked as privacy bugs, not security bugs.
405
Chris Palmer9839ce42017-08-16 20:59:15406The [Help Center](https://support.google.com/chrome/?p=cpn_incognito) explains
407what privacy protections Incognito mode attempts to enforce. In particular,
408please note that Incognito is not a “do not track” mode, and it does not hide
409aspects of your identity from web sites. Chrome does offer a way to send Do Not
410Track request to servers; see chrome://settings/?search=do+not+track
Chris Palmer554c66e2017-07-29 01:02:56411
412When in Incognito mode, Chrome does not store any new history, cookies, or other
413state in non-volatile storage. However, Incognito windows will be able to access
414some previously-stored state, such as browsing history.
415
Alex Goughe7bcbea2022-05-03 21:45:34416<a name="TOC-Are-XSS-filter-bypasses-considered-security-bugs-"></a>
417### Are XSS filter bypasses considered security bugs?
418
419No. Chromium once contained a reflected XSS filter called the [XSSAuditor](https://www.chromium.org/developers/design-documents/xss-auditor)
420that was a best-effort second line of defense against reflected XSS flaws found
421in web sites. The XSS Auditor was [removed in Chrome 78](https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/TuYw-EZhO9g/blGViehIAwAJ).
Tom Sepezfd089b8f2023-08-09 17:31:44422Consequently, Chromium no longer takes any special action in response to an
423X-XSS-Protection header.
Alex Goughe7bcbea2022-05-03 21:45:34424
Chris Palmer554c66e2017-07-29 01:02:56425<a name="TOC-Are-denial-of-service-issues-considered-security-bugs-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34426### Are denial of service issues considered security bugs?
Chris Palmer554c66e2017-07-29 01:02:56427
Tom Sepeze8fb33202018-11-01 19:31:32428No. Denial of Service (DoS) issues are treated as **abuse** or **stability**
429issues rather than security vulnerabilities.
Chris Palmer554c66e2017-07-29 01:02:56430
Lukasz Anforowicza2be83462024-02-15 20:49:12431* If you find a reproducible crash (e.g. a way to hit a `CHECK`),
432 we encourage you to [report it](https://issues.chromium.org/new).
Chris Palmer554c66e2017-07-29 01:02:56433* If you find a site that is abusing the user experience (e.g. preventing you
434 from leaving a site), we encourage you to [report
Amy Resslerb35f8e5d2024-02-02 23:12:54435 it](https://issues.chromium.org/new).
Chris Palmer554c66e2017-07-29 01:02:56436
437DoS issues are not considered under the security vulnerability rewards program;
Varun Khanejadf1bc00e2017-08-10 05:22:40438the [severity guidelines](severity-guidelines.md) outline the types of bugs that
439are considered security vulnerabilities in more detail.
Chris Palmer554c66e2017-07-29 01:02:56440
Chris Palmer554c66e2017-07-29 01:02:56441<a name="TOC-Why-aren-t-physically-local-attacks-in-Chrome-s-threat-model-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34442### Why aren't physically-local attacks in Chrome's threat model?
Chris Palmer554c66e2017-07-29 01:02:56443
444People sometimes report that they can compromise Chrome by installing a
445malicious DLL in a place where Chrome will load it, by hooking APIs (e.g. [Issue
446130284](https://crbug.com/130284)), or by otherwise altering the configuration
Tom Sepezf6b2e782020-04-06 23:08:55447of the device.
Chris Palmer554c66e2017-07-29 01:02:56448
449We consider these attacks outside Chrome's threat model, because there is no way
450for Chrome (or any application) to defend against a malicious user who has
Tom Sepezf6b2e782020-04-06 23:08:55451managed to log into your device as you, or who can run software with the
Chris Palmer554c66e2017-07-29 01:02:56452privileges of your operating system user account. Such an attacker can modify
453executables and DLLs, change environment variables like `PATH`, change
454configuration files, read any data your user account owns, email it to
Tom Sepezf6b2e782020-04-06 23:08:55455themselves, and so on. Such an attacker has total control over your device,
Chris Palmer554c66e2017-07-29 01:02:56456and nothing Chrome can do would provide a serious guarantee of defense. This
457problem is not special to Chrome ­— all applications must trust the
458physically-local user.
459
460There are a few things you can do to mitigate risks from people who have
461physical control over **your** computer, in certain circumstances.
462
463* To stop people from reading your data in cases of device theft or loss, use
464 full disk encryption (FDE). FDE is a standard feature of most operating
465 systems, including Windows Vista and later, Mac OS X Lion and later, and
466 some distributions of Linux. (Some older versions of Mac OS X had partial
467 disk encryption: they could encrypt the user’s home folder, which contains
468 the bulk of a user’s sensitive data.) Some FDE systems allow you to use
469 multiple sources of key material, such as the combination of both a
470 password and a key file on a USB token. When available, you should use
471 multiple sources of key material to achieve the strongest defense. Chrome
472 OS encrypts users’ home directories.
473* If you share your computer with other people, take advantage of your
474 operating system’s ability to manage multiple login accounts, and use a
475 distinct account for each person. For guests, Chrome OS has a built-in
476 Guest account for this purpose.
477* Take advantage of your operating system’s screen lock feature.
478* You can reduce the amount of information (including credentials like
479 cookies and passwords) that Chrome will store locally by using Chrome's
480 Content Settings (chrome://settings/content) and turning off the form
481 auto-fill and password storage features
482 ([chrome://settings/search#password](chrome://settings/search#password)).
483
484There is almost nothing you can do to mitigate risks when using a **public**
485computer.
486
487* Assume everything you do on a public computer will become, well, public.
488 You have no control over the operating system or other software on the
489 machine, and there is no reason to trust the integrity of it.
Eric Lawrence29ca2722018-02-22 19:04:05490* If you must use such a computer, use Incognito mode and close all Incognito
491 windows when you are done browsing to limit the amount of data you leave
492 behind. Note that Incognito mode **provides no protection** if the system has
493 already been compromised as described above.
Chris Palmer554c66e2017-07-29 01:02:56494
495<a name="TOC-Why-aren-t-compromised-infected-machines-in-Chrome-s-threat-model-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34496### Why aren't compromised/infected machines in Chrome's threat model?
Chris Palmer554c66e2017-07-29 01:02:56497
Tom Sepez279d9f42020-11-30 21:58:58498Although the attacker may now be remote, the consequences are essentially the
499same as with physically-local attacks. The attacker's code, when it runs as
500your user account on your machine, can do anything you can do. (See also
501[Microsoft's Ten Immutable Laws Of
Eric Lawrence5e1a9c712018-09-12 20:55:19502Security](https://web.archive.org/web/20160311224620/https://technet.microsoft.com/en-us/library/hh278941.aspx).)
Chris Palmer554c66e2017-07-29 01:02:56503
Tom Sepez279d9f42020-11-30 21:58:58504Other cases covered by this section include leaving a debugger port open to
505the world, remote shells, and so forth.
506
Alex Gough5d0d5562024-11-11 22:45:23507<a name="TOC-If-a-website-can-open-an-android-app-via-an-intent"></a>
508### If a website can open an Android app via an intent is this a security bug?
509
510No - websites can link to external handlers or applications - but there are
511restrictions around requiring a user gesture and the type of intent that can
512be launched. Full details are available in the
513[external_intents](../../components/external_intents/README.md) documentation.
514
Chris Palmer554c66e2017-07-29 01:02:56515<a name="TOC-Does-entering-JavaScript:-URLs-in-the-URL-bar-or-running-script-in-the-developer-tools-mean-there-s-an-XSS-vulnerability-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34516### Does entering JavaScript: URLs in the URL bar or running script in the developer tools mean there's an XSS vulnerability?
Chris Palmer554c66e2017-07-29 01:02:56517
Eric Lawrence29ca2722018-02-22 19:04:05518[No](https://crbug.com/81697). Chrome does not attempt to prevent the user from
519knowingly running script against loaded documents, either by entering script in
520the Developer Tools console or by typing a JavaScript: URI into the URL bar.
521Chrome and other browsers do undertake some efforts to prevent *paste* of script
522URLs in the URL bar (to limit
Chris Palmer554c66e2017-07-29 01:02:56523[social-engineering](https://blogs.msdn.microsoft.com/ieinternals/2011/05/19/socially-engineered-xss-attacks/))
524but users are otherwise free to invoke script against pages using either the URL
525bar or the DevTools console.
526
Tom Sepez5b700482020-04-06 20:07:21527<a name="TOC-Does-executing-JavaScript-from-a-bookmark-mean-there-s-an-XSS-vulnerability-"></a>
Eric Lawrence2de6aaa2023-04-13 17:06:55528### Does executing JavaScript from a bookmark or the Home button mean there's an XSS vulnerability?
Tom Sepez5b700482020-04-06 20:07:21529
530No. Chromium allows users to create bookmarks to JavaScript URLs that will run
Chris Palmer554c66e2017-07-29 01:02:56531on the currently-loaded page when the user clicks the bookmark; these are called
532[bookmarklets](https://en.wikipedia.org/wiki/Bookmarklet).
533
Eric Lawrence2de6aaa2023-04-13 17:06:55534Similarly, the Home button may be configured to invoke a JavaScript URL when clicked.
535
Tom Sepezfeca2de2020-04-01 22:58:29536<a name="TOC-Does-executing-JavaScript-in-a-PDF-file-mean-there-s-an-XSS-vulnerability-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34537### Does executing JavaScript in a PDF file mean there's an XSS vulnerability?
Tom Sepezfeca2de2020-04-01 22:58:29538
539No. PDF files have the ability to run JavaScript, usually to facilitate field
540validation during form fill-out. Note that the set of bindings provided to
Tom Sepez72119c3c2022-12-13 18:48:56541the PDF are more limited than those provided by the DOM to HTML documents, nor
542do PDFs get any ambient authority based upon the domain from which they are
543served (e.g. no document.cookie).
Tom Sepezfeca2de2020-04-01 22:58:29544
Alex Goughe7bcbea2022-05-03 21:45:34545<a name="TOC-Are-PDF-files-static-content-in-Chromium-"></a>
546### Are PDF files static content in Chromium?
Chris Palmer554c66e2017-07-29 01:02:56547
Alex Goughe7bcbea2022-05-03 21:45:34548No. PDF files have some powerful capabilities including invoking printing or
Andrew Mitchell327571a2025-02-17 04:14:09549posting form data. To mitigate abuse of these capabilities, such as beaconing
Alex Goughe7bcbea2022-05-03 21:45:34550upon document open, we require interaction with the document (a "user gesture")
551before allowing their use.
Chris Palmer554c66e2017-07-29 01:02:56552
Charlie Reis65c9a4b2024-11-14 18:25:43553<a name="TOC-Are-non_committed-URLs-entered-by-the-user-considered-URL-spoofs-"></a>
554### Are non-committed URLs entered by the user considered URL spoofs?
555
556No. When a user enters a URL into the address bar (whether by typing,
557copy/pasting, drag and drop, or otherwise), Chrome intentionally displays
558it instead of the last committed URL of the currently active page, until
559both the navigation begins and the new page commits. During this time, the
560currently active page can change its appearance to mimic the new URL while
561its own URL is not shown. However, the active page does not have control
562over which URL the user entered into the address bar, limiting the
563effectiveness of a spoof attempt. The new
564[lock-replacement icon](https://blog.chromium.org/2023/05/an-update-on-lock-icon.html)
565is also not present in this state, and in many cases (i.e., once the new
566navigation has started), the loading indicators are present.
567
568The confusion between the non-committed URL and the active page's
569appearance is a consequence of the address bar needing to serve two roles:
Elly40a123e2025-05-23 15:59:34570showing both where you are and where you are going. In general, we don't think
571this technique can deceive a [reasonable and prudent
572user](#TOC-What-makes-a-ui-spoof-interesting-to-report).
Charlie Reis65c9a4b2024-11-14 18:25:43573
574See also https://crbug.com/378932942 for context.
575
Alex Goughe7bcbea2022-05-03 21:45:34576<a name="TOC-What-about-URL-spoofs-using-Internationalized-Domain-Names-IDN-"></a>
577### What about URL spoofs using Internationalized Domain Names (IDN)?
Chris Palmer554c66e2017-07-29 01:02:56578
Alex Goughe7bcbea2022-05-03 21:45:34579We try to balance the needs of our international userbase while protecting users
580against confusable homograph attacks. Despite this, there are a list of known
581IDN display issues we are still working on.
Chris Palmer554c66e2017-07-29 01:02:56582
Alex Goughe7bcbea2022-05-03 21:45:34583* Please see [this document](https://docs.google.com/document/d/1_xJz3J9kkAPwk3pma6K3X12SyPTyyaJDSCxTfF8Y5sU)
584for a list of known issues and how we handle them.
585* [This document](https://chromium.googlesource.com/chromium/src/+/main/docs/idn.md)
586describes Chrome's IDN policy in detail.
Chris Palmer554c66e2017-07-29 01:02:56587
Alex Goughe7bcbea2022-05-03 21:45:34588<a name="TOC-Chrome-silently-syncs-extensions-across-devices.-Is-this-a-security-vulnerability-"></a>
589### Chrome silently syncs extensions across devices. Is this a security vulnerability?
Chris Palmer554c66e2017-07-29 01:02:56590
Alex Goughe7bcbea2022-05-03 21:45:34591This topic has been moved to the [Extensions Security FAQ](https://chromium.googlesource.com/chromium/src/+/main/extensions/docs/security_faq.md).
Chris Palmer8d95482a2019-08-28 22:48:45592
Alex Goughe7bcbea2022-05-03 21:45:34593<a name="TOC-Why-arent-null-pointer-dereferences-considered-security-bugs-"></a>
594### Why aren't null pointer dereferences considered security bugs?
Chris Palmer8d95482a2019-08-28 22:48:45595
Alex Goughe7bcbea2022-05-03 21:45:34596Null pointer dereferences with consistent, small, fixed offsets are not considered
597security bugs. A read or write to the NULL page results in a non-exploitable crash.
Daniel Cheng78780d22024-01-06 06:47:43598If the offset is larger than 32KB, or if there's uncertainty about whether the
Alex Goughe7bcbea2022-05-03 21:45:34599offset is controllable, it is considered a security bug.
Chris Palmer8d95482a2019-08-28 22:48:45600
Daniel Cheng78780d22024-01-06 06:47:43601All supported Chrome platforms do not allow mapping memory in at least the first
60232KB of address space:
603
604- Windows: Windows 8 and later disable mapping the first 64k of address space;
605 see page 33 of [Exploit Mitigation Improvements in Windows
606 8][windows-null-page-mapping] [[archived]][windows-null-page-mapping-archived].
607- Mac and iOS: by default, the linker reserves the first 4GB of address space
608 with the `__PAGEZERO` segment for 64-bit binaries.
609- Linux: the default `mmap_min_addr` value for supported distributions is at
610 least 64KB.
611- Android: [CTS][android-mmap_min_addr] enforces that `mmap_min_addr` is set to
612 exactly 32KB.
613- ChromeOS: the [ChromeOS kernels][chromeos-mmap_min_addr] set the default
614 `mmap_min_addr` value to at least 32KB.
615- Fuchsia: the [userspace base address][fuchsia-min-base-address] begins at 2MB;
616 this is configured per-platform but set to the same value on all platforms.
617
618[windows-null-page-mapping]: https://media.blackhat.com/bh-us-12/Briefings/M_Miller/BH_US_12_Miller_Exploit_Mitigation_Slides.pdf
619[windows-null-page-mapping-archived]: https://web.archive.org/web/20230608131033/https://media.blackhat.com/bh-us-12/Briefings/M_Miller/BH_US_12_Miller_Exploit_Mitigation_Slides.pdf
620[android-mmap_min_addr]: https://android.googlesource.com/platform/cts/+/496152a250d10e629d31ac90b2e828ad77b8d70a/tests/tests/security/src/android/security/cts/KernelSettingsTest.java#43
621[chromeos-mmap_min_addr]: https://source.chromium.org/search?q=%22CONFIG_DEFAULT_MMAP_MIN_ADDR%3D%22%20path:chromeos%2F&ss=chromiumos%2Fchromiumos%2Fcodesearch:src%2Fthird_party%2Fkernel%2F
622[fuchsia-min-base-address]: https://cs.opensource.google/fuchsia/fuchsia/+/main:zircon/kernel/arch/arm64/include/arch/kernel_aspace.h;l=20;drc=eeceea01eee2615de74b1339bcf6e6c2c6f72769
623
Alex Gough2d9974c2023-04-11 20:47:57624<a name="TOC-Indexing-a-container-out-of-bounds-hits-a-libcpp-verbose-abort--is-this-a-security-bug-"></a>
625### Indexing a container out of bounds hits a __libcpp_verbose_abort, is this a security bug?
626
627`std::vector` and other containers are now protected by libc++ hardening on all
628platforms [crbug.com/1335422](https://crbug.com/1335422). Indexing these
629containers out of bounds is now a safe crash - if a proof-of-concept reliably
630causes a crash in production builds we consider these to be functional rather than
631security issues.
632
Alex Goughe7bcbea2022-05-03 21:45:34633<a name="TOC-Are-stack-overflows-considered-security-bugs-"></a>
634### Are stack overflows considered security bugs?
635
636No. Guard pages mean that stack overflows are considered unexploitable, and
637are regarded as [denial of service bugs](#TOC-Are-denial-of-service-issues-considered-security-bugs-).
638The only exception is if an attacker can jump over the guard pages allocated by
639the operating system and avoid accessing them, e.g.:
640
641* A frame with a very large stack allocation.
642* C variable length array with an attacker-controlled size.
643* A call to `alloca()` with an attacker-controlled size.
644
danakjc8fb82602024-07-09 16:36:09645<a name="TOC-Are-tint-ICE-considered-security-bugs-"></a>
646### Are tint shader compiler Internal Compiler Errors considered security bugs?
647
648No. When tint fails and throws an ICE (Internal Compiler Error), it will
649terminate the process in an intentional manner and produce no shader output.
650Thus there is not security bug that follows from it.
651
Alex Goughe7bcbea2022-05-03 21:45:34652<a name="TOC-Are-enterprise-admins-considered-privileged-"></a>
653### Are enterprise admins considered privileged?
654
655Chrome [can't guard against local
656attacks](#TOC-Why-aren-t-physically-local-attacks-in-Chrome-s-threat-model-).
657Enterprise administrators often have full control over the device. Does Chrome
658assume that enterprise administrators are as privileged and powerful as other
659local users? It depends:
660
661* On a fully managed machine, for example a [domain-joined Windows
662 machine](https://docs.microsoft.com/en-us/windows-server/identity/ad-fs/deployment/join-a-computer-to-a-domain),
663 a device managed via a Mobile Device Management product, or a device with
664 Chrome managed via machine-level [Chrome Browser Cloud
665 Management](https://support.google.com/chrome/?p=cloud_management),
666 the administrator effectively has privileges to view and mutate any state on
667 the device. Chrome [policy implementations](../enterprise/add_new_policy.md)
668 should still guide enterprise admins to the most user-respectful defaults
669 and policy description text should clearly describe the nature of the
670 capabilities and the user impact of them being granted.
671* On an unmanaged machine, Chrome profiles [can be managed via cloud
672 policy](https://support.google.com/chrome/?p=manage_profiles)
673 if users sign into Chrome using a managed account. These policies are called
674 *user policies*. In this scenario, the Chrome enterprise administrator should
675 have privileges only to *view and mutate state within the profile that they
676 administer*. Any access outside that profile requires end-user consent.
677
678Chrome administrators can force-install Chrome extensions without permissions
679prompts, so the same restrictions must apply to the Chrome extension APIs.
680
681Chrome has a long history of policy support with many hundreds of policies. We
682recognize that there may exist policies or policy combinations that can provide
683capabilities outside of the guidance provided here. In cases of clear violation
684of user expectations, we will attempt to remedy these policies and we will apply
685the guidance laid out in this document to any newly added policies.
686
Camille0f2a39f2022-11-04 10:45:04687See the [Web Platform Security
Chris Thompson1f8b00062023-05-31 00:38:49688guidelines](https://chromium.googlesource.com/chromium/src/+/main/docs/security/web-platform-security-guidelines.md#enterprise-policies)
Camille0f2a39f2022-11-04 10:45:04689for more information on how enterprise policies should interact with Web
690Platform APIs.
691
Alex Goughe7bcbea2022-05-03 21:45:34692<a name="TOC-Can-I-use-EMET-to-help-protect-Chrome-against-attack-on-Microsoft-Windows-"></a>
693### Can I use EMET to help protect Chrome against attack on Microsoft Windows?
694
695There are [known compatibility
696problems](https://sites.google.com/a/chromium.org/dev/Home/chromium-security/chromium-and-emet)
697between Microsoft's EMET anti-exploit toolkit and some versions of Chrome. These
698can prevent Chrome from running in some configurations. Moreover, the Chrome
699security team does not recommend the use of EMET with Chrome because its most
700important security benefits are redundant with or superseded by built-in attack
701mitigations within the browser. For users, the very marginal security benefit is
702not usually a good trade-off for the compatibility issues and performance
703degradation the toolkit can cause.
704
Arthur Sonzognicbc5d692024-05-08 10:37:20705<a name="TOC-dangling-pointers"></a>
706### Dangling pointers
707
708Chromium can be instrumented to detect [dangling
709pointers](https://chromium.googlesource.com/chromium/src/+/main/docs/dangling_ptr.md):
710
711Notable build flags are:
712- `enable_dangling_raw_ptr_checks=true`
Kalvin Lee3f1e9eda2024-07-18 21:53:23713- `use_raw_ptr_asan_unowned_impl=true`
Arthur Sonzognicbc5d692024-05-08 10:37:20714
715Notable runtime flags are:
716- `--enable-features=PartitionAllocDanglingPtr`
717
718It is important to note that detecting a dangling pointer alone does not
719necessarily indicate a security vulnerability. A dangling pointer becomes a
720security vulnerability only when it is dereferenced and used after it becomes
721dangling.
722
723In general, dangling pointer issues should be assigned to feature teams as
724ordinary bugs and be fixed by them. However, they can be considered only if
725there is a demonstrable way to show a memory corruption. e.g. with a POC causing
726crash with ASAN **without the flags above**.
727
Chris Thompsonac5fdf42025-01-30 16:18:00728<a name="TOC-hard-coded-lists"></a>
729### My domain is on the [Public Suffix List / HSTS preload list / etc.] upstream but this is not yet reflected in Chrome! Is this a security bug?
730
731Chrome does not make any guarantees about how soon additions to or removals from
732external lists like the [HSTS preload list](https://hstspreload.org) or the
733[Public Suffix List (PSL)](https://publicsuffix.org/) will be incorporated into Chrome.
734If you believe Chrome's copies of these lists are notably out-of-date, we are
735happy to field bug reports but we do not consider this to be a vulnerability.
736
Alex Gough272f4cc2025-05-09 18:25:14737## AI Generated Vulnerability reports
738
739<a name="TOC-should-i-ask-an-ai-to-generate-a-vulnerability-report-for-chrome"></a>
740### Should I ask an AI to Generate a Vulnerability Report for Chrome?
741
742Simply asking an AI to identify a bug report in Chrome is unlikely to yield a
743valid report. Before submitting a report generated by AI please ensure you have
744done enough human work to validate that any issue is (a) in our threat model,
745and (b) reachable in Chrome by constructing a POC, generating an ASAN trace,
746recording the bug reproducing, or performing your own debugging.
747
748AI is prone to hallucinations when asked to find security bugs and can generate
749reports that repeat previously fixed issues, or describe general classes of bugs
750without discovering a specific actionable issue. As the reports can be lengthy,
751they take a lot of time for our security experts to process and understand
752before closing. Submitting reports without doing some work yourself to validate
753that an issue is actually present in Chrome harms our users by wasting the time
754and resources of the Chrome security team.
755
756Submitting multiple low-quality AI generated reports will be treated as spamming
757and has lead to accounts being banned from our reporting systems.
758
759AI can be used to accelerate developer workflows and may be useful when
760understanding code or translating from one language to another. AI tools can be
761helpful when searching for security vulnerabilities in Chrome, but remember that
762additional work must be done to ensure that vulnerability reports are brief,
763actionable, and reproducible. These must meet the prerequisites of a [baseline
764security bug report](https://g.co/chrome/vrp#report-quality) before we can pass
765them to teams to be fixed.
766
Alex Goughe7bcbea2022-05-03 21:45:34767## Certificates & Connection Indicators
Chris Palmer554c66e2017-07-29 01:02:56768
769<a name="TOC-Where-are-the-security-indicators-located-in-the-browser-window-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34770### Where are the security indicators located in the browser window?
Chris Palmer554c66e2017-07-29 01:02:56771
772The topmost portion of the browser window, consisting of the **Omnibox** (or
773**Location Bar**), navigation icons, menu icon, and other indicator icons, is
774sometimes called the browser **chrome** (not to be confused with the Chrome
775Browser itself). Actual security indicators can only appear in this section of
776the window. There can be no trustworthy security indicators elsewhere.
777
778Furthermore, Chrome can only guarantee that it is correctly representing URLs
779and their origins at the end of all navigation. Quirks of URL parsing, HTTP
780redirection, and so on are not security concerns unless Chrome is
781misrepresenting a URL or origin after navigation has completed.
782
783Browsers present a dilemma to the user since the output is a combination of
784information coming from both trustworthy sources (the browser itself) and
785untrustworthy sources (the web page), and the untrustworthy sources are allowed
786virtually unlimited control over graphical presentation. The only restriction on
787the page's presentation is that it is confined to the large rectangular area
788directly underneath the chrome, called the **viewport**. Things like hover text
789and URL preview(s), shown in the viewport, are entirely under the control of the
790web page itself. They have no guaranteed meaning, and function only as the page
791desires. This can be even more confusing when pages load content that looks like
792chrome. For example, many pages load images of locks, which look similar to the
793meaningful HTTPS lock in the Omnibox, but in fact do not convey any meaningful
794information about the transport security of that page.
795
796When the browser needs to show trustworthy information, such as the bubble
797resulting from a click on the lock icon, it does so by making the bubble overlap
Ryan Dicksonbbcdf3d2022-11-16 19:43:51798chrome. This visual detail can't be imitated by the page itself since the page
799is confined to the viewport.
Chris Palmer554c66e2017-07-29 01:02:56800
Ryan Dicksonbbcdf3d2022-11-16 19:43:51801<a name="TOC-Why-does-Chrome-show-a-lock-even-if-my-HTTPS-connection-is-being-proxied-"></a>
802### Why does Chrome show a lock, even if my HTTPS connection is being proxied?
Chris Palmer554c66e2017-07-29 01:02:56803
804Some types of software intercept HTTPS connections. Examples include anti-virus
805software, corporate network monitoring tools, and school censorship software. In
806order for the interception to work, you need to install a private trust anchor
807(root certificate) onto your computer. This may have happened when you installed
808your anti-virus software, or when your company's network administrator set up
809your computer. If that has occurred, your HTTPS connections can be viewed or
810modified by the software.
811
812Since you have allowed the trust anchor to be installed onto your computer,
813Chrome assumes that you have consented to HTTPS interception. Anyone who can add
814a trust anchor to your computer can make other changes to your computer, too,
815including changing Chrome. (See also [Why aren't physically-local attacks in
Avi Drissman36d4e2e2017-07-31 20:54:39816Chrome's threat model?](#TOC-Why-aren-t-physically-local-attacks-in-Chrome-s-threat-model-).)
Chris Palmer554c66e2017-07-29 01:02:56817
818<a name="TOC-Why-can-t-I-select-Proceed-Anyway-on-some-HTTPS-error-screens-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34819### Why can’t I select Proceed Anyway on some HTTPS error screens?
Chris Palmer554c66e2017-07-29 01:02:56820
821A key guarantee of HTTPS is that Chrome can be relatively certain that it is
822connecting to the true web server and not an impostor. Some sites request an
823even higher degree of protection for their users (i.e. you): they assert to
824Chrome (via Strict Transport Security —
Xiaoyin Liub7985e52017-09-21 18:07:46825[HSTS](https://tools.ietf.org/html/rfc6797) — or by other means) that any
Chris Palmer554c66e2017-07-29 01:02:56826server authentication error should be fatal, and that Chrome must close the
827connection. If you encounter such a fatal error, it is likely that your network
828is under attack, or that there is a network misconfiguration that is
829indistinguishable from an attack.
830
831The best thing you can do in this situation is to raise the issue to your
832network provider (or corporate IT department).
833
834Chrome shows non-recoverable HTTPS errors only in cases where the true server
835has previously asked for this treatment, and when it can be relatively certain
836that the current server is not the true server.
837
838<a name="TOC-How-does-key-pinning-interact-with-local-proxies-and-filters-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34839### How does key pinning interact with local proxies and filters?
Chris Palmer554c66e2017-07-29 01:02:56840
841To enable certificate chain validation, Chrome has access to two stores of trust
Ryan Dicksonbbcdf3d2022-11-16 19:43:51842anchors (i.e., certificates that are empowered as issuers). One trust anchor
Alex Goughc9ab81fd2023-05-15 19:03:14843store is for authenticating public internet servers, and depending on the
Ryan Dicksonbbcdf3d2022-11-16 19:43:51844version of Chrome being used and the platform it is running on, the
845[Chrome Root Store](https://chromium.googlesource.com/chromium/src/+/main/net/data/ssl/chrome_root_store/faq.md#what-is-the-chrome-root-store)
846might be in use. The private store contains certificates installed by the user
847or the administrator of the client machine. Private intranet servers should
848authenticate themselves with certificates issued by a private trust anchor.
Chris Palmer554c66e2017-07-29 01:02:56849
850Chrome’s key pinning feature is a strong form of web site authentication that
851requires a web server’s certificate chain not only to be valid and to chain to a
852known-good trust anchor, but also that at least one of the public keys in the
853certificate chain is known to be valid for the particular site the user is
854visiting. This is a good defense against the risk that any trust anchor can
855authenticate any web site, even if not intended by the site owner: if an
856otherwise-valid chain does not include a known pinned key (“pin”), Chrome will
857reject it because it was not issued in accordance with the site operator’s
858expectations.
859
860Chrome does not perform pin validation when the certificate chain chains up to a
861private trust anchor. A key result of this policy is that private trust anchors
862can be used to proxy (or
Ryan Dicksonbbcdf3d2022-11-16 19:43:51863[MITM](https://en.wikipedia.org/wiki/Man-in-the-middle_attack)) connections,
864even to pinned sites. “Data loss prevention” appliances, firewalls, content
865filters, and malware can use this feature to defeat the protections of key
866pinning.
Chris Palmer554c66e2017-07-29 01:02:56867
868We deem this acceptable because the proxy or MITM can only be effective if the
869client machine has already been configured to trust the proxy’s issuing
870certificate — that is, the client is already under the control of the person who
871controls the proxy (e.g. the enterprise’s IT administrator). If the client does
872not trust the private trust anchor, the proxy’s attempt to mediate the
873connection will fail as it should.
874
Adam Langleyc078ba82018-12-17 17:25:46875<a name="TOC-When-is-key-pinning-enabled-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34876### When is key pinning enabled?
Adam Langleyc078ba82018-12-17 17:25:46877
Eric Lawrence542967372024-12-02 22:13:58878Key pinning is enabled for Chrome-branded non-iOS builds when the local
Adam Langleyc078ba82018-12-17 17:25:46879clock is within ten weeks of the embedded build timestamp. Key pinning is a
880useful security measure but it tightly couples client and server configurations
881and completely breaks when those configurations are out of sync. In order to
882manage that risk we need to ensure that we can promptly update pinning clients
Chris Palmer59877ec2019-11-22 01:28:09883in an emergency and ensure that non-emergency changes can be deployed in a
Adam Langleyc078ba82018-12-17 17:25:46884reasonable timeframe.
885
886Each of the conditions listed above helps ensure those properties:
887Chrome-branded builds are those that Google provides and they all have an
Eric Lawrence542967372024-12-02 22:13:58888auto-update mechanism that can be used in an emergency. Even in cases where
889auto-update is generally effective, there are still non-trivial populations
890of stragglers for various reasons. The ten-week timeout prevents those
891stragglers from causing problems for regular, non-emergency changes and
Adam Langleyc078ba82018-12-17 17:25:46892allows stuck users to still, for example, conduct searches and access Chrome's
893homepage to hopefully get unstuck.
894
895In order to determine whether key pinning is active, try loading
Francois Mariere1b8e702023-07-07 05:25:08896[https://pinning-test.badssl.com/](https://pinning-test.badssl.com/). If key
Adam Langleyc078ba82018-12-17 17:25:46897pinning is active the load will _fail_ with a pinning error.
898
Chris Palmer38d751d002017-08-23 17:37:35899<a name="TOC-How-does-certificate-transparency-interact-with-local-proxies-and-filters-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34900### How does Certificate Transparency interact with local proxies and filters?
Chris Palmer38d751d002017-08-23 17:37:35901
Chris Palmer413f3c02017-08-23 17:47:54902Just as [pinning only applies to publicly-trusted trust
903anchors](#TOC-How-does-key-pinning-interact-with-local-proxies-and-filters-),
904Chrome only evaluates Certificate Transparency (CT) for publicly-trusted trust
905anchors. Thus private trust anchors, such as for enterprise middle-boxes and AV
906proxies, do not need to be publicly logged in a CT log.
Chris Palmer38d751d002017-08-23 17:37:35907
Chris Palmer554c66e2017-07-29 01:02:56908<a name="TOC-Why-are-some-web-platform-features-only-available-in-HTTPS-page-loads-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34909### Why are some web platform features only available in HTTPS page-loads?
Chris Palmer554c66e2017-07-29 01:02:56910
911The full answer is here: we [Prefer Secure Origins For Powerful New
912Features](https://www.chromium.org/Home/chromium-security/prefer-secure-origins-for-powerful-new-features).
913In short, many web platform features give web origins access to sensitive new
914sources of information, or significant power over a user's experience with their
Eric Romaned127b672018-01-23 19:36:38915computer/phone/watch/etc., or over their experience with it. We would therefore
Chris Palmer554c66e2017-07-29 01:02:56916like to have some basis to believe the origin meets a minimum bar for security,
917that the sensitive information is transported over the Internet in an
Eric Romaned127b672018-01-23 19:36:38918authenticated and confidential way, and that users can make meaningful choices
Chris Palmer554c66e2017-07-29 01:02:56919to trust or not trust a web origin.
920
921Note that the reason we require secure origins for WebCrypto is slightly
922different: An application that uses WebCrypto is almost certainly using it to
923provide some kind of security guarantee (e.g. encrypted instant messages or
924email). However, unless the JavaScript was itself transported to the client
925securely, it cannot actually provide any guarantee. (After all, a MITM attacker
926could have modified the code, if it was not transported securely.)
927
Camille0f2a39f2022-11-04 10:45:04928See the [Web Platform Security
Chris Thompson1f8b00062023-05-31 00:38:49929guidelines](https://chromium.googlesource.com/chromium/src/+/main/docs/security/web-platform-security-guidelines.md#encryption)
Camille0f2a39f2022-11-04 10:45:04930for more information on security guidelines applicable to web platform APIs.
931
Chris Palmer554c66e2017-07-29 01:02:56932<a name="TOC-Which-origins-are-secure-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34933### Which origins are "secure"?
Chris Palmer554c66e2017-07-29 01:02:56934
935Secure origins are those that match at least one of the following (scheme, host,
936port) patterns:
937
938* (https, *, *)
939* (wss, *, *)
940* (*, localhost, *)
941* (*, 127/8, *)
942* (*, ::1/128, *)
943* (file, *, —)
944* (chrome-extension, *, —)
945
946That is, secure origins are those that load resources either from the local
947machine (necessarily trusted) or over the network from a
948cryptographically-authenticated server. See [Prefer Secure Origins For Powerful
949New
950Features](https://sites.google.com/a/chromium.org/dev/Home/chromium-security/prefer-secure-origins-for-powerful-new-features)
951for more details.
952
953<a name="TOC-What-s-the-story-with-certificate-revocation-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34954### What's the story with certificate revocation?
Chris Palmer554c66e2017-07-29 01:02:56955
Ryan Dicksonbbcdf3d2022-11-16 19:43:51956Chrome's primary mechanism for checking certificate revocation status is
Joe DeBlasio0c6480712024-07-04 00:11:51957[CRLSets](https://dev.chromium.org/Home/chromium-security/crlsets).
Ryan Dicksonbbcdf3d2022-11-16 19:43:51958Additionally, by default, [stapled Online Certificate Status Protocol (OCSP)
959responses](https://en.wikipedia.org/wiki/OCSP_stapling) are honored.
Chris Palmer554c66e2017-07-29 01:02:56960
Joe DeBlasio0c6480712024-07-04 00:11:51961As of 2024, Chrome enforces most security-relevant certificate revocations that
962are visible via Certificate Revocation Lists (CRLs) published to the
963[CCADB](https://www.ccadb.org/) via CRLSets. There is some inherent delay in
964getting revocation information to Chrome clients, but most revocations should
965reach most users within a few days of appearing on a CA's CRL.
966
967Chrome clients do not, by default, perform "online" certificate revocation
968status checks using CRLs directly or via OCSP URLs included in certificates.
969This is because online checks offer limited security value unless a client, like
danakjc8fb82602024-07-09 16:36:09970Chrome, refuses to connect to a website if it cannot get a valid response,
Chris Palmer554c66e2017-07-29 01:02:56971
Ryan Dicksonbbcdf3d2022-11-16 19:43:51972Unfortunately, there are many widely-prevalent causes for why a client
973might be unable to get a valid certificate revocation status response to
974include:
975* timeouts (e.g., an OCSP responder is online but does not respond within an
Alex Goughc9ab81fd2023-05-15 19:03:14976 acceptable time limit),
977* availability issues (e.g., the OCSP responder is offline),
978* invalid responses (e.g., a "stale" or malformed status response), and
979* local network attacks misrouting traffic or blocking responses.
Chris Palmer554c66e2017-07-29 01:02:56980
Alex Goughc9ab81fd2023-05-15 19:03:14981Additional concern with OCSP checks are related to privacy. OCSP
Ryan Dicksonbbcdf3d2022-11-16 19:43:51982requests reveal details of individuals' browsing history to the operator of the
983OCSP responder (i.e., a third party). These details can be exposed accidentally
984(e.g., via data breach of logs) or intentionally (e.g., via subpoena). Chrome
985used to perform revocation checks for Extended Validation certificates, but that
986behavior was disabled in 2022 for [privacy reasons](https://groups.google.com/a/mozilla.org/g/dev-security-policy/c/S6A14e_X-T0/m/T4WxWgajAAAJ).
Chris Palmer554c66e2017-07-29 01:02:56987
Ryan Dicksonbbcdf3d2022-11-16 19:43:51988The following enterprise policies can be used to change the default revocation
989checking behavior in Chrome, though these may be removed in the future:
990* [enable soft-fail OCSP](https://chromeenterprise.google/policies/#EnableOnlineRevocationChecks)
991* [hard-fail for local trust anchors](https://chromeenterprise.google/policies/#RequireOnlineRevocationChecksForLocalAnchors).
Chris Palmer554c66e2017-07-29 01:02:56992
Alex Goughe7bcbea2022-05-03 21:45:34993## Passwords & Local Data
994
995<a name="TOC-What-about-unmasking-of-passwords-with-the-developer-tools-"></a>
996### What about unmasking of passwords with the developer tools?
997
998One of the most frequent reports we receive is password disclosure using the
999Inspect Element feature (see [Issue 126398](https://crbug.com/126398) for an
1000example). People reason that "If I can see the password, it must be a bug."
1001However, this is just one of the [physically-local attacks described in the
1002previous
1003section](#TOC-Why-aren-t-physically-local-attacks-in-Chrome-s-threat-model-),
1004and all of those points apply here as well.
1005
1006The reason the password is masked is only to prevent disclosure via
1007"shoulder-surfing" (i.e. the passive viewing of your screen by nearby persons),
1008not because it is a secret unknown to the browser. The browser knows the
1009password at many layers, including JavaScript, developer tools, process memory,
1010and so on. When you are physically local to the computer, and only when you are
1011physically local to the computer, there are, and always will be, tools for
1012extracting the password from any of these places.
1013
1014<a name="TOC-Is-Chrome-s-support-for-userinfo-in-HTTP-URLs-e.g.-http:-user:password-example.com-considered-a-vulnerability-"></a>
1015### Is Chrome's support for userinfo in HTTP URLs (e.g. http://user:[email protected]) considered a vulnerability?
1016
1017[Not at this time](https://crbug.com/626951). Chrome supports HTTP and HTTPS
1018URIs with username and password information embedded within them for
1019compatibility with sites that require this feature. Notably, Chrome will
1020suppress display of the username and password information after navigation in
1021the URL box to limit the effectiveness of spoofing attacks that may try to
1022mislead the user. For instance, navigating to
1023`http://[email protected]` will show an address of
1024`http://evil.example.com` after the page loads.
1025
Tom Sepez83fd1f612022-07-18 21:21:271026Note: We often receive reports calling this an "open redirect". However, it has
1027nothing to do with redirection; rather the format of URLs is complex and the
1028userinfo may be misread as a host.
1029
Chris Palmer554c66e2017-07-29 01:02:561030<a name="TOC-Why-does-the-Password-Manager-ignore-autocomplete-off-for-password-fields-"></a>
Alex Goughe7bcbea2022-05-03 21:45:341031### Why does the Password Manager ignore `autocomplete='off'` for password fields?
Chris Palmer554c66e2017-07-29 01:02:561032
1033Ignoring `autocomplete='off'` for password fields allows the password manager to
1034give more power to users to manage their credentials on websites. It is the
1035security team's view that this is very important for user security by allowing
1036users to have unique and more complex passwords for websites. As it was
1037originally implemented, autocomplete='off' for password fields took control away
1038from the user and gave control to the web site developer, which was also a
1039violation of the [priority of
Adam Barth3a3bfef2021-10-06 02:36:441040constituencies](https://www.schemehostport.com/2011/10/priority-of-constituencies.html).
Chris Palmer554c66e2017-07-29 01:02:561041For a longer discussion on this, see the [mailing list
1042announcement](https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/zhhj7hCip5c).
1043
Eric Lawrence122e86882017-12-07 22:53:051044<a name="TOC-Signout-of-Chrome"></a>
Alex Goughe7bcbea2022-05-03 21:45:341045### Signing out of Chrome does not delete previously-synced data?
Eric Lawrence122e86882017-12-07 22:53:051046
1047If you have signed into Chrome and subsequently sign out of Chrome, previously
1048saved passwords and other data are not deleted from your device unless you
1049select that option when signing out of Chrome.
1050
1051If you change your Google password, synced data will no longer be updated in
1052Chrome instances until you provide the new password to Chrome on each device
1053configured to sync. However, previously synced data [remains available](https://crbug.com/792967)
1054on each previously-syncing device unless manually removed.
1055
Chris Palmer554c66e2017-07-29 01:02:561056<a name="TOC-Why-doesn-t-the-Password-Manager-save-my-Google-password-if-I-am-using-Chrome-Sync-"></a>
Alex Goughe7bcbea2022-05-03 21:45:341057### Why doesn't the Password Manager save my Google password if I am using Chrome Sync?
Chris Palmer554c66e2017-07-29 01:02:561058
1059In its default mode, Chrome Sync uses your Google password to protect all the
1060other passwords in the Chrome Password Manager.
1061
1062In general, it is a bad idea to store the credential that protects an asset in
1063the same place as the asset itself. An attacker who could temporarily compromise
1064the Chrome Password Manager could, by stealing your Google password, obtain
1065continuing access to all your passwords. Imagine you store your valuables in a
1066safe, and you accidentally forget to close the safe. If a thief comes along,
1067they might steal all of your valuables. That’s bad, but imagine if you had also
1068left the combination to the safe inside as well. Now the bad guy has access to
1069all of your valuables and all of your future valuables, too. The password
1070manager is similar, except you probably would not even know if a bad guy
1071accessed it.
1072
1073To prevent this type of attack, Chrome Password Manager does not save the Google
1074password for the account you sync with Chrome. If you have multiple Google
1075accounts, the Chrome Password Manager will save the passwords for accounts other
1076than the one you are syncing with.
1077
1078<a name="TOC-Does-the-Password-Manager-store-my-passwords-encrypted-on-disk-"></a>
Alex Goughe7bcbea2022-05-03 21:45:341079### Does the Password Manager store my passwords encrypted on disk?
Chris Palmer554c66e2017-07-29 01:02:561080
1081Chrome generally tries to use the operating system's user storage mechanism
1082wherever possible and stores them encrypted on disk, but it is platform
1083specific:
1084
1085* On Windows, Chrome uses the [Data Protection API
1086 (DPAPI)](https://msdn.microsoft.com/en-us/library/ms995355.aspx) to bind
1087 your passwords to your user account and store them on disk encrypted with
1088 a key only accessible to processes running as the same logged on user.
Viktor Semeniuk3720fc42024-04-03 09:33:521089* On macOS and iOS, Chrome previously stored credentials directly in the user's
Chris Palmer554c66e2017-07-29 01:02:561090 Keychain, but for technical reasons, it has switched to storing the
1091 credentials in "Login Data" in the Chrome users profile directory, but
1092 encrypted on disk with a key that is then stored in the user's Keychain.
Viktor Semeniuk3720fc42024-04-03 09:33:521093 See [Issue 466638](https://crbug.com/466638) and [Issue 520437](https://crbug.com/520437) for further explanation.
Christos Froussios2a02cc52019-07-30 07:04:461094* On Linux, Chrome previously stored credentials directly in the user's
Tom Anderson761687a2023-06-14 17:27:391095 Gnome Secret Service or KWallet, but for technical reasons, it has switched to
Christos Froussios2a02cc52019-07-30 07:04:461096 storing the credentials in "Login Data" in the Chrome user's profile directory,
1097 but encrypted on disk with a key that is then stored in the user's Gnome
Tom Anderson761687a2023-06-14 17:27:391098 Secret Service or KWallet. If there is no available Secret Service or KWallet,
1099 the data is not encrypted when stored.
Viktor Semeniuk3720fc42024-04-03 09:33:521100* On Android, Chrome doesn't store in the profile anymore, instead it uses Google
1101 Play Services to access passwords stored on a device.
1102* On ChromeOS passwords are only obfuscated since all profile data is encrypted
1103 by the OS.
Chris Palmer554c66e2017-07-29 01:02:561104
Adrian Taylorae8545252021-05-27 17:16:511105<a name="TOC-If-theres-a-way-to-see-stored-passwords-without-entering-a-password--is-this-a-security-bug-"></a>
Alex Goughe7bcbea2022-05-03 21:45:341106### If there's a way to see stored passwords without entering a password, is this a security bug?
Adrian Taylorae8545252021-05-27 17:16:511107
1108No. If an attacker has control of your login on your device, they can get to
1109your passwords by inspecting Chrome disk files or memory. (See
1110[why aren't physically-local attacks in Chrome's threat
1111model](#TOC-Why-aren-t-physically-local-attacks-in-Chrome-s-threat-model-)).
1112
1113On some platforms we ask for a password before revealing stored passwords,
1114but this is not considered a robust defense. It’s historically to stop
1115users inadvertently revealing their passwords on screen, for example if
1116they’re screen sharing. We don’t do this on all platforms because we consider
1117such risks greater on some than on others.
1118
Martin Kreichgauer8788fc622024-09-11 21:06:191119
1120<a name="TOC-On-some-websites-I-can-use-a-passkey-without-passing-a-lock-screen-or-biometric-challenge-is-this-a-security-bug"></a>
1121### On some websites, I can use passkeys without passing a lock screen or biometric challenge. Is this a security bug?
1122
1123Probably not. When a website requests a passkeys signature, it can choose
1124whether the authenticator should perform user verification (e.g. with a local
1125user lock screen challenge). Unless the website sets user verification parameter
1126in the request to 'required', the passkey authenticator can choose to skip the
1127lock screen challenge. Authenticators commonly skip an optional challenge if
1128biometrics are unavailable (e.g. on a laptop with a closed lid).
1129
1130If you can demonstrate bypassing the user verification challenge where the
1131request user verification parameter is set to 'required', please
1132[report it](https://issues.chromium.org/issues/new?noWizard=true&component=1363614&template=1922342).
1133
Alex Goughe7bcbea2022-05-03 21:45:341134## Other
Alex Gough8dc4f562022-04-18 22:14:051135
Chris Palmer554c66e2017-07-29 01:02:561136<a name="TOC-What-is-the-security-story-for-Service-Workers-"></a>
Alex Goughe7bcbea2022-05-03 21:45:341137### What is the security story for Service Workers?
Chris Palmer554c66e2017-07-29 01:02:561138
1139See our dedicated [Service Worker Security
Eric Lawrence [MSFT]f80579552021-04-22 18:39:261140FAQ](https://chromium.googlesource.com/chromium/src/+/main/docs/security/service-worker-security-faq.md).
Chris Palmer554c66e2017-07-29 01:02:561141
Devlin Cronin7304fec2021-06-02 22:51:261142<a name="TOC-What-is-the-security-story-for-Extensions-"></a>
Alex Goughe7bcbea2022-05-03 21:45:341143### What is the security story for Extensions?
Devlin Cronin7304fec2021-06-02 22:51:261144
1145See our dedicated [Extensions Security FAQ](https://chromium.googlesource.com/chromium/src/+/main/extensions/docs/security_faq.md).
Adrian Taylord57a4c62022-11-10 10:27:501146
Adrian Taylor1bbbf142023-08-29 17:41:171147<a name="TOC-What-is-the-security-model-for-Chrome-Custom-Tabs-"></a>
1148### What's the security model for Chrome Custom Tabs?
1149
1150See our [Chrome Custom Tabs security FAQ](custom-tabs-faq.md).
1151
Muyao Xu1d58c632025-03-05 19:01:141152<a name="TOC-What-is-the-security-story-for-Fullscreen-"></a>
1153### What is the security story for Fullscreen?
1154
1155See our dedicated [Fullscreen Security FAQ](https://chromium.googlesource.com/chromium/src/+/main/docs/security/fullscreen.md).
1156
Adrian Taylor98e9c792024-04-29 18:59:231157<a name="TOC-How-is-security-different-in-Chrome-for-iOS--"></a>
1158### How is security different in Chrome for iOS?
1159
1160Chrome for iOS does not use Chrome's standard rendering engine. Due to Apple's
1161iOS platform restrictions, it instead uses Apple's WebKit engine and a more
1162restricted process isolation model. This means its security properties are
1163different from Chrome on all other platforms.
1164
1165The differences in security are far too extensive to list exhaustively, but some
1166notable points are:
1167
1168* Chromium's [site
1169 isolation](https://www.chromium.org/Home/chromium-security/site-isolation/)
1170 isn't used; WebKit has its own alternative implementation with different costs
1171 and benefits.
1172* WebKit has [historically been slower at shipping security
1173 fixes](https://googleprojectzero.blogspot.com/2022/02/a-walk-through-project-zero-metrics.html).
1174* Chrome's network stack, [root
1175 store](https://www.chromium.org/Home/chromium-security/root-ca-policy/) and
1176 associated technology are not used, so
1177 the platform will make different decisions about what web servers to trust.
1178* Sandboxing APIs are not available for native code.
1179
1180Given that the fundamentals of the browser are so different, and given these
1181limitations, Chrome for iOS has historically not consistently implemented some
1182of Chrome's [standard security guidelines](rules.md). This includes the
1183important [Rule of Two](rule-of-2.md). Future Chrome for iOS features should
1184meet all guidelines except in cases where the lack of platform APIs make it
1185unrealistic. (The use of WebAssembly-based sandboxing is currently considered
1186unrealistic though this could change in future.)
1187
1188If the Rule of Two cannot be followed, features for Chrome for iOS should
1189nevertheless follow it as closely as possible, and adopt additional mitigations
1190where they cannot:
1191
1192* First consider adding a validation layer between unsafe code and web contents,
1193 or adopting memory-safe parsers at the boundary between the renderer and the
1194 browser process. Consider changing the design of the feature so the riskiest
1195 parsing can happen in javascript injected in the renderer process.
1196* Any unsafe unsandboxed code that is exposed to web contents or other
1197 untrustworthy data sources must be extensively tested and fuzzed.
1198
1199The Chrome team is enthusiastic about the future possibility of making a version
1200of Chrome for iOS that meets our usual security standards if richer platform
1201facilities become widely available: this will require revisiting existing
1202features to see if adjustment is required.
1203
Adrian Taylor82a534b2023-05-09 19:21:201204<a name="TOC-Are-all-Chrome-updates-important--"></a>
1205### Are all Chrome updates important?
1206
1207Yes - see [our updates FAQ](updates.md).
1208
1209<a name="TOC-What-older-Chrome-versions-are-supported--"></a>
1210### What older Chrome versions are supported?
1211
1212We always recommend being on the most recent Chrome stable version - see
1213[our updates FAQ](updates.md).
1214
Adrian Taylord57a4c62022-11-10 10:27:501215<a name="TOC-Im-making-a-Chromium-based-browser-how-should-I-secure-it-"></a>
1216### I'm making a Chromium-based browser. How should I secure it?
1217
1218If you want to make a browser based on Chromium, you should stay up to date
1219with Chromium's security fixes. There are adversaries who weaponize fixed
1220Chromium bugs ("n-day vulnerabilities") to target browsers which haven’t yet
1221absorbed those fixes.
1222
1223Decide whether your approach is to stay constantly up to date with Chromium
1224releases, or to backport security fixes onto some older version, upgrading
1225Chromium versions less frequently.
1226
1227Backporting security fixes sounds easier than forward-porting features, but in
1228our experience, this is false. Chromium releases 400+ security bug fixes per
1229year ([example
1230query](https://bugs.chromium.org/p/chromium/issues/list?q=type%3DBug-Security%20has%3Arelease%20closed%3Etoday-730%20closed%3Ctoday-365%20allpublic&can=1)).
1231Some downstream browsers take risks by backporting only Medium+ severity fixes,
1232but that's still over 300 ([example
1233query](https://bugs.chromium.org/p/chromium/issues/list?q=type%3DBug-Security%20has%3Arelease%20closed%3Etoday-730%20closed%3Ctoday-365%20allpublic%20Security_Severity%3DMedium%2CHigh%2CCritical&can=1)).
1234Most are trivial cherry-picks; but others require rework and require versatile
1235engineers who can make good decisions about any part of a large codebase.
1236
1237Our recommendation is to stay up-to-date with Chrome's released versions. You
1238should aim to release a version of your browser within just a few days of each
1239Chrome [stable
1240release](https://chromereleases.googleblog.com/search/label/Stable%20updates).
1241If your browser is sufficiently widely-used, you can [apply for advance notice
1242of fixed vulnerabilities](https://www.chromium.org/Home/chromium-security/) to
1243make this a little easier.
1244
1245Finally, if you choose the backporting approach, please explain the security
1246properties to your users. Some fraction of security improvements cannot be
1247backported. This can happen for several reasons, for example: because they
1248depend upon architectural changes (e.g. breaking API changes); because the
1249security improvement is a significant new feature; or because the security
1250improvement is the removal of a broken feature.
Lily Chen842810ff2024-12-18 17:00:401251
1252<a name="TOC-How-can-I-appeal-a-Safe-Browsing-warning-"></a>
1253### How can I appeal a Safe Browsing warning?
Lily Chenefbacb82025-01-02 17:52:531254To request a review of warnings relating to your own website, use the
Lily Chen842810ff2024-12-18 17:00:401255[Security Issues report](https://support.google.com/webmasters/answer/9044101)
1256page in your Google Search Console. If the warning applies to another site, you
1257may be able to use
1258[https://safebrowsing.google.com/safebrowsing/report_error/](https://safebrowsing.google.com/safebrowsing/report_error/),
1259though you are likely better off contacting the site owner.
1260
Lily Chenefbacb82025-01-02 17:52:531261If your concern relates to malware warnings, you may find the warning in your
Lily Chen842810ff2024-12-18 17:00:401262Security Issues report and request a review from there. There is no separate
1263appeal form or process at this time. Please follow these
1264[guidelines](https://developers.google.com/search/docs/monitor-debug/security/malware#guidelines)
1265to avoid having your binary show warnings from Safe Browsing.