blob: 54f13857774b143cabbe3a23536e6dcdab238284 [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
Ellycc57b692025-08-04 20:41:2316unnecessary risk for users of widely-used open source libraries. All critical,
17high, and medium severity bugs are visible only to the security team and to the
18engineers directly involved in fixing them. Low-severity security bugs may be
19visible to all project contributors after an initial triage phase.
Chris Palmer554c66e2017-07-29 01:02:5620
21<a name="TOC-Can-you-please-un-hide-old-security-bugs-"></a>
Alex Goughe7bcbea2022-05-03 21:45:3422### Can you please un-hide old security bugs?
Chris Palmer554c66e2017-07-29 01:02:5623
24Our goal is to open security bugs to the public once the bug is fixed and the
25fix has been shipped to a majority of users. However, many vulnerabilities
26affect products besides Chromium, and we don’t want to put users of those
27products unnecessarily at risk by opening the bug before fixes for the other
28affected products have shipped.
29
30Therefore, we make all security bugs public within approximately 14 weeks of the
31fix landing in the Chromium repository. The exception to this is in the event of
32the bug reporter or some other responsible party explicitly requesting anonymity
33or protection against disclosing other particularly sensitive data included in
34the vulnerability report (e.g. username and password pairs).
35
36<a name="TOC-Can-I-get-advance-notice-about-security-bugs-"></a>
Alex Goughe7bcbea2022-05-03 21:45:3437### Can I get advance notice about security bugs?
Chris Palmer554c66e2017-07-29 01:02:5638
39Vendors of products based on Chromium, distributors of operating systems that
40bundle Chromium, and individuals and organizations that significantly contribute
41to fixing security bugs can be added to a list for earlier access to these bugs.
42You can email us at security@chromium.org to request to join the list if you
43meet the above criteria. In particular, vendors of anti-malware, IDS/IPS,
44vulnerability risk assessment, and similar products or services do not meet this
45bar.
46
47Please note that the safest version of Chrome/Chromium is always the latest
48stable version β€” there is no good reason to wait to upgrade, so enterprise
49deployments should always track the latest stable release. When you do this,
50there is no need to further assess the risk of Chromium vulnerabilities: we
51strive to fix vulnerabilities quickly and release often.
52
Alex Goughccfbbb52023-05-16 14:42:1953<a name="TOC-How-can-I-know-which-fixes-to-include-in-my-downstream-project-"></a>
Alex Goughc9ab81fd2023-05-15 19:03:1454### How can I know which fixes to include in my downstream project?
55
56Chrome is built with mitigations and hardening which aim to prevent or reduce
57the impact of security issues. We classify bugs as security issues if they are
58known to affect a version and configuration of Chrome that we ship to the
59public. Some classes of bug might present as security issues if Chrome was
60compiled with different flags, or linked against a different C++ standard
61library, but do not with the toolchain and configuration that we use to build
62Chrome. We discuss some of these cases elsewhere in this FAQ.
63
Amy Resslerb35f8e5d2024-02-02 23:12:5464If we become aware of them, these issues may be triaged as `Type=Vulnerability,
65Security_Impact-None` or as `Type=Bug` because they do not affect the production
Alex Goughc9ab81fd2023-05-15 19:03:1466version of Chrome. They may or may not be immediately visible to the public in
67the bug tracker, and may or may not be identified as security issues. If fixes
68are landed, they may or may not be merged from HEAD to a release branch. Chrome
69will only label, fix and merge security issues in Chrome, but attackers can
70still analyze public issues, or commits in the Chromium project to identify bugs
71that might be exploitable in other contexts.
72
73Chromium embedders and other downstream projects may build with different
74compilers, compile options, target operating systems, standard library, or
75additional software components. It is possible that some issues Chrome
76classifies as functional issues will manifest as security issues in a product
77embedding Chromium - it is the responsibility of any such project to understand
78what code they are shipping, and how it is compiled. We recommend using Chrome's
79[configuration](https://source.chromium.org/chromium/chromium/src/+/main:build/config/)
80whenever possible.
81
Chris Palmer554c66e2017-07-29 01:02:5682<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:3483### Can I see these security bugs so that I can back-port the fixes to my downstream project?
Chris Palmer554c66e2017-07-29 01:02:5684
85Many developers of other projects use V8, Chromium, and sub-components of
86Chromium in their own projects. This is great! We are glad that Chromium and V8
87suit your needs.
88
89We want to open up fixed security bugs (as described in the previous answer),
90and will generally give downstream developers access sooner. **However, please
91be aware that backporting security patches from recent versions to old versions
92cannot always work.** (There are several reasons for this: The patch won't apply
93to old versions; the solution was to add or remove a feature or change an API;
94the issue may seem minor until it's too late; and so on.) We believe the latest
95stable versions of Chromium and V8 are the most stable and secure. We also
96believe that tracking the latest stable upstream is usually less work for
97greater benefit in the long run than backporting. We strongly recommend that you
98track the latest stable branches, and we support only the latest stable branch.
99
Eric Lawrence122e86882017-12-07 22:53:05100<a name="TOC-Severity-Guidelines"></a>
Alex Goughe7bcbea2022-05-03 21:45:34101### How does the Chrome team determine severity of security bugs?
Eric Lawrence122e86882017-12-07 22:53:05102
103See the [severity guidelines](severity-guidelines.md) for more information.
Tom Sepeze8fb33202018-11-01 19:31:32104Only security issues are considered under the security vulnerability rewards
105program. Other types of bugs, which we call "functional bugs", are not.
Eric Lawrence122e86882017-12-07 22:53:05106
Alex Goughe7bcbea2022-05-03 21:45:34107## Threat Model
Chris Palmer554c66e2017-07-29 01:02:56108
Eric Lawrence15fdea252017-08-09 19:37:41109<a name="TOC-Timing-Attacks"></a>
Alex Goughe7bcbea2022-05-03 21:45:34110### Are timing attacks considered security vulnerabilities?
Eric Lawrence15fdea252017-08-09 19:37:41111
112Some timing attacks are considered security vulnerabilities, and some are
113considered privacy vulnerabilities. Timing attacks vary significantly in terms
114of impact, reliability, and exploitability.
115
116Some timing attacks weaken mitigations like ASLR (e.g.
117[Issue 665930](https://crbug.com/665930)). Others attempt to circumvent the same
118origin policy, for instance, by using SVG filters to read pixels
119cross-origin (e.g. [Issue 686253](https://crbug.com/686253) and
120[Issue 615851](https://crbug.com/615851)).
121
122Many timing attacks rely upon the availability of high-resolution timing
123information [Issue 508166](https://crbug.com/508166); such timing data often has
124legitimate usefulness in non-attack scenarios making it unappealing to remove.
125
126Timing attacks against the browser's HTTP Cache (like
127[Issue 74987](https://crbug.com/74987)) can potentially leak information about
128which sites the user has previously loaded. The browser could attempt to protect
129against such attacks (e.g. by bypassing the cache) at the cost of performance
130and thus user-experience. To mitigate against such timing attacks, end-users can
131delete browsing history and/or browse sensitive sites using Chrome's Incognito
132or Guest browsing modes.
133
134Other timing attacks can be mitigated via clever design changes. For instance,
135[Issue 544765](https://crbug.com/544765) describes an attack whereby an attacker
136can probe for the presence of HSTS rules (set by prior site visits) by timing
Eric Lawrence29ca2722018-02-22 19:04:05137the load of resources with URLs "fixed-up" by HSTS. Prior to Chrome 64, HSTS
138rules [were shared](https://crbug.com/774643) between regular browsing and
139Incognito mode, making the attack more interesting. The attack was mitigated by
140changing Content-Security-Policy such that secure URLs will match rules
141demanding non-secure HTTP urls, a fix that has also proven useful to help to
142unblock migrations to HTTPS. Similarly, [Issue 707071](https://crbug.com/707071)
143describes a timing attack in which an attacker could determine what Android
144applications are installed; the attack was mitigated by introducing randomness
145in the execution time of the affected API.
Eric Lawrence15fdea252017-08-09 19:37:41146
Alex Goughe7bcbea2022-05-03 21:45:34147<a name="TOC-What-if-a-Chrome-component-breaks-an-OS-security-boundary-"></a>
148### What if a Chrome component breaks an OS security boundary?
149
150If Chrome or any of its components (e.g. updater) can be abused to
151perform a local privilege escalation, then it may be treated as a
152valid security vulnerability.
153
154Running any Chrome component with higher privileges than intended is
155not a security bug and we do not recommend running Chrome as an
156Administrator on Windows, or as root on POSIX.
157
158<a name="TOC-Why-isn-t-passive-browser-fingerprinting-including-passive-cookies-in-Chrome-s-threat-model-"></a>
159<a name="TOC-What-is-Chrome-s-threat-model-for-fingerprinting-"></a>
160### What is Chrome's threat model for fingerprinting?
161
162> **Update, August 2019:** Please note that this answer has changed. We have
163> updated our threat model to include fingerprinting.
164
165Although [we do not consider fingerprinting issues to be *security
166vulnerabilities*](#TOC-Are-privacy-issues-considered-security-bugs-), we do now
167consider them to be privacy bugs that we will try to resolve. We distinguish two
168forms of fingerprinting.
169
170* **Passive fingerprinting** refers to fingerprinting techniques that do not
171require a JavaScript API call to achieve. This includes (but is not limited to)
172mechanisms like [ETag
173cookies](https://en.wikipedia.org/wiki/HTTP_ETag#Tracking_using_ETags) and [HSTS
174cookies](https://security.stackexchange.com/questions/79518/what-are-hsts-super-cookies).
175* **Active fingerprinting** refers to fingerprinting techniques that do require
176a JavaScript API call to achieve. Examples include most of the techniques in
177[EFF's Panopticlick proof of concept](https://panopticlick.eff.org).
178
179For passive fingerprinting, our ultimate goal is (to the extent possible) to
180reduce the information content available to below the threshold for usefulness.
181
182For active fingerprinting, our ultimate goal is to establish a [privacy
183budget](https://github.com/bslassey/privacy-budget) and to keep web origins
184below the budget (such as by rejecting some API calls when the origin exceeds
185its budget). To avoid breaking rich web applications that people want to use,
186Chrome may increase an origin's budget when it detects that a person is using
187the origin heavily. As with passive fingerprinting, our goal is to set the
188default budget below the threshold of usefulness for fingerprinting.
189
190These are both long-term goals. As of this writing (August 2019) we do not
191expect that Chrome will immediately achieve them.
192
193For background on fingerprinting and the difficulty of stopping it, see [Arvind
194Narayanan's site](https://33bits.wordpress.com/about/) and [Peter Eckersley's
195discussion of the information theory behind
196Panopticlick](https://www.eff.org/deeplinks/2010/01/primer-information-theory-and-privacy).
197There is also [a pretty good analysis of in-browser fingerprinting
198vectors](https://dev.chromium.org/Home/chromium-security/client-identification-mechanisms).
199
200<a name="TOC-I-found-a-phishing-or-malware-site-not-blocked-by-Safe-Browsing.-Is-this-a-security-vulnerability-"></a>
201### I found a phishing or malware site not blocked by Safe Browsing. Is this a security vulnerability?
202
203Malicious sites not yet blocked by Safe Browsing can be reported via
204[https://www.google.com/safebrowsing/report_phish/](https://www.google.com/safebrowsing/report_phish/).
205Safe Browsing is primarily a blocklist of known-unsafe sites; the feature warns
206the user if they attempt to navigate to a site known to deliver phishing or
207malware content. You can learn more about this feature in these references:
208
209* [https://developers.google.com/safe-browsing/](https://developers.google.com/safe-browsing/)
210* [https://www.google.com/transparencyreport/safebrowsing/](https://www.google.com/transparencyreport/safebrowsing/)
211
212In general, it is not considered a security bug if a given malicious site is not
213blocked by the Safe Browsing feature, unless the site is on the blocklist but is
214allowed to load anyway. For instance, if a site found a way to navigate through
215the blocking red warning page without user interaction, that would be a security
216bug. A malicious site may exploit a security vulnerability (for instance,
217spoofing the URL in the **Location Bar**). This would be tracked as a security
218vulnerability in the relevant feature, not Safe Browsing itself.
219
220<a name="TOC-I-can-download-a-file-with-an-unsafe-extension-and-it-is-not-classified-as-dangerous-"></a>
221### I can download a file with an unsafe extension and it is not classified as dangerous - is this a security bug?
222
223Chrome tries to warn users before they open files that might modify their
224system. What counts as a dangerous file will vary depending on the operating
225system Chrome is running on, the default set of file handlers, Chrome settings,
226Enterprise policy and verdicts on both the site and the file from [Safe
227Browsing](https://code.google.com/apis/safebrowsing/). Because of this it will
228often be okay for a user to download and run a file. However, if you can clearly
229demonstrate how to bypass one of these protections then we’d like to hear about
230it. You can see if a Safe Browsing check happened by opening
231chrome://safe-browsing before starting the download.
232
Daniel Ruberyc7ac344232023-10-09 22:16:20233<a name="TOC-what-about-dangerous-file-types-not-listed-in-the-file-type-policy-"></a>
234### What about dangerous file types not listed in the file type policy?
235
236The [file type
237policy](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)
238controls some details of which security checks to enable for a given file
239extension. Most importantly, it controls whether we contact Safe Browsing about
240a download, and whether we show a warning for all downloads of that file type.
241Starting in M74, the default for unknown file types has been to contact Safe
242Browsing. This prevents large-scale abuse from a previously unknown file type.
243Starting in M105, showing a warning for all downloads of an extension became
244reserved for exceptionally dangerous file types that can compromise a user
245without any user interaction with the file (e.g. DLL hijacking). If you discover
246a new file type that meets that condition, we’d like to hear about it.
247
Daseul Leed2b02532024-01-09 15:22:10248<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>
249### 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?
250
251The 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)
252of directories and files that may be sensitive such as systems file, and if user
253chooses a file or a directory matching the list on a site using File System
254Access API, the access is blocked.
255
256The blocklist is designed to help mitigate accidental granting by users by
257listing well-known, security-sensitive locations, as a defense in-depth
258strategy. Therefore, the blocklist coverage is not deemed as a security bug,
259especially as it requires user's explicit selection on a file or a directory
260from the file picker.
261
Alex Goughe7bcbea2022-05-03 21:45:34262<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>
263### 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:36264
265See [file types](#TOC-The-wrong-description-for-a-file-type-is-added-by-Chrome-).
266
Alex Goughe7bcbea2022-05-03 21:45:34267<a name="TOC-Extensions-for-downloaded-files-are-not-shown-in-a-file-dialog-"></a>
268### Extensions for downloaded files are not shown in a file dialog - is this a security bug?
Alex Gough6d37dae2024-10-02 23:37:36269
270See [file types](#TOC-The-wrong-description-for-a-file-type-is-added-by-Chrome-).
271
Alex Goughe7bcbea2022-05-03 21:45:34272<a name="TOC-The-wrong-description-for-a-file-type-is-added-by-Chrome-"></a>
273### The wrong description for a file type is added by Chrome - is this a security bug?
274
275Chrome tries to let users know what they will be saving and downloading before
276they do so. Often operating systems will obscure a file’s type or extension and
277there is little we can do about that. Chrome shows information to help users
278make these decisions, both in Chrome-owned UI and in information that Chrome
279passes to OS-owned UI. If this information can be manipulated from a web site to
280mislead a user, then we’d like to hear about it.
281[Example](https://crbug.com/1137247).
282
283<a name="TOC-I-can-download-a-file-and-OS-indicators-for-its-provenance-are-not-applied-"></a>
284### I can download a file and OS indicators for its provenance are not applied - is this a security bug?
285
286Chrome attempts to label files downloaded from the internet with metadata using
287operating system APIs where these are available – for instance applying the Mark
288of the Web on Windows. This is often not possible (for instance on non-NTFS file
289systems on Windows, or for files inside downloaded archives) or disabled by
290policy. If a web site can cause Chrome to download a file without Chrome then
291adding this metadata as usual, we’d like to hear about it.
292
293<a name="TOC-I-can-cause-a-hard-or-soft-link-to-be-written-to-a-directory-bypassing-normal-OS-blocks-"></a>
294### I can cause a hard or soft link to be written to a directory bypassing normal OS blocks - is this a security bug?
295
296Chrome should not allow filesystem links to be created by initiating a download.
297[Example](https://crbug.com/1140417). [Example](https://crbug.com/1137247#c12).
298
299<a name="TOC-I-can-hijack-a-user-gesture-and-trick-a-user-into-accepting-a-permission-or-downloading-a-file-"></a>
300### I can hijack a user gesture and trick a user into accepting a permission or downloading a file - is this a security bug?
301
302Chrome tries to design its prompts to select safe defaults. If a prompt can
303accidentally be accepted without the user having an opportunity to make a
304decision about the prompt then we’d like to know. Examples might include poor
305defaults so that a user holding down an enter key might accept a dialog they
306would want to dismiss. [Example](https://crbug.com/854455#c11).
307
308Note that a user navigating to a download will cause a file to be
309[downloaded](https://crbug.com/1114592).
310
Arthur Sonzognib89b25f2024-02-13 16:11:22311<a name="TOC-security-properties-not-inherited-using-contextual-menu-"></a>
312### Sandbox/CSP/etc... security properties are not inherited when navigating using the middle-click/contextual-menu - is this a security bug?
313
314The security properties of the document providing the URL are not used/inherited
315when the user deliberately opens a link in a popup using one of:
316
317- Ctrl + left-click (Open link in new tab)
318- Shift + left-click (Open link in new window)
319- Middle-click (Open a link in a new tab)
320- Right-click > "Open link in ..."
321
322These methods of following a link have more or less the same implications as the
323user copying the link's URL and pasting it into a newly-opened window. We treat
324them as user-initiated top-level navigations, and as such will not apply or
325inherit policy restrictions into the new context
326
327Example of security related properties:
328
329- Content-Security-Policy
330- Cross-Origin-Embedder-Policy
331- Cross-Origin-Opener-Policy
332- Origin
333- Referrer
334- Sandbox
335- etc...
336
337These browser's actions/shortcuts are specific to Chrome. They are different
338from the behavior specified by the web-platform, such as using executing
339`window.open()` or opening a link with the `target=_blank` attribute.
340
Chris Palmer5649f942024-09-25 19:46:29341<a name="TOC-What-is-the-threat-model-for-Chrome-for-Testing"></a>
Adrian Taylorfe24932e2024-05-15 15:59:56342### What is the threat model for Chrome for Testing?
343
344[Chrome for Testing](https://developer.chrome.com/blog/chrome-for-testing) is a
345distribution of current and older versions of Chrome. It does not auto-update.
346Therefore, it may lack recent fixes for security bugs. Security bugs can more
347easily be exploited once their fixes are [published in the main Chromium source
348code repository](updates.md) and so it is unsafe to use Chrome for Testing to
349access any untrusted website. You should use Chrome for Testing only for
350browser automation and testing purposes, consuming only trustworthy content.
351`chrome-headless-shell` also lacks auto-updates and so, for the same reason,
352should only be used to consume trusted content.
353
Elly40a123e2025-05-23 15:59:34354<a name="TOC-What-makes-a-ui-spoof-interesting-to-report"></a>
355### What makes a UI spoof interesting to report?
356As a general rule, a UI spoof is only a security bug if _either_:
357
358* There is evidence that it is actually being exploited to trick users in the
359 field, or
360* You can make a convincing case that it would mislead a user into making a
361 _security decision_ incorrectly, or otherwise taking an action with actual
362 security consequences for that user
363
364That means that for example these are interesting security bugs:
365
366* A spoof that convinces the user they are currently on origin A when in fact
367 they are on origin B
368* A spoof that convinces the user that a permission request is from origin A
369 when in fact it is from origin B
370* A spoof that convinces the user they are installing extension A when in fact
371 they are installing extension B
372
373and so on, but for example these are **not** interesting security bugs:
374
375* A spoof that convinces the user to copy text they didn't expect to their
376 clipboard
377* A spoof that convinces the user to download a file they didn't expect (simply
378 downloading a file is not a security decision - running it is though!)
379* A spoof that convinces the user to navigate to a link they didn't expect
380* A spoof that convinces the user to click a browser UI element they weren't
381 intending to _unless you can show security consequences for them doing so_.
382
383We often tend to look at what a "reasonable and prudent" user would do in a
384situation, meaning a user who is taking basic security precautions like paying
385attention to security cues given in the product UI and who is, while not a
386security expert or even particularly security-minded, trying to take basic
387precautions to stay safe online. That doesn't mean bugs that require user error
388are always out of scope, but it does mean that spoofs which would not deceive
389a user being reasonable and prudent are out of scope.
390
Alex Goughe7bcbea2022-05-03 21:45:34391## Areas outside Chrome's Threat Model
392
393<a name="TOC-Are-privacy-issues-considered-security-bugs-"></a>
394### Are privacy issues considered security bugs?
395
396No. The Chrome Privacy team treats privacy issues, such as leaking information
397from Incognito, fingerprinting, and bugs related to deleting browsing data as
398functional bugs.
399
400Privacy issues are not considered under the security vulnerability rewards
401program; the [severity guidelines](severity-guidelines.md) outline the types of
402bugs that are considered security vulnerabilities in more detail.
403
Chris Palmer554c66e2017-07-29 01:02:56404<a name="TOC-What-are-the-security-and-privacy-guarantees-of-Incognito-mode-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34405### What are the security and privacy guarantees of Incognito mode?
Chris Palmer554c66e2017-07-29 01:02:56406
407Bugs in Incognito mode are tracked as privacy bugs, not security bugs.
408
Chris Palmer9839ce42017-08-16 20:59:15409The [Help Center](https://support.google.com/chrome/?p=cpn_incognito) explains
410what privacy protections Incognito mode attempts to enforce. In particular,
411please note that Incognito is not a β€œdo not track” mode, and it does not hide
412aspects of your identity from web sites. Chrome does offer a way to send Do Not
413Track request to servers; see chrome://settings/?search=do+not+track
Chris Palmer554c66e2017-07-29 01:02:56414
415When in Incognito mode, Chrome does not store any new history, cookies, or other
416state in non-volatile storage. However, Incognito windows will be able to access
417some previously-stored state, such as browsing history.
418
Alex Goughe7bcbea2022-05-03 21:45:34419<a name="TOC-Are-XSS-filter-bypasses-considered-security-bugs-"></a>
420### Are XSS filter bypasses considered security bugs?
421
422No. Chromium once contained a reflected XSS filter called the [XSSAuditor](https://www.chromium.org/developers/design-documents/xss-auditor)
423that was a best-effort second line of defense against reflected XSS flaws found
424in 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:44425Consequently, Chromium no longer takes any special action in response to an
426X-XSS-Protection header.
Alex Goughe7bcbea2022-05-03 21:45:34427
Chris Palmer554c66e2017-07-29 01:02:56428<a name="TOC-Are-denial-of-service-issues-considered-security-bugs-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34429### Are denial of service issues considered security bugs?
Chris Palmer554c66e2017-07-29 01:02:56430
Tom Sepeze8fb33202018-11-01 19:31:32431No. Denial of Service (DoS) issues are treated as **abuse** or **stability**
432issues rather than security vulnerabilities.
Chris Palmer554c66e2017-07-29 01:02:56433
Lukasz Anforowicza2be83462024-02-15 20:49:12434* If you find a reproducible crash (e.g. a way to hit a `CHECK`),
435 we encourage you to [report it](https://issues.chromium.org/new).
Chris Palmer554c66e2017-07-29 01:02:56436* If you find a site that is abusing the user experience (e.g. preventing you
437 from leaving a site), we encourage you to [report
Amy Resslerb35f8e5d2024-02-02 23:12:54438 it](https://issues.chromium.org/new).
Chris Palmer554c66e2017-07-29 01:02:56439
440DoS issues are not considered under the security vulnerability rewards program;
Varun Khanejadf1bc00e2017-08-10 05:22:40441the [severity guidelines](severity-guidelines.md) outline the types of bugs that
442are considered security vulnerabilities in more detail.
Chris Palmer554c66e2017-07-29 01:02:56443
Chris Palmer554c66e2017-07-29 01:02:56444<a name="TOC-Why-aren-t-physically-local-attacks-in-Chrome-s-threat-model-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34445### Why aren't physically-local attacks in Chrome's threat model?
Chris Palmer554c66e2017-07-29 01:02:56446
447People sometimes report that they can compromise Chrome by installing a
448malicious DLL in a place where Chrome will load it, by hooking APIs (e.g. [Issue
449130284](https://crbug.com/130284)), or by otherwise altering the configuration
Tom Sepezf6b2e782020-04-06 23:08:55450of the device.
Chris Palmer554c66e2017-07-29 01:02:56451
452We consider these attacks outside Chrome's threat model, because there is no way
453for Chrome (or any application) to defend against a malicious user who has
Tom Sepezf6b2e782020-04-06 23:08:55454managed to log into your device as you, or who can run software with the
Chris Palmer554c66e2017-07-29 01:02:56455privileges of your operating system user account. Such an attacker can modify
456executables and DLLs, change environment variables like `PATH`, change
457configuration files, read any data your user account owns, email it to
Tom Sepezf6b2e782020-04-06 23:08:55458themselves, and so on. Such an attacker has total control over your device,
Chris Palmer554c66e2017-07-29 01:02:56459and nothing Chrome can do would provide a serious guarantee of defense. This
460problem is not special to Chrome Β­β€” all applications must trust the
461physically-local user.
462
463There are a few things you can do to mitigate risks from people who have
464physical control over **your** computer, in certain circumstances.
465
466* To stop people from reading your data in cases of device theft or loss, use
467 full disk encryption (FDE). FDE is a standard feature of most operating
468 systems, including Windows Vista and later, Mac OS X Lion and later, and
469 some distributions of Linux. (Some older versions of Mac OS X had partial
470 disk encryption: they could encrypt the user’s home folder, which contains
471 the bulk of a user’s sensitive data.) Some FDE systems allow you to use
472 multiple sources of key material, such as the combination of both a
473 password and a key file on a USB token. When available, you should use
474 multiple sources of key material to achieve the strongest defense. Chrome
475 OS encrypts users’ home directories.
476* If you share your computer with other people, take advantage of your
477 operating system’s ability to manage multiple login accounts, and use a
478 distinct account for each person. For guests, Chrome OS has a built-in
479 Guest account for this purpose.
480* Take advantage of your operating system’s screen lock feature.
481* You can reduce the amount of information (including credentials like
482 cookies and passwords) that Chrome will store locally by using Chrome's
483 Content Settings (chrome://settings/content) and turning off the form
484 auto-fill and password storage features
485 ([chrome://settings/search#password](chrome://settings/search#password)).
486
487There is almost nothing you can do to mitigate risks when using a **public**
488computer.
489
490* Assume everything you do on a public computer will become, well, public.
491 You have no control over the operating system or other software on the
492 machine, and there is no reason to trust the integrity of it.
Eric Lawrence29ca2722018-02-22 19:04:05493* If you must use such a computer, use Incognito mode and close all Incognito
494 windows when you are done browsing to limit the amount of data you leave
495 behind. Note that Incognito mode **provides no protection** if the system has
496 already been compromised as described above.
Chris Palmer554c66e2017-07-29 01:02:56497
498<a name="TOC-Why-aren-t-compromised-infected-machines-in-Chrome-s-threat-model-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34499### Why aren't compromised/infected machines in Chrome's threat model?
Chris Palmer554c66e2017-07-29 01:02:56500
Tom Sepez279d9f42020-11-30 21:58:58501Although the attacker may now be remote, the consequences are essentially the
502same as with physically-local attacks. The attacker's code, when it runs as
503your user account on your machine, can do anything you can do. (See also
504[Microsoft's Ten Immutable Laws Of
Eric Lawrence5e1a9c712018-09-12 20:55:19505Security](https://web.archive.org/web/20160311224620/https://technet.microsoft.com/en-us/library/hh278941.aspx).)
Chris Palmer554c66e2017-07-29 01:02:56506
Tom Sepez279d9f42020-11-30 21:58:58507Other cases covered by this section include leaving a debugger port open to
508the world, remote shells, and so forth.
509
Alex Gough5d0d5562024-11-11 22:45:23510<a name="TOC-If-a-website-can-open-an-android-app-via-an-intent"></a>
511### If a website can open an Android app via an intent is this a security bug?
512
513No - websites can link to external handlers or applications - but there are
514restrictions around requiring a user gesture and the type of intent that can
515be launched. Full details are available in the
516[external_intents](../../components/external_intents/README.md) documentation.
517
Chris Palmer554c66e2017-07-29 01:02:56518<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:34519### 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:56520
Eric Lawrence29ca2722018-02-22 19:04:05521[No](https://crbug.com/81697). Chrome does not attempt to prevent the user from
522knowingly running script against loaded documents, either by entering script in
523the Developer Tools console or by typing a JavaScript: URI into the URL bar.
524Chrome and other browsers do undertake some efforts to prevent *paste* of script
525URLs in the URL bar (to limit
Chris Palmer554c66e2017-07-29 01:02:56526[social-engineering](https://blogs.msdn.microsoft.com/ieinternals/2011/05/19/socially-engineered-xss-attacks/))
527but users are otherwise free to invoke script against pages using either the URL
528bar or the DevTools console.
529
Tom Sepez5b700482020-04-06 20:07:21530<a name="TOC-Does-executing-JavaScript-from-a-bookmark-mean-there-s-an-XSS-vulnerability-"></a>
Eric Lawrence2de6aaa2023-04-13 17:06:55531### Does executing JavaScript from a bookmark or the Home button mean there's an XSS vulnerability?
Tom Sepez5b700482020-04-06 20:07:21532
533No. Chromium allows users to create bookmarks to JavaScript URLs that will run
Chris Palmer554c66e2017-07-29 01:02:56534on the currently-loaded page when the user clicks the bookmark; these are called
535[bookmarklets](https://en.wikipedia.org/wiki/Bookmarklet).
536
Eric Lawrence2de6aaa2023-04-13 17:06:55537Similarly, the Home button may be configured to invoke a JavaScript URL when clicked.
538
Tom Sepezfeca2de2020-04-01 22:58:29539<a name="TOC-Does-executing-JavaScript-in-a-PDF-file-mean-there-s-an-XSS-vulnerability-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34540### Does executing JavaScript in a PDF file mean there's an XSS vulnerability?
Tom Sepezfeca2de2020-04-01 22:58:29541
542No. PDF files have the ability to run JavaScript, usually to facilitate field
543validation during form fill-out. Note that the set of bindings provided to
Tom Sepez72119c3c2022-12-13 18:48:56544the PDF are more limited than those provided by the DOM to HTML documents, nor
545do PDFs get any ambient authority based upon the domain from which they are
546served (e.g. no document.cookie).
Tom Sepezfeca2de2020-04-01 22:58:29547
Alex Goughe7bcbea2022-05-03 21:45:34548<a name="TOC-Are-PDF-files-static-content-in-Chromium-"></a>
549### Are PDF files static content in Chromium?
Chris Palmer554c66e2017-07-29 01:02:56550
Alex Goughe7bcbea2022-05-03 21:45:34551No. PDF files have some powerful capabilities including invoking printing or
Andrew Mitchell327571a2025-02-17 04:14:09552posting form data. To mitigate abuse of these capabilities, such as beaconing
Alex Goughe7bcbea2022-05-03 21:45:34553upon document open, we require interaction with the document (a "user gesture")
554before allowing their use.
Chris Palmer554c66e2017-07-29 01:02:56555
Charlie Reis65c9a4b2024-11-14 18:25:43556<a name="TOC-Are-non_committed-URLs-entered-by-the-user-considered-URL-spoofs-"></a>
557### Are non-committed URLs entered by the user considered URL spoofs?
558
559No. When a user enters a URL into the address bar (whether by typing,
560copy/pasting, drag and drop, or otherwise), Chrome intentionally displays
561it instead of the last committed URL of the currently active page, until
562both the navigation begins and the new page commits. During this time, the
563currently active page can change its appearance to mimic the new URL while
564its own URL is not shown. However, the active page does not have control
565over which URL the user entered into the address bar, limiting the
566effectiveness of a spoof attempt. The new
567[lock-replacement icon](https://blog.chromium.org/2023/05/an-update-on-lock-icon.html)
568is also not present in this state, and in many cases (i.e., once the new
569navigation has started), the loading indicators are present.
570
571The confusion between the non-committed URL and the active page's
572appearance is a consequence of the address bar needing to serve two roles:
Elly40a123e2025-05-23 15:59:34573showing both where you are and where you are going. In general, we don't think
574this technique can deceive a [reasonable and prudent
575user](#TOC-What-makes-a-ui-spoof-interesting-to-report).
Charlie Reis65c9a4b2024-11-14 18:25:43576
577See also https://crbug.com/378932942 for context.
578
Alex Goughe7bcbea2022-05-03 21:45:34579<a name="TOC-What-about-URL-spoofs-using-Internationalized-Domain-Names-IDN-"></a>
580### What about URL spoofs using Internationalized Domain Names (IDN)?
Chris Palmer554c66e2017-07-29 01:02:56581
Alex Goughe7bcbea2022-05-03 21:45:34582We try to balance the needs of our international userbase while protecting users
583against confusable homograph attacks. Despite this, there are a list of known
584IDN display issues we are still working on.
Chris Palmer554c66e2017-07-29 01:02:56585
Alex Goughe7bcbea2022-05-03 21:45:34586* Please see [this document](https://docs.google.com/document/d/1_xJz3J9kkAPwk3pma6K3X12SyPTyyaJDSCxTfF8Y5sU)
587for a list of known issues and how we handle them.
588* [This document](https://chromium.googlesource.com/chromium/src/+/main/docs/idn.md)
589describes Chrome's IDN policy in detail.
Chris Palmer554c66e2017-07-29 01:02:56590
Alex Goughe7bcbea2022-05-03 21:45:34591<a name="TOC-Chrome-silently-syncs-extensions-across-devices.-Is-this-a-security-vulnerability-"></a>
592### Chrome silently syncs extensions across devices. Is this a security vulnerability?
Chris Palmer554c66e2017-07-29 01:02:56593
Alex Goughe7bcbea2022-05-03 21:45:34594This 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:45595
Alex Goughe7bcbea2022-05-03 21:45:34596<a name="TOC-Why-arent-null-pointer-dereferences-considered-security-bugs-"></a>
597### Why aren't null pointer dereferences considered security bugs?
Chris Palmer8d95482a2019-08-28 22:48:45598
Alex Goughe7bcbea2022-05-03 21:45:34599Null pointer dereferences with consistent, small, fixed offsets are not considered
600security bugs. A read or write to the NULL page results in a non-exploitable crash.
Daniel Cheng78780d22024-01-06 06:47:43601If the offset is larger than 32KB, or if there's uncertainty about whether the
Alex Goughe7bcbea2022-05-03 21:45:34602offset is controllable, it is considered a security bug.
Chris Palmer8d95482a2019-08-28 22:48:45603
Daniel Cheng78780d22024-01-06 06:47:43604All supported Chrome platforms do not allow mapping memory in at least the first
60532KB of address space:
606
607- Windows: Windows 8 and later disable mapping the first 64k of address space;
608 see page 33 of [Exploit Mitigation Improvements in Windows
609 8][windows-null-page-mapping] [[archived]][windows-null-page-mapping-archived].
610- Mac and iOS: by default, the linker reserves the first 4GB of address space
611 with the `__PAGEZERO` segment for 64-bit binaries.
612- Linux: the default `mmap_min_addr` value for supported distributions is at
613 least 64KB.
614- Android: [CTS][android-mmap_min_addr] enforces that `mmap_min_addr` is set to
615 exactly 32KB.
616- ChromeOS: the [ChromeOS kernels][chromeos-mmap_min_addr] set the default
617 `mmap_min_addr` value to at least 32KB.
618- Fuchsia: the [userspace base address][fuchsia-min-base-address] begins at 2MB;
619 this is configured per-platform but set to the same value on all platforms.
620
621[windows-null-page-mapping]: https://media.blackhat.com/bh-us-12/Briefings/M_Miller/BH_US_12_Miller_Exploit_Mitigation_Slides.pdf
622[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
623[android-mmap_min_addr]: https://android.googlesource.com/platform/cts/+/496152a250d10e629d31ac90b2e828ad77b8d70a/tests/tests/security/src/android/security/cts/KernelSettingsTest.java#43
624[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
625[fuchsia-min-base-address]: https://cs.opensource.google/fuchsia/fuchsia/+/main:zircon/kernel/arch/arm64/include/arch/kernel_aspace.h;l=20;drc=eeceea01eee2615de74b1339bcf6e6c2c6f72769
626
Alex Gough2d9974c2023-04-11 20:47:57627<a name="TOC-Indexing-a-container-out-of-bounds-hits-a-libcpp-verbose-abort--is-this-a-security-bug-"></a>
628### Indexing a container out of bounds hits a __libcpp_verbose_abort, is this a security bug?
629
630`std::vector` and other containers are now protected by libc++ hardening on all
631platforms [crbug.com/1335422](https://crbug.com/1335422). Indexing these
632containers out of bounds is now a safe crash - if a proof-of-concept reliably
633causes a crash in production builds we consider these to be functional rather than
634security issues.
635
Alex Goughe7bcbea2022-05-03 21:45:34636<a name="TOC-Are-stack-overflows-considered-security-bugs-"></a>
637### Are stack overflows considered security bugs?
638
639No. Guard pages mean that stack overflows are considered unexploitable, and
640are regarded as [denial of service bugs](#TOC-Are-denial-of-service-issues-considered-security-bugs-).
641The only exception is if an attacker can jump over the guard pages allocated by
642the operating system and avoid accessing them, e.g.:
643
644* A frame with a very large stack allocation.
645* C variable length array with an attacker-controlled size.
646* A call to `alloca()` with an attacker-controlled size.
647
danakjc8fb82602024-07-09 16:36:09648<a name="TOC-Are-tint-ICE-considered-security-bugs-"></a>
649### Are tint shader compiler Internal Compiler Errors considered security bugs?
650
651No. When tint fails and throws an ICE (Internal Compiler Error), it will
652terminate the process in an intentional manner and produce no shader output.
653Thus there is not security bug that follows from it.
654
Alex Goughe7bcbea2022-05-03 21:45:34655<a name="TOC-Are-enterprise-admins-considered-privileged-"></a>
656### Are enterprise admins considered privileged?
657
658Chrome [can't guard against local
659attacks](#TOC-Why-aren-t-physically-local-attacks-in-Chrome-s-threat-model-).
660Enterprise administrators often have full control over the device. Does Chrome
661assume that enterprise administrators are as privileged and powerful as other
662local users? It depends:
663
664* On a fully managed machine, for example a [domain-joined Windows
665 machine](https://docs.microsoft.com/en-us/windows-server/identity/ad-fs/deployment/join-a-computer-to-a-domain),
666 a device managed via a Mobile Device Management product, or a device with
667 Chrome managed via machine-level [Chrome Browser Cloud
668 Management](https://support.google.com/chrome/?p=cloud_management),
669 the administrator effectively has privileges to view and mutate any state on
670 the device. Chrome [policy implementations](../enterprise/add_new_policy.md)
671 should still guide enterprise admins to the most user-respectful defaults
672 and policy description text should clearly describe the nature of the
673 capabilities and the user impact of them being granted.
674* On an unmanaged machine, Chrome profiles [can be managed via cloud
675 policy](https://support.google.com/chrome/?p=manage_profiles)
676 if users sign into Chrome using a managed account. These policies are called
677 *user policies*. In this scenario, the Chrome enterprise administrator should
678 have privileges only to *view and mutate state within the profile that they
679 administer*. Any access outside that profile requires end-user consent.
680
681Chrome administrators can force-install Chrome extensions without permissions
682prompts, so the same restrictions must apply to the Chrome extension APIs.
683
684Chrome has a long history of policy support with many hundreds of policies. We
685recognize that there may exist policies or policy combinations that can provide
686capabilities outside of the guidance provided here. In cases of clear violation
687of user expectations, we will attempt to remedy these policies and we will apply
688the guidance laid out in this document to any newly added policies.
689
Camille0f2a39f2022-11-04 10:45:04690See the [Web Platform Security
Chris Thompson1f8b00062023-05-31 00:38:49691guidelines](https://chromium.googlesource.com/chromium/src/+/main/docs/security/web-platform-security-guidelines.md#enterprise-policies)
Camille0f2a39f2022-11-04 10:45:04692for more information on how enterprise policies should interact with Web
693Platform APIs.
694
Alex Goughe7bcbea2022-05-03 21:45:34695<a name="TOC-Can-I-use-EMET-to-help-protect-Chrome-against-attack-on-Microsoft-Windows-"></a>
696### Can I use EMET to help protect Chrome against attack on Microsoft Windows?
697
698There are [known compatibility
699problems](https://sites.google.com/a/chromium.org/dev/Home/chromium-security/chromium-and-emet)
700between Microsoft's EMET anti-exploit toolkit and some versions of Chrome. These
701can prevent Chrome from running in some configurations. Moreover, the Chrome
702security team does not recommend the use of EMET with Chrome because its most
703important security benefits are redundant with or superseded by built-in attack
704mitigations within the browser. For users, the very marginal security benefit is
705not usually a good trade-off for the compatibility issues and performance
706degradation the toolkit can cause.
707
Arthur Sonzognicbc5d692024-05-08 10:37:20708<a name="TOC-dangling-pointers"></a>
709### Dangling pointers
710
711Chromium can be instrumented to detect [dangling
712pointers](https://chromium.googlesource.com/chromium/src/+/main/docs/dangling_ptr.md):
713
714Notable build flags are:
715- `enable_dangling_raw_ptr_checks=true`
Kalvin Lee3f1e9eda2024-07-18 21:53:23716- `use_raw_ptr_asan_unowned_impl=true`
Arthur Sonzognicbc5d692024-05-08 10:37:20717
718Notable runtime flags are:
719- `--enable-features=PartitionAllocDanglingPtr`
720
721It is important to note that detecting a dangling pointer alone does not
722necessarily indicate a security vulnerability. A dangling pointer becomes a
723security vulnerability only when it is dereferenced and used after it becomes
724dangling.
725
726In general, dangling pointer issues should be assigned to feature teams as
727ordinary bugs and be fixed by them. However, they can be considered only if
728there is a demonstrable way to show a memory corruption. e.g. with a POC causing
729crash with ASAN **without the flags above**.
730
Chris Thompsonac5fdf42025-01-30 16:18:00731<a name="TOC-hard-coded-lists"></a>
732### 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?
733
734Chrome does not make any guarantees about how soon additions to or removals from
735external lists like the [HSTS preload list](https://hstspreload.org) or the
736[Public Suffix List (PSL)](https://publicsuffix.org/) will be incorporated into Chrome.
737If you believe Chrome's copies of these lists are notably out-of-date, we are
738happy to field bug reports but we do not consider this to be a vulnerability.
739
Alex Gough8f156132025-08-26 23:58:07740## AI Features
741
742Chrome deeply integrates AI both in user-facing features like [Gemini Live
743in Chrome](https://gemini.google/overview/gemini-in-chrome) , β€œHelp me write”
744and Devtools assistants and in internal models that help block unwanted
745notifications or improve page loading.
746
747Chrome does not treat misleading, misaligned or unsafe model output as a
748vulnerability. Please report such safety violations using in-product feedback
749mechanisms.
750
751<a name="TOC-AI-prompt-innappropriate-output"></a>
752### Entering a prompt into an AI feature’s input surface causes inappropriate output?
753
754Chrome AI features include guardrails to ensure that their output is safe and
755reasonable but these guidelines do not form a security boundary. Any prompt that
756causes these guidelines to be violated is not a security issue in Chrome. Use
757in-product mechanisms to thumbs up / thumbs down results, or click on
758β€˜send feedback’ to report other inappropriate content.
759
760<a name="TOC-AI-prompt-leaks-system-prompt"></a>
761### Entering a prompt into an AI feature’s input surface leaks the system prompt, or provides access to backend services?
762
763For AI features implemented using a Google backend it is possible that some
764prompted output could be a valid abuse report, but will not be considered to be
765bugs in Chrome. These should be reported via the [Google Abuse
766VRP](https://bughunters.google.com/about/rules/google-friends/5238081279623168/abuse-vulnerability-reward-program-rules)
767or [Google VRP](https://bughunters.google.com/) depending on the severity of the
768issue.
769
770<a name="TOC-AI-prompt-can-be-copy-pasted"></a>
771### Entering a prompt into an AI feature’s input surface causes information to leak, or actions to happen?
772
773Chrome AI features trust what people using Chrome supply in input fields, audio
774inputs, or other Chrome input surfaces. Tricking a user into entering a
775malicious prompt (e.g. by copy/pasting from a site) is not considered to be a
776security boundary as many people copy & paste text and urls as they use features
777in Chrome.
778
779<a name="TOC-AI-public-urls-are-not-leaks"></a>
780### Url paths, parameters or fragments can influence the output of Chrome AI features?
781
782AI features may use urls when generating their output so it is expected that
783page content will influence the output. Chrome AI features include mitigations
784and filters to prevent harmful actions that result from operating on page
785content. Controlling the AI output is, by itself, not a security issue, unless
786some further harm to a user can be demonstrated.
787
788<a name="TOC-AI-page-content-influences-model-output"></a>
789### Page content can influence the output of Chrome AI features?
790
791AI features may use page content (including images and subframes) when
792generating their output so it is expected that page content will influence the
793output. Chrome AI features include mitigations and filters to prevent harmful
794actions that result from operating on page content. Controlling the AI output
795is, by itself, not a security issue, unless some further harm to a user can be
796demonstrated.
797
798<a name="TOC-AI-invisible-page-content"></a>
799### Invisible page content can influence the output of Chrome AI features?
800
801AI features may use page content including invisible content when generating
802their output so it is expected that page content will influence the output.
803Chrome AI features may detect, scrub, or deprioritize invisible content, but
804failing to do so is not considered a security vulnerability as it is impossible
805to do so in all cases.
806
807<a name="TOC-AI-leaky-urls-can-be-reported"></a>
808### I have an example of page content that results in Chrome AI features creating links that leak information if followed?
809
810Chrome AI features take actions to limit what navigations are possible, and
811require user action before following links that could leak information to
812prevent scalable or targeted attacks. Web pages can already supply links or
813cause redirections and navigation and causing a user to follow these, via an AI
814feature, does not add a new attack surface.
815
816<a name="TOC-AI-page-content-harmful-actions"></a>
817### I have an example of page content that results in Chrome AI features performing harmful actions?
818
819Indirect prompt injections that result in unintended actions or leak information
820may be considered security issues and should be reported through the Chrome
821security tracker. Please create a recording from a fresh session that
822demonstrates the issue, and upload all files used as part of the demonstration.
823If a Gemini session is associated with your report, it will help us if you are
824able to share the session from your activity page, and the version of the model
825you are using.
826
827<a name="TOC-AI-xss-in-glic-window"></a>
828### I have an example of page content that results in XSS in the context of a Chrome AI feature?
829
830Output surfaces should sanitize inputs and transformed outputs. Please create a
831recording from a fresh session that demonstrates the issue, and upload all files
832used as part of the demonstration. If a Gemini session is associated with your
833report, it will help us if you are able to share the session from your activity
834page, and the version of the model you are using. Note that directly injecting
835code into a trusted surface via devtools does not demonstrate a vulnerability.
836
Alex Gough272f4cc2025-05-09 18:25:14837## AI Generated Vulnerability reports
838
839<a name="TOC-should-i-ask-an-ai-to-generate-a-vulnerability-report-for-chrome"></a>
840### Should I ask an AI to Generate a Vulnerability Report for Chrome?
841
842Simply asking an AI to identify a bug report in Chrome is unlikely to yield a
843valid report. Before submitting a report generated by AI please ensure you have
844done enough human work to validate that any issue is (a) in our threat model,
845and (b) reachable in Chrome by constructing a POC, generating an ASAN trace,
846recording the bug reproducing, or performing your own debugging.
847
848AI is prone to hallucinations when asked to find security bugs and can generate
849reports that repeat previously fixed issues, or describe general classes of bugs
850without discovering a specific actionable issue. As the reports can be lengthy,
851they take a lot of time for our security experts to process and understand
852before closing. Submitting reports without doing some work yourself to validate
853that an issue is actually present in Chrome harms our users by wasting the time
854and resources of the Chrome security team.
855
856Submitting multiple low-quality AI generated reports will be treated as spamming
857and has lead to accounts being banned from our reporting systems.
858
859AI can be used to accelerate developer workflows and may be useful when
860understanding code or translating from one language to another. AI tools can be
861helpful when searching for security vulnerabilities in Chrome, but remember that
862additional work must be done to ensure that vulnerability reports are brief,
863actionable, and reproducible. These must meet the prerequisites of a [baseline
864security bug report](https://g.co/chrome/vrp#report-quality) before we can pass
865them to teams to be fixed.
866
Alex Goughe7bcbea2022-05-03 21:45:34867## Certificates & Connection Indicators
Chris Palmer554c66e2017-07-29 01:02:56868
869<a name="TOC-Where-are-the-security-indicators-located-in-the-browser-window-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34870### Where are the security indicators located in the browser window?
Chris Palmer554c66e2017-07-29 01:02:56871
872The topmost portion of the browser window, consisting of the **Omnibox** (or
873**Location Bar**), navigation icons, menu icon, and other indicator icons, is
874sometimes called the browser **chrome** (not to be confused with the Chrome
875Browser itself). Actual security indicators can only appear in this section of
876the window. There can be no trustworthy security indicators elsewhere.
877
878Furthermore, Chrome can only guarantee that it is correctly representing URLs
879and their origins at the end of all navigation. Quirks of URL parsing, HTTP
880redirection, and so on are not security concerns unless Chrome is
881misrepresenting a URL or origin after navigation has completed.
882
883Browsers present a dilemma to the user since the output is a combination of
884information coming from both trustworthy sources (the browser itself) and
885untrustworthy sources (the web page), and the untrustworthy sources are allowed
886virtually unlimited control over graphical presentation. The only restriction on
887the page's presentation is that it is confined to the large rectangular area
888directly underneath the chrome, called the **viewport**. Things like hover text
889and URL preview(s), shown in the viewport, are entirely under the control of the
890web page itself. They have no guaranteed meaning, and function only as the page
891desires. This can be even more confusing when pages load content that looks like
892chrome. For example, many pages load images of locks, which look similar to the
893meaningful HTTPS lock in the Omnibox, but in fact do not convey any meaningful
894information about the transport security of that page.
895
896When the browser needs to show trustworthy information, such as the bubble
897resulting from a click on the lock icon, it does so by making the bubble overlap
Ryan Dicksonbbcdf3d2022-11-16 19:43:51898chrome. This visual detail can't be imitated by the page itself since the page
899is confined to the viewport.
Chris Palmer554c66e2017-07-29 01:02:56900
Ryan Dicksonbbcdf3d2022-11-16 19:43:51901<a name="TOC-Why-does-Chrome-show-a-lock-even-if-my-HTTPS-connection-is-being-proxied-"></a>
902### Why does Chrome show a lock, even if my HTTPS connection is being proxied?
Chris Palmer554c66e2017-07-29 01:02:56903
904Some types of software intercept HTTPS connections. Examples include anti-virus
905software, corporate network monitoring tools, and school censorship software. In
906order for the interception to work, you need to install a private trust anchor
907(root certificate) onto your computer. This may have happened when you installed
908your anti-virus software, or when your company's network administrator set up
909your computer. If that has occurred, your HTTPS connections can be viewed or
910modified by the software.
911
912Since you have allowed the trust anchor to be installed onto your computer,
913Chrome assumes that you have consented to HTTPS interception. Anyone who can add
914a trust anchor to your computer can make other changes to your computer, too,
915including changing Chrome. (See also [Why aren't physically-local attacks in
Avi Drissman36d4e2e2017-07-31 20:54:39916Chrome's threat model?](#TOC-Why-aren-t-physically-local-attacks-in-Chrome-s-threat-model-).)
Chris Palmer554c66e2017-07-29 01:02:56917
918<a name="TOC-Why-can-t-I-select-Proceed-Anyway-on-some-HTTPS-error-screens-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34919### Why can’t I select Proceed Anyway on some HTTPS error screens?
Chris Palmer554c66e2017-07-29 01:02:56920
921A key guarantee of HTTPS is that Chrome can be relatively certain that it is
922connecting to the true web server and not an impostor. Some sites request an
923even higher degree of protection for their users (i.e. you): they assert to
924Chrome (via Strict Transport Security β€”
Xiaoyin Liub7985e52017-09-21 18:07:46925[HSTS](https://tools.ietf.org/html/rfc6797) β€” or by other means) that any
Chris Palmer554c66e2017-07-29 01:02:56926server authentication error should be fatal, and that Chrome must close the
927connection. If you encounter such a fatal error, it is likely that your network
928is under attack, or that there is a network misconfiguration that is
929indistinguishable from an attack.
930
931The best thing you can do in this situation is to raise the issue to your
932network provider (or corporate IT department).
933
934Chrome shows non-recoverable HTTPS errors only in cases where the true server
935has previously asked for this treatment, and when it can be relatively certain
936that the current server is not the true server.
937
938<a name="TOC-How-does-key-pinning-interact-with-local-proxies-and-filters-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34939### How does key pinning interact with local proxies and filters?
Chris Palmer554c66e2017-07-29 01:02:56940
941To enable certificate chain validation, Chrome has access to two stores of trust
Ryan Dicksonbbcdf3d2022-11-16 19:43:51942anchors (i.e., certificates that are empowered as issuers). One trust anchor
Alex Goughc9ab81fd2023-05-15 19:03:14943store is for authenticating public internet servers, and depending on the
Ryan Dicksonbbcdf3d2022-11-16 19:43:51944version of Chrome being used and the platform it is running on, the
945[Chrome Root Store](https://chromium.googlesource.com/chromium/src/+/main/net/data/ssl/chrome_root_store/faq.md#what-is-the-chrome-root-store)
946might be in use. The private store contains certificates installed by the user
947or the administrator of the client machine. Private intranet servers should
948authenticate themselves with certificates issued by a private trust anchor.
Chris Palmer554c66e2017-07-29 01:02:56949
950Chrome’s key pinning feature is a strong form of web site authentication that
951requires a web server’s certificate chain not only to be valid and to chain to a
952known-good trust anchor, but also that at least one of the public keys in the
953certificate chain is known to be valid for the particular site the user is
954visiting. This is a good defense against the risk that any trust anchor can
955authenticate any web site, even if not intended by the site owner: if an
956otherwise-valid chain does not include a known pinned key (β€œpin”), Chrome will
957reject it because it was not issued in accordance with the site operator’s
958expectations.
959
960Chrome does not perform pin validation when the certificate chain chains up to a
961private trust anchor. A key result of this policy is that private trust anchors
962can be used to proxy (or
Ryan Dicksonbbcdf3d2022-11-16 19:43:51963[MITM](https://en.wikipedia.org/wiki/Man-in-the-middle_attack)) connections,
964even to pinned sites. β€œData loss prevention” appliances, firewalls, content
965filters, and malware can use this feature to defeat the protections of key
966pinning.
Chris Palmer554c66e2017-07-29 01:02:56967
968We deem this acceptable because the proxy or MITM can only be effective if the
969client machine has already been configured to trust the proxy’s issuing
970certificate β€” that is, the client is already under the control of the person who
971controls the proxy (e.g. the enterprise’s IT administrator). If the client does
972not trust the private trust anchor, the proxy’s attempt to mediate the
973connection will fail as it should.
974
Adam Langleyc078ba82018-12-17 17:25:46975<a name="TOC-When-is-key-pinning-enabled-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34976### When is key pinning enabled?
Adam Langleyc078ba82018-12-17 17:25:46977
Eric Lawrence542967372024-12-02 22:13:58978Key pinning is enabled for Chrome-branded non-iOS builds when the local
Adam Langleyc078ba82018-12-17 17:25:46979clock is within ten weeks of the embedded build timestamp. Key pinning is a
980useful security measure but it tightly couples client and server configurations
981and completely breaks when those configurations are out of sync. In order to
982manage that risk we need to ensure that we can promptly update pinning clients
Chris Palmer59877ec2019-11-22 01:28:09983in an emergency and ensure that non-emergency changes can be deployed in a
Adam Langleyc078ba82018-12-17 17:25:46984reasonable timeframe.
985
986Each of the conditions listed above helps ensure those properties:
987Chrome-branded builds are those that Google provides and they all have an
Eric Lawrence542967372024-12-02 22:13:58988auto-update mechanism that can be used in an emergency. Even in cases where
989auto-update is generally effective, there are still non-trivial populations
990of stragglers for various reasons. The ten-week timeout prevents those
991stragglers from causing problems for regular, non-emergency changes and
Adam Langleyc078ba82018-12-17 17:25:46992allows stuck users to still, for example, conduct searches and access Chrome's
993homepage to hopefully get unstuck.
994
995In order to determine whether key pinning is active, try loading
Francois Mariere1b8e702023-07-07 05:25:08996[https://pinning-test.badssl.com/](https://pinning-test.badssl.com/). If key
Adam Langleyc078ba82018-12-17 17:25:46997pinning is active the load will _fail_ with a pinning error.
998
Chris Palmer38d751d002017-08-23 17:37:35999<a name="TOC-How-does-certificate-transparency-interact-with-local-proxies-and-filters-"></a>
Alex Goughe7bcbea2022-05-03 21:45:341000### How does Certificate Transparency interact with local proxies and filters?
Chris Palmer38d751d002017-08-23 17:37:351001
Chris Palmer413f3c02017-08-23 17:47:541002Just as [pinning only applies to publicly-trusted trust
1003anchors](#TOC-How-does-key-pinning-interact-with-local-proxies-and-filters-),
1004Chrome only evaluates Certificate Transparency (CT) for publicly-trusted trust
1005anchors. Thus private trust anchors, such as for enterprise middle-boxes and AV
1006proxies, do not need to be publicly logged in a CT log.
Chris Palmer38d751d002017-08-23 17:37:351007
Chris Palmer554c66e2017-07-29 01:02:561008<a name="TOC-Why-are-some-web-platform-features-only-available-in-HTTPS-page-loads-"></a>
Alex Goughe7bcbea2022-05-03 21:45:341009### Why are some web platform features only available in HTTPS page-loads?
Chris Palmer554c66e2017-07-29 01:02:561010
1011The full answer is here: we [Prefer Secure Origins For Powerful New
1012Features](https://www.chromium.org/Home/chromium-security/prefer-secure-origins-for-powerful-new-features).
1013In short, many web platform features give web origins access to sensitive new
1014sources of information, or significant power over a user's experience with their
Eric Romaned127b672018-01-23 19:36:381015computer/phone/watch/etc., or over their experience with it. We would therefore
Chris Palmer554c66e2017-07-29 01:02:561016like to have some basis to believe the origin meets a minimum bar for security,
1017that the sensitive information is transported over the Internet in an
Eric Romaned127b672018-01-23 19:36:381018authenticated and confidential way, and that users can make meaningful choices
Chris Palmer554c66e2017-07-29 01:02:561019to trust or not trust a web origin.
1020
1021Note that the reason we require secure origins for WebCrypto is slightly
1022different: An application that uses WebCrypto is almost certainly using it to
1023provide some kind of security guarantee (e.g. encrypted instant messages or
1024email). However, unless the JavaScript was itself transported to the client
1025securely, it cannot actually provide any guarantee. (After all, a MITM attacker
1026could have modified the code, if it was not transported securely.)
1027
Camille0f2a39f2022-11-04 10:45:041028See the [Web Platform Security
Chris Thompson1f8b00062023-05-31 00:38:491029guidelines](https://chromium.googlesource.com/chromium/src/+/main/docs/security/web-platform-security-guidelines.md#encryption)
Camille0f2a39f2022-11-04 10:45:041030for more information on security guidelines applicable to web platform APIs.
1031
Chris Palmer554c66e2017-07-29 01:02:561032<a name="TOC-Which-origins-are-secure-"></a>
Alex Goughe7bcbea2022-05-03 21:45:341033### Which origins are "secure"?
Chris Palmer554c66e2017-07-29 01:02:561034
1035Secure origins are those that match at least one of the following (scheme, host,
1036port) patterns:
1037
1038* (https, *, *)
1039* (wss, *, *)
1040* (*, localhost, *)
1041* (*, 127/8, *)
1042* (*, ::1/128, *)
1043* (file, *, β€”)
1044* (chrome-extension, *, β€”)
1045
1046That is, secure origins are those that load resources either from the local
1047machine (necessarily trusted) or over the network from a
1048cryptographically-authenticated server. See [Prefer Secure Origins For Powerful
1049New
1050Features](https://sites.google.com/a/chromium.org/dev/Home/chromium-security/prefer-secure-origins-for-powerful-new-features)
1051for more details.
1052
1053<a name="TOC-What-s-the-story-with-certificate-revocation-"></a>
Alex Goughe7bcbea2022-05-03 21:45:341054### What's the story with certificate revocation?
Chris Palmer554c66e2017-07-29 01:02:561055
Ryan Dicksonbbcdf3d2022-11-16 19:43:511056Chrome's primary mechanism for checking certificate revocation status is
Joe DeBlasio0c6480712024-07-04 00:11:511057[CRLSets](https://dev.chromium.org/Home/chromium-security/crlsets).
Ryan Dicksonbbcdf3d2022-11-16 19:43:511058Additionally, by default, [stapled Online Certificate Status Protocol (OCSP)
1059responses](https://en.wikipedia.org/wiki/OCSP_stapling) are honored.
Chris Palmer554c66e2017-07-29 01:02:561060
Joe DeBlasio0c6480712024-07-04 00:11:511061As of 2024, Chrome enforces most security-relevant certificate revocations that
1062are visible via Certificate Revocation Lists (CRLs) published to the
1063[CCADB](https://www.ccadb.org/) via CRLSets. There is some inherent delay in
1064getting revocation information to Chrome clients, but most revocations should
1065reach most users within a few days of appearing on a CA's CRL.
1066
1067Chrome clients do not, by default, perform "online" certificate revocation
1068status checks using CRLs directly or via OCSP URLs included in certificates.
1069This is because online checks offer limited security value unless a client, like
danakjc8fb82602024-07-09 16:36:091070Chrome, refuses to connect to a website if it cannot get a valid response,
Chris Palmer554c66e2017-07-29 01:02:561071
Ryan Dicksonbbcdf3d2022-11-16 19:43:511072Unfortunately, there are many widely-prevalent causes for why a client
1073might be unable to get a valid certificate revocation status response to
1074include:
1075* timeouts (e.g., an OCSP responder is online but does not respond within an
Alex Goughc9ab81fd2023-05-15 19:03:141076 acceptable time limit),
1077* availability issues (e.g., the OCSP responder is offline),
1078* invalid responses (e.g., a "stale" or malformed status response), and
1079* local network attacks misrouting traffic or blocking responses.
Chris Palmer554c66e2017-07-29 01:02:561080
Alex Goughc9ab81fd2023-05-15 19:03:141081Additional concern with OCSP checks are related to privacy. OCSP
Ryan Dicksonbbcdf3d2022-11-16 19:43:511082requests reveal details of individuals' browsing history to the operator of the
1083OCSP responder (i.e., a third party). These details can be exposed accidentally
1084(e.g., via data breach of logs) or intentionally (e.g., via subpoena). Chrome
1085used to perform revocation checks for Extended Validation certificates, but that
1086behavior 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:561087
Ryan Dicksonbbcdf3d2022-11-16 19:43:511088The following enterprise policies can be used to change the default revocation
1089checking behavior in Chrome, though these may be removed in the future:
1090* [enable soft-fail OCSP](https://chromeenterprise.google/policies/#EnableOnlineRevocationChecks)
1091* [hard-fail for local trust anchors](https://chromeenterprise.google/policies/#RequireOnlineRevocationChecksForLocalAnchors).
Chris Palmer554c66e2017-07-29 01:02:561092
Alex Goughe7bcbea2022-05-03 21:45:341093## Passwords & Local Data
1094
1095<a name="TOC-What-about-unmasking-of-passwords-with-the-developer-tools-"></a>
1096### What about unmasking of passwords with the developer tools?
1097
1098One of the most frequent reports we receive is password disclosure using the
1099Inspect Element feature (see [Issue 126398](https://crbug.com/126398) for an
1100example). People reason that "If I can see the password, it must be a bug."
1101However, this is just one of the [physically-local attacks described in the
1102previous
1103section](#TOC-Why-aren-t-physically-local-attacks-in-Chrome-s-threat-model-),
1104and all of those points apply here as well.
1105
1106The reason the password is masked is only to prevent disclosure via
1107"shoulder-surfing" (i.e. the passive viewing of your screen by nearby persons),
1108not because it is a secret unknown to the browser. The browser knows the
1109password at many layers, including JavaScript, developer tools, process memory,
1110and so on. When you are physically local to the computer, and only when you are
1111physically local to the computer, there are, and always will be, tools for
1112extracting the password from any of these places.
1113
1114<a name="TOC-Is-Chrome-s-support-for-userinfo-in-HTTP-URLs-e.g.-http:-user:password-example.com-considered-a-vulnerability-"></a>
1115### Is Chrome's support for userinfo in HTTP URLs (e.g. http://user:password@example.com) considered a vulnerability?
1116
1117[Not at this time](https://crbug.com/626951). Chrome supports HTTP and HTTPS
1118URIs with username and password information embedded within them for
1119compatibility with sites that require this feature. Notably, Chrome will
1120suppress display of the username and password information after navigation in
1121the URL box to limit the effectiveness of spoofing attacks that may try to
1122mislead the user. For instance, navigating to
1123`http://trustedsite.com@evil.example.com` will show an address of
1124`http://evil.example.com` after the page loads.
1125
Tom Sepez83fd1f612022-07-18 21:21:271126Note: We often receive reports calling this an "open redirect". However, it has
1127nothing to do with redirection; rather the format of URLs is complex and the
1128userinfo may be misread as a host.
1129
Chris Palmer554c66e2017-07-29 01:02:561130<a name="TOC-Why-does-the-Password-Manager-ignore-autocomplete-off-for-password-fields-"></a>
Alex Goughe7bcbea2022-05-03 21:45:341131### Why does the Password Manager ignore `autocomplete='off'` for password fields?
Chris Palmer554c66e2017-07-29 01:02:561132
1133Ignoring `autocomplete='off'` for password fields allows the password manager to
1134give more power to users to manage their credentials on websites. It is the
1135security team's view that this is very important for user security by allowing
1136users to have unique and more complex passwords for websites. As it was
1137originally implemented, autocomplete='off' for password fields took control away
1138from the user and gave control to the web site developer, which was also a
1139violation of the [priority of
Adam Barth3a3bfef2021-10-06 02:36:441140constituencies](https://www.schemehostport.com/2011/10/priority-of-constituencies.html).
Chris Palmer554c66e2017-07-29 01:02:561141For a longer discussion on this, see the [mailing list
1142announcement](https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/zhhj7hCip5c).
1143
Eric Lawrence122e86882017-12-07 22:53:051144<a name="TOC-Signout-of-Chrome"></a>
Alex Goughe7bcbea2022-05-03 21:45:341145### Signing out of Chrome does not delete previously-synced data?
Eric Lawrence122e86882017-12-07 22:53:051146
1147If you have signed into Chrome and subsequently sign out of Chrome, previously
1148saved passwords and other data are not deleted from your device unless you
1149select that option when signing out of Chrome.
1150
1151If you change your Google password, synced data will no longer be updated in
1152Chrome instances until you provide the new password to Chrome on each device
1153configured to sync. However, previously synced data [remains available](https://crbug.com/792967)
1154on each previously-syncing device unless manually removed.
1155
Chris Palmer554c66e2017-07-29 01:02:561156<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:341157### Why doesn't the Password Manager save my Google password if I am using Chrome Sync?
Chris Palmer554c66e2017-07-29 01:02:561158
1159In its default mode, Chrome Sync uses your Google password to protect all the
1160other passwords in the Chrome Password Manager.
1161
1162In general, it is a bad idea to store the credential that protects an asset in
1163the same place as the asset itself. An attacker who could temporarily compromise
1164the Chrome Password Manager could, by stealing your Google password, obtain
1165continuing access to all your passwords. Imagine you store your valuables in a
1166safe, and you accidentally forget to close the safe. If a thief comes along,
1167they might steal all of your valuables. That’s bad, but imagine if you had also
1168left the combination to the safe inside as well. Now the bad guy has access to
1169all of your valuables and all of your future valuables, too. The password
1170manager is similar, except you probably would not even know if a bad guy
1171accessed it.
1172
1173To prevent this type of attack, Chrome Password Manager does not save the Google
1174password for the account you sync with Chrome. If you have multiple Google
1175accounts, the Chrome Password Manager will save the passwords for accounts other
1176than the one you are syncing with.
1177
1178<a name="TOC-Does-the-Password-Manager-store-my-passwords-encrypted-on-disk-"></a>
Alex Goughe7bcbea2022-05-03 21:45:341179### Does the Password Manager store my passwords encrypted on disk?
Chris Palmer554c66e2017-07-29 01:02:561180
1181Chrome generally tries to use the operating system's user storage mechanism
1182wherever possible and stores them encrypted on disk, but it is platform
1183specific:
1184
Vasilii Sukhanov6afa0372025-07-29 18:00:311185* On Windows, Chrome uses [App-Bound encryption](https://source.chromium.org/chromium/chromium/src/+/main:components/os_crypt/async/)
1186 to store them on disk encrypted with a key only accessible to the Chrome
1187 process as well as admin processes.
Viktor Semeniuk3720fc42024-04-03 09:33:521188* On macOS and iOS, Chrome previously stored credentials directly in the user's
Chris Palmer554c66e2017-07-29 01:02:561189 Keychain, but for technical reasons, it has switched to storing the
1190 credentials in "Login Data" in the Chrome users profile directory, but
1191 encrypted on disk with a key that is then stored in the user's Keychain.
Viktor Semeniuk3720fc42024-04-03 09:33:521192 See [Issue 466638](https://crbug.com/466638) and [Issue 520437](https://crbug.com/520437) for further explanation.
Christos Froussios2a02cc52019-07-30 07:04:461193* On Linux, Chrome previously stored credentials directly in the user's
Tom Anderson761687a2023-06-14 17:27:391194 Gnome Secret Service or KWallet, but for technical reasons, it has switched to
Christos Froussios2a02cc52019-07-30 07:04:461195 storing the credentials in "Login Data" in the Chrome user's profile directory,
1196 but encrypted on disk with a key that is then stored in the user's Gnome
Tom Anderson761687a2023-06-14 17:27:391197 Secret Service or KWallet. If there is no available Secret Service or KWallet,
1198 the data is not encrypted when stored.
Viktor Semeniuk3720fc42024-04-03 09:33:521199* On Android, Chrome doesn't store in the profile anymore, instead it uses Google
1200 Play Services to access passwords stored on a device.
1201* On ChromeOS passwords are only obfuscated since all profile data is encrypted
1202 by the OS.
Chris Palmer554c66e2017-07-29 01:02:561203
Adrian Taylorae8545252021-05-27 17:16:511204<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:341205### If there's a way to see stored passwords without entering a password, is this a security bug?
Adrian Taylorae8545252021-05-27 17:16:511206
1207No. If an attacker has control of your login on your device, they can get to
1208your passwords by inspecting Chrome disk files or memory. (See
1209[why aren't physically-local attacks in Chrome's threat
1210model](#TOC-Why-aren-t-physically-local-attacks-in-Chrome-s-threat-model-)).
1211
1212On some platforms we ask for a password before revealing stored passwords,
1213but this is not considered a robust defense. It’s historically to stop
1214users inadvertently revealing their passwords on screen, for example if
1215they’re screen sharing. We don’t do this on all platforms because we consider
1216such risks greater on some than on others.
1217
Martin Kreichgauer8788fc622024-09-11 21:06:191218
1219<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>
1220### On some websites, I can use passkeys without passing a lock screen or biometric challenge. Is this a security bug?
1221
1222Probably not. When a website requests a passkeys signature, it can choose
1223whether the authenticator should perform user verification (e.g. with a local
1224user lock screen challenge). Unless the website sets user verification parameter
1225in the request to 'required', the passkey authenticator can choose to skip the
1226lock screen challenge. Authenticators commonly skip an optional challenge if
1227biometrics are unavailable (e.g. on a laptop with a closed lid).
1228
1229If you can demonstrate bypassing the user verification challenge where the
1230request user verification parameter is set to 'required', please
1231[report it](https://issues.chromium.org/issues/new?noWizard=true&component=1363614&template=1922342).
1232
Alex Goughe7bcbea2022-05-03 21:45:341233## Other
Alex Gough8dc4f562022-04-18 22:14:051234
Chris Palmer554c66e2017-07-29 01:02:561235<a name="TOC-What-is-the-security-story-for-Service-Workers-"></a>
Alex Goughe7bcbea2022-05-03 21:45:341236### What is the security story for Service Workers?
Chris Palmer554c66e2017-07-29 01:02:561237
1238See our dedicated [Service Worker Security
Eric Lawrence [MSFT]f80579552021-04-22 18:39:261239FAQ](https://chromium.googlesource.com/chromium/src/+/main/docs/security/service-worker-security-faq.md).
Chris Palmer554c66e2017-07-29 01:02:561240
Devlin Cronin7304fec2021-06-02 22:51:261241<a name="TOC-What-is-the-security-story-for-Extensions-"></a>
Alex Goughe7bcbea2022-05-03 21:45:341242### What is the security story for Extensions?
Devlin Cronin7304fec2021-06-02 22:51:261243
1244See our dedicated [Extensions Security FAQ](https://chromium.googlesource.com/chromium/src/+/main/extensions/docs/security_faq.md).
Adrian Taylord57a4c62022-11-10 10:27:501245
Adrian Taylor1bbbf142023-08-29 17:41:171246<a name="TOC-What-is-the-security-model-for-Chrome-Custom-Tabs-"></a>
1247### What's the security model for Chrome Custom Tabs?
1248
1249See our [Chrome Custom Tabs security FAQ](custom-tabs-faq.md).
1250
Muyao Xu1d58c632025-03-05 19:01:141251<a name="TOC-What-is-the-security-story-for-Fullscreen-"></a>
1252### What is the security story for Fullscreen?
1253
1254See our dedicated [Fullscreen Security FAQ](https://chromium.googlesource.com/chromium/src/+/main/docs/security/fullscreen.md).
1255
Adrian Taylor98e9c792024-04-29 18:59:231256<a name="TOC-How-is-security-different-in-Chrome-for-iOS--"></a>
1257### How is security different in Chrome for iOS?
1258
1259Chrome for iOS does not use Chrome's standard rendering engine. Due to Apple's
1260iOS platform restrictions, it instead uses Apple's WebKit engine and a more
1261restricted process isolation model. This means its security properties are
1262different from Chrome on all other platforms.
1263
1264The differences in security are far too extensive to list exhaustively, but some
1265notable points are:
1266
1267* Chromium's [site
1268 isolation](https://www.chromium.org/Home/chromium-security/site-isolation/)
1269 isn't used; WebKit has its own alternative implementation with different costs
1270 and benefits.
1271* WebKit has [historically been slower at shipping security
1272 fixes](https://googleprojectzero.blogspot.com/2022/02/a-walk-through-project-zero-metrics.html).
1273* Chrome's network stack, [root
1274 store](https://www.chromium.org/Home/chromium-security/root-ca-policy/) and
1275 associated technology are not used, so
1276 the platform will make different decisions about what web servers to trust.
1277* Sandboxing APIs are not available for native code.
1278
1279Given that the fundamentals of the browser are so different, and given these
1280limitations, Chrome for iOS has historically not consistently implemented some
1281of Chrome's [standard security guidelines](rules.md). This includes the
1282important [Rule of Two](rule-of-2.md). Future Chrome for iOS features should
1283meet all guidelines except in cases where the lack of platform APIs make it
1284unrealistic. (The use of WebAssembly-based sandboxing is currently considered
1285unrealistic though this could change in future.)
1286
1287If the Rule of Two cannot be followed, features for Chrome for iOS should
1288nevertheless follow it as closely as possible, and adopt additional mitigations
1289where they cannot:
1290
1291* First consider adding a validation layer between unsafe code and web contents,
1292 or adopting memory-safe parsers at the boundary between the renderer and the
1293 browser process. Consider changing the design of the feature so the riskiest
1294 parsing can happen in javascript injected in the renderer process.
1295* Any unsafe unsandboxed code that is exposed to web contents or other
1296 untrustworthy data sources must be extensively tested and fuzzed.
1297
1298The Chrome team is enthusiastic about the future possibility of making a version
1299of Chrome for iOS that meets our usual security standards if richer platform
1300facilities become widely available: this will require revisiting existing
1301features to see if adjustment is required.
1302
Adrian Taylor82a534b2023-05-09 19:21:201303<a name="TOC-Are-all-Chrome-updates-important--"></a>
1304### Are all Chrome updates important?
1305
1306Yes - see [our updates FAQ](updates.md).
1307
1308<a name="TOC-What-older-Chrome-versions-are-supported--"></a>
1309### What older Chrome versions are supported?
1310
1311We always recommend being on the most recent Chrome stable version - see
1312[our updates FAQ](updates.md).
1313
Adrian Taylord57a4c62022-11-10 10:27:501314<a name="TOC-Im-making-a-Chromium-based-browser-how-should-I-secure-it-"></a>
1315### I'm making a Chromium-based browser. How should I secure it?
1316
1317If you want to make a browser based on Chromium, you should stay up to date
1318with Chromium's security fixes. There are adversaries who weaponize fixed
1319Chromium bugs ("n-day vulnerabilities") to target browsers which haven’t yet
1320absorbed those fixes.
1321
1322Decide whether your approach is to stay constantly up to date with Chromium
1323releases, or to backport security fixes onto some older version, upgrading
1324Chromium versions less frequently.
1325
1326Backporting security fixes sounds easier than forward-porting features, but in
1327our experience, this is false. Chromium releases 400+ security bug fixes per
1328year ([example
1329query](https://bugs.chromium.org/p/chromium/issues/list?q=type%3DBug-Security%20has%3Arelease%20closed%3Etoday-730%20closed%3Ctoday-365%20allpublic&can=1)).
1330Some downstream browsers take risks by backporting only Medium+ severity fixes,
1331but that's still over 300 ([example
1332query](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)).
1333Most are trivial cherry-picks; but others require rework and require versatile
1334engineers who can make good decisions about any part of a large codebase.
1335
1336Our recommendation is to stay up-to-date with Chrome's released versions. You
1337should aim to release a version of your browser within just a few days of each
1338Chrome [stable
1339release](https://chromereleases.googleblog.com/search/label/Stable%20updates).
1340If your browser is sufficiently widely-used, you can [apply for advance notice
1341of fixed vulnerabilities](https://www.chromium.org/Home/chromium-security/) to
1342make this a little easier.
1343
1344Finally, if you choose the backporting approach, please explain the security
1345properties to your users. Some fraction of security improvements cannot be
1346backported. This can happen for several reasons, for example: because they
1347depend upon architectural changes (e.g. breaking API changes); because the
1348security improvement is a significant new feature; or because the security
1349improvement is the removal of a broken feature.
Lily Chen842810ff2024-12-18 17:00:401350
1351<a name="TOC-How-can-I-appeal-a-Safe-Browsing-warning-"></a>
1352### How can I appeal a Safe Browsing warning?
Lily Chenefbacb82025-01-02 17:52:531353To request a review of warnings relating to your own website, use the
Lily Chen842810ff2024-12-18 17:00:401354[Security Issues report](https://support.google.com/webmasters/answer/9044101)
1355page in your Google Search Console. If the warning applies to another site, you
1356may be able to use
1357[https://safebrowsing.google.com/safebrowsing/report_error/](https://safebrowsing.google.com/safebrowsing/report_error/),
1358though you are likely better off contacting the site owner.
1359
Lily Chenefbacb82025-01-02 17:52:531360If your concern relates to malware warnings, you may find the warning in your
Lily Chen842810ff2024-12-18 17:00:401361Security Issues report and request a review from there. There is no separate
1362appeal form or process at this time. Please follow these
1363[guidelines](https://developers.google.com/search/docs/monitor-debug/security/malware#guidelines)
1364to avoid having your binary show warnings from Safe Browsing.