blob: 58f19db9c3e176d21b093218b6e05fea3d0193be [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 dont 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 security@chromium.org 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
50<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:3451### Can I see these security bugs so that I can back-port the fixes to my downstream project?
Chris Palmer554c66e2017-07-29 01:02:5652
53Many developers of other projects use V8, Chromium, and sub-components of
54Chromium in their own projects. This is great! We are glad that Chromium and V8
55suit your needs.
56
57We want to open up fixed security bugs (as described in the previous answer),
58and will generally give downstream developers access sooner. **However, please
59be aware that backporting security patches from recent versions to old versions
60cannot always work.** (There are several reasons for this: The patch won't apply
61to old versions; the solution was to add or remove a feature or change an API;
62the issue may seem minor until it's too late; and so on.) We believe the latest
63stable versions of Chromium and V8 are the most stable and secure. We also
64believe that tracking the latest stable upstream is usually less work for
65greater benefit in the long run than backporting. We strongly recommend that you
66track the latest stable branches, and we support only the latest stable branch.
67
Eric Lawrence122e86882017-12-07 22:53:0568<a name="TOC-Severity-Guidelines"></a>
Alex Goughe7bcbea2022-05-03 21:45:3469### How does the Chrome team determine severity of security bugs?
Eric Lawrence122e86882017-12-07 22:53:0570
71See the [severity guidelines](severity-guidelines.md) for more information.
Tom Sepeze8fb33202018-11-01 19:31:3272Only security issues are considered under the security vulnerability rewards
73program. Other types of bugs, which we call "functional bugs", are not.
Eric Lawrence122e86882017-12-07 22:53:0574
Alex Goughe7bcbea2022-05-03 21:45:3475## Threat Model
Chris Palmer554c66e2017-07-29 01:02:5676
Eric Lawrence15fdea252017-08-09 19:37:4177<a name="TOC-Timing-Attacks"></a>
Alex Goughe7bcbea2022-05-03 21:45:3478### Are timing attacks considered security vulnerabilities?
Eric Lawrence15fdea252017-08-09 19:37:4179
80Some timing attacks are considered security vulnerabilities, and some are
81considered privacy vulnerabilities. Timing attacks vary significantly in terms
82of impact, reliability, and exploitability.
83
84Some timing attacks weaken mitigations like ASLR (e.g.
85[Issue 665930](https://crbug.com/665930)). Others attempt to circumvent the same
86origin policy, for instance, by using SVG filters to read pixels
87cross-origin (e.g. [Issue 686253](https://crbug.com/686253) and
88[Issue 615851](https://crbug.com/615851)).
89
90Many timing attacks rely upon the availability of high-resolution timing
91information [Issue 508166](https://crbug.com/508166); such timing data often has
92legitimate usefulness in non-attack scenarios making it unappealing to remove.
93
94Timing attacks against the browser's HTTP Cache (like
95[Issue 74987](https://crbug.com/74987)) can potentially leak information about
96which sites the user has previously loaded. The browser could attempt to protect
97against such attacks (e.g. by bypassing the cache) at the cost of performance
98and thus user-experience. To mitigate against such timing attacks, end-users can
99delete browsing history and/or browse sensitive sites using Chrome's Incognito
100or Guest browsing modes.
101
102Other timing attacks can be mitigated via clever design changes. For instance,
103[Issue 544765](https://crbug.com/544765) describes an attack whereby an attacker
104can probe for the presence of HSTS rules (set by prior site visits) by timing
Eric Lawrence29ca2722018-02-22 19:04:05105the load of resources with URLs "fixed-up" by HSTS. Prior to Chrome 64, HSTS
106rules [were shared](https://crbug.com/774643) between regular browsing and
107Incognito mode, making the attack more interesting. The attack was mitigated by
108changing Content-Security-Policy such that secure URLs will match rules
109demanding non-secure HTTP urls, a fix that has also proven useful to help to
110unblock migrations to HTTPS. Similarly, [Issue 707071](https://crbug.com/707071)
111describes a timing attack in which an attacker could determine what Android
112applications are installed; the attack was mitigated by introducing randomness
113in the execution time of the affected API.
Eric Lawrence15fdea252017-08-09 19:37:41114
Alex Goughe7bcbea2022-05-03 21:45:34115<a name="TOC-What-if-a-Chrome-component-breaks-an-OS-security-boundary-"></a>
116### What if a Chrome component breaks an OS security boundary?
117
118If Chrome or any of its components (e.g. updater) can be abused to
119perform a local privilege escalation, then it may be treated as a
120valid security vulnerability.
121
122Running any Chrome component with higher privileges than intended is
123not a security bug and we do not recommend running Chrome as an
124Administrator on Windows, or as root on POSIX.
125
126<a name="TOC-Why-isn-t-passive-browser-fingerprinting-including-passive-cookies-in-Chrome-s-threat-model-"></a>
127<a name="TOC-What-is-Chrome-s-threat-model-for-fingerprinting-"></a>
128### What is Chrome's threat model for fingerprinting?
129
130> **Update, August 2019:** Please note that this answer has changed. We have
131> updated our threat model to include fingerprinting.
132
133Although [we do not consider fingerprinting issues to be *security
134vulnerabilities*](#TOC-Are-privacy-issues-considered-security-bugs-), we do now
135consider them to be privacy bugs that we will try to resolve. We distinguish two
136forms of fingerprinting.
137
138* **Passive fingerprinting** refers to fingerprinting techniques that do not
139require a JavaScript API call to achieve. This includes (but is not limited to)
140mechanisms like [ETag
141cookies](https://en.wikipedia.org/wiki/HTTP_ETag#Tracking_using_ETags) and [HSTS
142cookies](https://security.stackexchange.com/questions/79518/what-are-hsts-super-cookies).
143* **Active fingerprinting** refers to fingerprinting techniques that do require
144a JavaScript API call to achieve. Examples include most of the techniques in
145[EFF's Panopticlick proof of concept](https://panopticlick.eff.org).
146
147For passive fingerprinting, our ultimate goal is (to the extent possible) to
148reduce the information content available to below the threshold for usefulness.
149
150For active fingerprinting, our ultimate goal is to establish a [privacy
151budget](https://github.com/bslassey/privacy-budget) and to keep web origins
152below the budget (such as by rejecting some API calls when the origin exceeds
153its budget). To avoid breaking rich web applications that people want to use,
154Chrome may increase an origin's budget when it detects that a person is using
155the origin heavily. As with passive fingerprinting, our goal is to set the
156default budget below the threshold of usefulness for fingerprinting.
157
158These are both long-term goals. As of this writing (August 2019) we do not
159expect that Chrome will immediately achieve them.
160
161For background on fingerprinting and the difficulty of stopping it, see [Arvind
162Narayanan's site](https://33bits.wordpress.com/about/) and [Peter Eckersley's
163discussion of the information theory behind
164Panopticlick](https://www.eff.org/deeplinks/2010/01/primer-information-theory-and-privacy).
165There is also [a pretty good analysis of in-browser fingerprinting
166vectors](https://dev.chromium.org/Home/chromium-security/client-identification-mechanisms).
167
168<a name="TOC-I-found-a-phishing-or-malware-site-not-blocked-by-Safe-Browsing.-Is-this-a-security-vulnerability-"></a>
169### I found a phishing or malware site not blocked by Safe Browsing. Is this a security vulnerability?
170
171Malicious sites not yet blocked by Safe Browsing can be reported via
172[https://www.google.com/safebrowsing/report_phish/](https://www.google.com/safebrowsing/report_phish/).
173Safe Browsing is primarily a blocklist of known-unsafe sites; the feature warns
174the user if they attempt to navigate to a site known to deliver phishing or
175malware content. You can learn more about this feature in these references:
176
177* [https://developers.google.com/safe-browsing/](https://developers.google.com/safe-browsing/)
178* [https://www.google.com/transparencyreport/safebrowsing/](https://www.google.com/transparencyreport/safebrowsing/)
179
180In general, it is not considered a security bug if a given malicious site is not
181blocked by the Safe Browsing feature, unless the site is on the blocklist but is
182allowed to load anyway. For instance, if a site found a way to navigate through
183the blocking red warning page without user interaction, that would be a security
184bug. A malicious site may exploit a security vulnerability (for instance,
185spoofing the URL in the **Location Bar**). This would be tracked as a security
186vulnerability in the relevant feature, not Safe Browsing itself.
187
188<a name="TOC-I-can-download-a-file-with-an-unsafe-extension-and-it-is-not-classified-as-dangerous-"></a>
189### I can download a file with an unsafe extension and it is not classified as dangerous - is this a security bug?
190
191Chrome tries to warn users before they open files that might modify their
192system. What counts as a dangerous file will vary depending on the operating
193system Chrome is running on, the default set of file handlers, Chrome settings,
194Enterprise policy and verdicts on both the site and the file from [Safe
195Browsing](https://code.google.com/apis/safebrowsing/). Because of this it will
196often be okay for a user to download and run a file. However, if you can clearly
197demonstrate how to bypass one of these protections then wed like to hear about
198it. You can see if a Safe Browsing check happened by opening
199chrome://safe-browsing before starting the download.
200
201<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>
202### 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?
203<a name="TOC-Extensions-for-downloaded-files-are-not-shown-in-a-file-dialog-"></a>
204### Extensions for downloaded files are not shown in a file dialog - is this a security bug?
205<a name="TOC-The-wrong-description-for-a-file-type-is-added-by-Chrome-"></a>
206### The wrong description for a file type is added by Chrome - is this a security bug?
207
208Chrome tries to let users know what they will be saving and downloading before
209they do so. Often operating systems will obscure a files type or extension and
210there is little we can do about that. Chrome shows information to help users
211make these decisions, both in Chrome-owned UI and in information that Chrome
212passes to OS-owned UI. If this information can be manipulated from a web site to
213mislead a user, then wed like to hear about it.
214[Example](https://crbug.com/1137247).
215
216<a name="TOC-I-can-download-a-file-and-OS-indicators-for-its-provenance-are-not-applied-"></a>
217### I can download a file and OS indicators for its provenance are not applied - is this a security bug?
218
219Chrome attempts to label files downloaded from the internet with metadata using
220operating system APIs where these are available for instance applying the Mark
221of the Web on Windows. This is often not possible (for instance on non-NTFS file
222systems on Windows, or for files inside downloaded archives) or disabled by
223policy. If a web site can cause Chrome to download a file without Chrome then
224adding this metadata as usual, wed like to hear about it.
225
226<a name="TOC-I-can-cause-a-hard-or-soft-link-to-be-written-to-a-directory-bypassing-normal-OS-blocks-"></a>
227### I can cause a hard or soft link to be written to a directory bypassing normal OS blocks - is this a security bug?
228
229Chrome should not allow filesystem links to be created by initiating a download.
230[Example](https://crbug.com/1140417). [Example](https://crbug.com/1137247#c12).
231
232<a name="TOC-I-can-hijack-a-user-gesture-and-trick-a-user-into-accepting-a-permission-or-downloading-a-file-"></a>
233### I can hijack a user gesture and trick a user into accepting a permission or downloading a file - is this a security bug?
234
235Chrome tries to design its prompts to select safe defaults. If a prompt can
236accidentally be accepted without the user having an opportunity to make a
237decision about the prompt then wed like to know. Examples might include poor
238defaults so that a user holding down an enter key might accept a dialog they
239would want to dismiss. [Example](https://crbug.com/854455#c11).
240
241Note that a user navigating to a download will cause a file to be
242[downloaded](https://crbug.com/1114592).
243
244## Areas outside Chrome's Threat Model
245
246<a name="TOC-Are-privacy-issues-considered-security-bugs-"></a>
247### Are privacy issues considered security bugs?
248
249No. The Chrome Privacy team treats privacy issues, such as leaking information
250from Incognito, fingerprinting, and bugs related to deleting browsing data as
251functional bugs.
252
253Privacy issues are not considered under the security vulnerability rewards
254program; the [severity guidelines](severity-guidelines.md) outline the types of
255bugs that are considered security vulnerabilities in more detail.
256
Chris Palmer554c66e2017-07-29 01:02:56257<a name="TOC-What-are-the-security-and-privacy-guarantees-of-Incognito-mode-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34258### What are the security and privacy guarantees of Incognito mode?
Chris Palmer554c66e2017-07-29 01:02:56259
260Bugs in Incognito mode are tracked as privacy bugs, not security bugs.
261
Chris Palmer9839ce42017-08-16 20:59:15262The [Help Center](https://support.google.com/chrome/?p=cpn_incognito) explains
263what privacy protections Incognito mode attempts to enforce. In particular,
264please note that Incognito is not a do not track mode, and it does not hide
265aspects of your identity from web sites. Chrome does offer a way to send Do Not
266Track request to servers; see chrome://settings/?search=do+not+track
Chris Palmer554c66e2017-07-29 01:02:56267
268When in Incognito mode, Chrome does not store any new history, cookies, or other
269state in non-volatile storage. However, Incognito windows will be able to access
270some previously-stored state, such as browsing history.
271
Alex Goughe7bcbea2022-05-03 21:45:34272<a name="TOC-Are-XSS-filter-bypasses-considered-security-bugs-"></a>
273### Are XSS filter bypasses considered security bugs?
274
275No. Chromium once contained a reflected XSS filter called the [XSSAuditor](https://www.chromium.org/developers/design-documents/xss-auditor)
276that was a best-effort second line of defense against reflected XSS flaws found
277in web sites. The XSS Auditor was [removed in Chrome 78](https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/TuYw-EZhO9g/blGViehIAwAJ).
278
Chris Palmer554c66e2017-07-29 01:02:56279<a name="TOC-Are-denial-of-service-issues-considered-security-bugs-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34280### Are denial of service issues considered security bugs?
Chris Palmer554c66e2017-07-29 01:02:56281
Tom Sepeze8fb33202018-11-01 19:31:32282No. Denial of Service (DoS) issues are treated as **abuse** or **stability**
283issues rather than security vulnerabilities.
Chris Palmer554c66e2017-07-29 01:02:56284
285* If you find a reproducible crash, we encourage you to [report
286 it](https://bugs.chromium.org/p/chromium/issues/entry?template=Crash%20Report).
287* If you find a site that is abusing the user experience (e.g. preventing you
288 from leaving a site), we encourage you to [report
289 it](https://crbug.com/new).
290
291DoS issues are not considered under the security vulnerability rewards program;
Varun Khanejadf1bc00e2017-08-10 05:22:40292the [severity guidelines](severity-guidelines.md) outline the types of bugs that
293are considered security vulnerabilities in more detail.
Chris Palmer554c66e2017-07-29 01:02:56294
Chris Palmer554c66e2017-07-29 01:02:56295<a name="TOC-Why-aren-t-physically-local-attacks-in-Chrome-s-threat-model-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34296### Why aren't physically-local attacks in Chrome's threat model?
Chris Palmer554c66e2017-07-29 01:02:56297
298People sometimes report that they can compromise Chrome by installing a
299malicious DLL in a place where Chrome will load it, by hooking APIs (e.g. [Issue
300130284](https://crbug.com/130284)), or by otherwise altering the configuration
Tom Sepezf6b2e782020-04-06 23:08:55301of the device.
Chris Palmer554c66e2017-07-29 01:02:56302
303We consider these attacks outside Chrome's threat model, because there is no way
304for Chrome (or any application) to defend against a malicious user who has
Tom Sepezf6b2e782020-04-06 23:08:55305managed to log into your device as you, or who can run software with the
Chris Palmer554c66e2017-07-29 01:02:56306privileges of your operating system user account. Such an attacker can modify
307executables and DLLs, change environment variables like `PATH`, change
308configuration files, read any data your user account owns, email it to
Tom Sepezf6b2e782020-04-06 23:08:55309themselves, and so on. Such an attacker has total control over your device,
Chris Palmer554c66e2017-07-29 01:02:56310and nothing Chrome can do would provide a serious guarantee of defense. This
311problem is not special to Chrome ­— all applications must trust the
312physically-local user.
313
314There are a few things you can do to mitigate risks from people who have
315physical control over **your** computer, in certain circumstances.
316
317* To stop people from reading your data in cases of device theft or loss, use
318 full disk encryption (FDE). FDE is a standard feature of most operating
319 systems, including Windows Vista and later, Mac OS X Lion and later, and
320 some distributions of Linux. (Some older versions of Mac OS X had partial
321 disk encryption: they could encrypt the user’s home folder, which contains
322 the bulk of a user’s sensitive data.) Some FDE systems allow you to use
323 multiple sources of key material, such as the combination of both a
324 password and a key file on a USB token. When available, you should use
325 multiple sources of key material to achieve the strongest defense. Chrome
326 OS encrypts users’ home directories.
327* If you share your computer with other people, take advantage of your
328 operating system’s ability to manage multiple login accounts, and use a
329 distinct account for each person. For guests, Chrome OS has a built-in
330 Guest account for this purpose.
331* Take advantage of your operating system’s screen lock feature.
332* You can reduce the amount of information (including credentials like
333 cookies and passwords) that Chrome will store locally by using Chrome's
334 Content Settings (chrome://settings/content) and turning off the form
335 auto-fill and password storage features
336 ([chrome://settings/search#password](chrome://settings/search#password)).
337
338There is almost nothing you can do to mitigate risks when using a **public**
339computer.
340
341* Assume everything you do on a public computer will become, well, public.
342 You have no control over the operating system or other software on the
343 machine, and there is no reason to trust the integrity of it.
Eric Lawrence29ca2722018-02-22 19:04:05344* If you must use such a computer, use Incognito mode and close all Incognito
345 windows when you are done browsing to limit the amount of data you leave
346 behind. Note that Incognito mode **provides no protection** if the system has
347 already been compromised as described above.
Chris Palmer554c66e2017-07-29 01:02:56348
349<a name="TOC-Why-aren-t-compromised-infected-machines-in-Chrome-s-threat-model-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34350### Why aren't compromised/infected machines in Chrome's threat model?
Chris Palmer554c66e2017-07-29 01:02:56351
Tom Sepez279d9f42020-11-30 21:58:58352Although the attacker may now be remote, the consequences are essentially the
353same as with physically-local attacks. The attacker's code, when it runs as
354your user account on your machine, can do anything you can do. (See also
355[Microsoft's Ten Immutable Laws Of
Eric Lawrence5e1a9c712018-09-12 20:55:19356Security](https://web.archive.org/web/20160311224620/https://technet.microsoft.com/en-us/library/hh278941.aspx).)
Chris Palmer554c66e2017-07-29 01:02:56357
Tom Sepez279d9f42020-11-30 21:58:58358Other cases covered by this section include leaving a debugger port open to
359the world, remote shells, and so forth.
360
Chris Palmer554c66e2017-07-29 01:02:56361<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:34362### 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:56363
Eric Lawrence29ca2722018-02-22 19:04:05364[No](https://crbug.com/81697). Chrome does not attempt to prevent the user from
365knowingly running script against loaded documents, either by entering script in
366the Developer Tools console or by typing a JavaScript: URI into the URL bar.
367Chrome and other browsers do undertake some efforts to prevent *paste* of script
368URLs in the URL bar (to limit
Chris Palmer554c66e2017-07-29 01:02:56369[social-engineering](https://blogs.msdn.microsoft.com/ieinternals/2011/05/19/socially-engineered-xss-attacks/))
370but users are otherwise free to invoke script against pages using either the URL
371bar or the DevTools console.
372
Tom Sepez5b700482020-04-06 20:07:21373<a name="TOC-Does-executing-JavaScript-from-a-bookmark-mean-there-s-an-XSS-vulnerability-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34374### Does executing JavaScript from a bookmark mean there's an XSS vulnerability?
Tom Sepez5b700482020-04-06 20:07:21375
376No. Chromium allows users to create bookmarks to JavaScript URLs that will run
Chris Palmer554c66e2017-07-29 01:02:56377on the currently-loaded page when the user clicks the bookmark; these are called
378[bookmarklets](https://en.wikipedia.org/wiki/Bookmarklet).
379
Tom Sepezfeca2de2020-04-01 22:58:29380<a name="TOC-Does-executing-JavaScript-in-a-PDF-file-mean-there-s-an-XSS-vulnerability-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34381### Does executing JavaScript in a PDF file mean there's an XSS vulnerability?
Tom Sepezfeca2de2020-04-01 22:58:29382
383No. PDF files have the ability to run JavaScript, usually to facilitate field
384validation during form fill-out. Note that the set of bindings provided to
385the PDF are more limited than those provided by the DOM to HTML documents (e.g.
386no document.cookie).
387
Alex Goughe7bcbea2022-05-03 21:45:34388<a name="TOC-Are-PDF-files-static-content-in-Chromium-"></a>
389### Are PDF files static content in Chromium?
Chris Palmer554c66e2017-07-29 01:02:56390
Alex Goughe7bcbea2022-05-03 21:45:34391No. PDF files have some powerful capabilities including invoking printing or
392posting form data. To mitigate abuse of these capabiliies, such as beaconing
393upon document open, we require interaction with the document (a "user gesture")
394before allowing their use.
Chris Palmer554c66e2017-07-29 01:02:56395
Alex Goughe7bcbea2022-05-03 21:45:34396<a name="TOC-What-about-URL-spoofs-using-Internationalized-Domain-Names-IDN-"></a>
397### What about URL spoofs using Internationalized Domain Names (IDN)?
Chris Palmer554c66e2017-07-29 01:02:56398
Alex Goughe7bcbea2022-05-03 21:45:34399We try to balance the needs of our international userbase while protecting users
400against confusable homograph attacks. Despite this, there are a list of known
401IDN display issues we are still working on.
Chris Palmer554c66e2017-07-29 01:02:56402
Alex Goughe7bcbea2022-05-03 21:45:34403* Please see [this document](https://docs.google.com/document/d/1_xJz3J9kkAPwk3pma6K3X12SyPTyyaJDSCxTfF8Y5sU)
404for a list of known issues and how we handle them.
405* [This document](https://chromium.googlesource.com/chromium/src/+/main/docs/idn.md)
406describes Chrome's IDN policy in detail.
Chris Palmer554c66e2017-07-29 01:02:56407
Alex Goughe7bcbea2022-05-03 21:45:34408<a name="TOC-Chrome-silently-syncs-extensions-across-devices.-Is-this-a-security-vulnerability-"></a>
409### Chrome silently syncs extensions across devices. Is this a security vulnerability?
Chris Palmer554c66e2017-07-29 01:02:56410
Alex Goughe7bcbea2022-05-03 21:45:34411This 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:45412
Alex Goughe7bcbea2022-05-03 21:45:34413<a name="TOC-Why-arent-null-pointer-dereferences-considered-security-bugs-"></a>
414### Why aren't null pointer dereferences considered security bugs?
Chris Palmer8d95482a2019-08-28 22:48:45415
Alex Goughe7bcbea2022-05-03 21:45:34416Null pointer dereferences with consistent, small, fixed offsets are not considered
417security bugs. A read or write to the NULL page results in a non-exploitable crash.
418If the offset is larger than a page, or if there's uncertainty about whether the
419offset is controllable, it is considered a security bug.
Chris Palmer8d95482a2019-08-28 22:48:45420
Alex Goughe7bcbea2022-05-03 21:45:34421<a name="TOC-Are-stack-overflows-considered-security-bugs-"></a>
422### Are stack overflows considered security bugs?
423
424No. Guard pages mean that stack overflows are considered unexploitable, and
425are regarded as [denial of service bugs](#TOC-Are-denial-of-service-issues-considered-security-bugs-).
426The only exception is if an attacker can jump over the guard pages allocated by
427the operating system and avoid accessing them, e.g.:
428
429* A frame with a very large stack allocation.
430* C variable length array with an attacker-controlled size.
431* A call to `alloca()` with an attacker-controlled size.
432
433<a name="TOC-Are-enterprise-admins-considered-privileged-"></a>
434### Are enterprise admins considered privileged?
435
436Chrome [can't guard against local
437attacks](#TOC-Why-aren-t-physically-local-attacks-in-Chrome-s-threat-model-).
438Enterprise administrators often have full control over the device. Does Chrome
439assume that enterprise administrators are as privileged and powerful as other
440local users? It depends:
441
442* On a fully managed machine, for example a [domain-joined Windows
443 machine](https://docs.microsoft.com/en-us/windows-server/identity/ad-fs/deployment/join-a-computer-to-a-domain),
444 a device managed via a Mobile Device Management product, or a device with
445 Chrome managed via machine-level [Chrome Browser Cloud
446 Management](https://support.google.com/chrome/?p=cloud_management),
447 the administrator effectively has privileges to view and mutate any state on
448 the device. Chrome [policy implementations](../enterprise/add_new_policy.md)
449 should still guide enterprise admins to the most user-respectful defaults
450 and policy description text should clearly describe the nature of the
451 capabilities and the user impact of them being granted.
452* On an unmanaged machine, Chrome profiles [can be managed via cloud
453 policy](https://support.google.com/chrome/?p=manage_profiles)
454 if users sign into Chrome using a managed account. These policies are called
455 *user policies*. In this scenario, the Chrome enterprise administrator should
456 have privileges only to *view and mutate state within the profile that they
457 administer*. Any access outside that profile requires end-user consent.
458
459Chrome administrators can force-install Chrome extensions without permissions
460prompts, so the same restrictions must apply to the Chrome extension APIs.
461
462Chrome has a long history of policy support with many hundreds of policies. We
463recognize that there may exist policies or policy combinations that can provide
464capabilities outside of the guidance provided here. In cases of clear violation
465of user expectations, we will attempt to remedy these policies and we will apply
466the guidance laid out in this document to any newly added policies.
467
Camille0f2a39f2022-11-04 10:45:04468See the [Web Platform Security
469guidelines](https://chromium.googlesource.com/chromium/src/+/master/docs/security/web-platfom-security-guidelines.md#enterprise-policies)
470for more information on how enterprise policies should interact with Web
471Platform APIs.
472
Alex Goughe7bcbea2022-05-03 21:45:34473<a name="TOC-Can-I-use-EMET-to-help-protect-Chrome-against-attack-on-Microsoft-Windows-"></a>
474### Can I use EMET to help protect Chrome against attack on Microsoft Windows?
475
476There are [known compatibility
477problems](https://sites.google.com/a/chromium.org/dev/Home/chromium-security/chromium-and-emet)
478between Microsoft's EMET anti-exploit toolkit and some versions of Chrome. These
479can prevent Chrome from running in some configurations. Moreover, the Chrome
480security team does not recommend the use of EMET with Chrome because its most
481important security benefits are redundant with or superseded by built-in attack
482mitigations within the browser. For users, the very marginal security benefit is
483not usually a good trade-off for the compatibility issues and performance
484degradation the toolkit can cause.
485
486## Certificates & Connection Indicators
Chris Palmer554c66e2017-07-29 01:02:56487
488<a name="TOC-Where-are-the-security-indicators-located-in-the-browser-window-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34489### Where are the security indicators located in the browser window?
Chris Palmer554c66e2017-07-29 01:02:56490
491The topmost portion of the browser window, consisting of the **Omnibox** (or
492**Location Bar**), navigation icons, menu icon, and other indicator icons, is
493sometimes called the browser **chrome** (not to be confused with the Chrome
494Browser itself). Actual security indicators can only appear in this section of
495the window. There can be no trustworthy security indicators elsewhere.
496
497Furthermore, Chrome can only guarantee that it is correctly representing URLs
498and their origins at the end of all navigation. Quirks of URL parsing, HTTP
499redirection, and so on are not security concerns unless Chrome is
500misrepresenting a URL or origin after navigation has completed.
501
502Browsers present a dilemma to the user since the output is a combination of
503information coming from both trustworthy sources (the browser itself) and
504untrustworthy sources (the web page), and the untrustworthy sources are allowed
505virtually unlimited control over graphical presentation. The only restriction on
506the page's presentation is that it is confined to the large rectangular area
507directly underneath the chrome, called the **viewport**. Things like hover text
508and URL preview(s), shown in the viewport, are entirely under the control of the
509web page itself. They have no guaranteed meaning, and function only as the page
510desires. This can be even more confusing when pages load content that looks like
511chrome. For example, many pages load images of locks, which look similar to the
512meaningful HTTPS lock in the Omnibox, but in fact do not convey any meaningful
513information about the transport security of that page.
514
515When the browser needs to show trustworthy information, such as the bubble
516resulting from a click on the lock icon, it does so by making the bubble overlap
517chrome. In the case of the lock bubble, it is a small triangular bump in the
518border of the bubble that overlays the chrome. This visual detail can't be
519imitated by the page itself since the page is confined to the viewport.
520
521<a name="TOC-Why-does-Chrome-show-a-green-lock-even-if-my-HTTPS-connection-is-being-proxied-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34522### Why does Chrome show a green lock, even if my HTTPS connection is being proxied?
Chris Palmer554c66e2017-07-29 01:02:56523
524Some types of software intercept HTTPS connections. Examples include anti-virus
525software, corporate network monitoring tools, and school censorship software. In
526order for the interception to work, you need to install a private trust anchor
527(root certificate) onto your computer. This may have happened when you installed
528your anti-virus software, or when your company's network administrator set up
529your computer. If that has occurred, your HTTPS connections can be viewed or
530modified by the software.
531
532Since you have allowed the trust anchor to be installed onto your computer,
533Chrome assumes that you have consented to HTTPS interception. Anyone who can add
534a trust anchor to your computer can make other changes to your computer, too,
535including changing Chrome. (See also [Why aren't physically-local attacks in
Avi Drissman36d4e2e2017-07-31 20:54:39536Chrome's threat model?](#TOC-Why-aren-t-physically-local-attacks-in-Chrome-s-threat-model-).)
Chris Palmer554c66e2017-07-29 01:02:56537
538<a name="TOC-Why-can-t-I-select-Proceed-Anyway-on-some-HTTPS-error-screens-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34539### Why can’t I select Proceed Anyway on some HTTPS error screens?
Chris Palmer554c66e2017-07-29 01:02:56540
541A key guarantee of HTTPS is that Chrome can be relatively certain that it is
542connecting to the true web server and not an impostor. Some sites request an
543even higher degree of protection for their users (i.e. you): they assert to
544Chrome (via Strict Transport Security
Xiaoyin Liub7985e52017-09-21 18:07:46545[HSTS](https://tools.ietf.org/html/rfc6797) — or by other means) that any
Chris Palmer554c66e2017-07-29 01:02:56546server authentication error should be fatal, and that Chrome must close the
547connection. If you encounter such a fatal error, it is likely that your network
548is under attack, or that there is a network misconfiguration that is
549indistinguishable from an attack.
550
551The best thing you can do in this situation is to raise the issue to your
552network provider (or corporate IT department).
553
554Chrome shows non-recoverable HTTPS errors only in cases where the true server
555has previously asked for this treatment, and when it can be relatively certain
556that the current server is not the true server.
557
558<a name="TOC-How-does-key-pinning-interact-with-local-proxies-and-filters-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34559### How does key pinning interact with local proxies and filters?
Chris Palmer554c66e2017-07-29 01:02:56560
561To enable certificate chain validation, Chrome has access to two stores of trust
Adam Langleyc078ba82018-12-17 17:25:46562anchors (i.e. certificates that are empowered as issuers). One trust anchor
563store is the system or public trust anchor store, and the other other is the
564local or private trust anchor store. The public store is provided as part of
565the operating system, and intended to authenticate public internet servers. The
Chris Palmer554c66e2017-07-29 01:02:56566private store contains certificates installed by the user or the administrator
567of the client machine. Private intranet servers should authenticate themselves
568with certificates issued by a private trust anchor.
569
570Chromes key pinning feature is a strong form of web site authentication that
571requires a web servers certificate chain not only to be valid and to chain to a
572known-good trust anchor, but also that at least one of the public keys in the
573certificate chain is known to be valid for the particular site the user is
574visiting. This is a good defense against the risk that any trust anchor can
575authenticate any web site, even if not intended by the site owner: if an
576otherwise-valid chain does not include a known pinned key (“pin”), Chrome will
577reject it because it was not issued in accordance with the site operators
578expectations.
579
580Chrome does not perform pin validation when the certificate chain chains up to a
581private trust anchor. A key result of this policy is that private trust anchors
582can be used to proxy (or
Xiaoyin Liub7985e52017-09-21 18:07:46583[MITM](https://en.wikipedia.org/wiki/Man-in-the-middle_attack)) connections, even
Chris Palmer554c66e2017-07-29 01:02:56584to pinned sites. Data loss prevention appliances, firewalls, content filters,
585and malware can use this feature to defeat the protections of key pinning.
586
587We deem this acceptable because the proxy or MITM can only be effective if the
588client machine has already been configured to trust the proxys issuing
589certificate that is, the client is already under the control of the person who
590controls the proxy (e.g. the enterprises IT administrator). If the client does
591not trust the private trust anchor, the proxys attempt to mediate the
592connection will fail as it should.
593
Adam Langleyc078ba82018-12-17 17:25:46594<a name="TOC-When-is-key-pinning-enabled-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34595### When is key pinning enabled?
Adam Langleyc078ba82018-12-17 17:25:46596
597Key pinning is enabled for Chrome-branded, non-mobile builds when the local
598clock is within ten weeks of the embedded build timestamp. Key pinning is a
599useful security measure but it tightly couples client and server configurations
600and completely breaks when those configurations are out of sync. In order to
601manage that risk we need to ensure that we can promptly update pinning clients
Chris Palmer59877ec2019-11-22 01:28:09602in an emergency and ensure that non-emergency changes can be deployed in a
Adam Langleyc078ba82018-12-17 17:25:46603reasonable timeframe.
604
605Each of the conditions listed above helps ensure those properties:
606Chrome-branded builds are those that Google provides and they all have an
607auto-update mechanism that can be used in an emergency. However, auto-update on
608mobile devices is significantly less effective thus they are excluded. Even in
609cases where auto-update is generally effective, there are still non-trivial
610populations of stragglers for various reasons. The ten-week timeout prevents
611those stragglers from causing problems for regular, non-emergency changes and
612allows stuck users to still, for example, conduct searches and access Chrome's
613homepage to hopefully get unstuck.
614
615In order to determine whether key pinning is active, try loading
616[https://pinningtest.appspot.com](https://pinningtest.appspot.com). If key
617pinning is active the load will _fail_ with a pinning error.
618
Chris Palmer38d751d002017-08-23 17:37:35619<a name="TOC-How-does-certificate-transparency-interact-with-local-proxies-and-filters-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34620### How does Certificate Transparency interact with local proxies and filters?
Chris Palmer38d751d002017-08-23 17:37:35621
Chris Palmer413f3c02017-08-23 17:47:54622Just as [pinning only applies to publicly-trusted trust
623anchors](#TOC-How-does-key-pinning-interact-with-local-proxies-and-filters-),
624Chrome only evaluates Certificate Transparency (CT) for publicly-trusted trust
625anchors. Thus private trust anchors, such as for enterprise middle-boxes and AV
626proxies, do not need to be publicly logged in a CT log.
Chris Palmer38d751d002017-08-23 17:37:35627
Chris Palmer554c66e2017-07-29 01:02:56628<a name="TOC-Why-are-some-web-platform-features-only-available-in-HTTPS-page-loads-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34629### Why are some web platform features only available in HTTPS page-loads?
Chris Palmer554c66e2017-07-29 01:02:56630
631The full answer is here: we [Prefer Secure Origins For Powerful New
632Features](https://www.chromium.org/Home/chromium-security/prefer-secure-origins-for-powerful-new-features).
633In short, many web platform features give web origins access to sensitive new
634sources of information, or significant power over a user's experience with their
Eric Romaned127b672018-01-23 19:36:38635computer/phone/watch/etc., or over their experience with it. We would therefore
Chris Palmer554c66e2017-07-29 01:02:56636like to have some basis to believe the origin meets a minimum bar for security,
637that the sensitive information is transported over the Internet in an
Eric Romaned127b672018-01-23 19:36:38638authenticated and confidential way, and that users can make meaningful choices
Chris Palmer554c66e2017-07-29 01:02:56639to trust or not trust a web origin.
640
641Note that the reason we require secure origins for WebCrypto is slightly
642different: An application that uses WebCrypto is almost certainly using it to
643provide some kind of security guarantee (e.g. encrypted instant messages or
644email). However, unless the JavaScript was itself transported to the client
645securely, it cannot actually provide any guarantee. (After all, a MITM attacker
646could have modified the code, if it was not transported securely.)
647
Camille0f2a39f2022-11-04 10:45:04648See the [Web Platform Security
649guidelines](https://chromium.googlesource.com/chromium/src/+/master/docs/security/web-platform-security-guidelines.md#encryption)
650for more information on security guidelines applicable to web platform APIs.
651
Chris Palmer554c66e2017-07-29 01:02:56652<a name="TOC-Which-origins-are-secure-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34653### Which origins are "secure"?
Chris Palmer554c66e2017-07-29 01:02:56654
655Secure origins are those that match at least one of the following (scheme, host,
656port) patterns:
657
658* (https, *, *)
659* (wss, *, *)
660* (*, localhost, *)
661* (*, 127/8, *)
662* (*, ::1/128, *)
663* (file, *, —)
664* (chrome-extension, *, —)
665
666That is, secure origins are those that load resources either from the local
667machine (necessarily trusted) or over the network from a
668cryptographically-authenticated server. See [Prefer Secure Origins For Powerful
669New
670Features](https://sites.google.com/a/chromium.org/dev/Home/chromium-security/prefer-secure-origins-for-powerful-new-features)
671for more details.
672
673<a name="TOC-What-s-the-story-with-certificate-revocation-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34674### What's the story with certificate revocation?
Chris Palmer554c66e2017-07-29 01:02:56675
676Chrome's primary mechanism for checking the revocation status of HTTPS
677certificates is
Xiaoyin Liub7985e52017-09-21 18:07:46678[CRLsets](https://dev.chromium.org/Home/chromium-security/crlsets).
Chris Palmer554c66e2017-07-29 01:02:56679
680Chrome also supports Online Certificate Status Protocol (OCSP). However, the
681effectiveness of OCSP is is essentially 0 unless the client fails hard (refuses
682to connect) if it cannot get a live, valid OCSP response. No browser has OCSP
683set to hard-fail by default, for good reasons explained by Adam Langley (see
684[https://www.imperialviolet.org/2014/04/29/revocationagain.html](https://www.imperialviolet.org/2014/04/29/revocationagain.html) and
685[https://www.imperialviolet.org/2014/04/19/revchecking.html](https://www.imperialviolet.org/2014/04/19/revchecking.html)).
686
687Stapled OCSP with the Must Staple option (hard-fail if a valid OCSP response is
688not stapled to the certificate) is a much better solution to the revocation
689problem than non-stapled OCSP. CAs and browsers are working toward that solution
690(see the
Xiaoyin Liub7985e52017-09-21 18:07:46691[Internet-Draft](https://tools.ietf.org/html/draft-hallambaker-tlssecuritypolicy-03)).
Chris Palmer554c66e2017-07-29 01:02:56692
693Additionally, non-stapled OCSP poses a privacy problem: in order to check the
694status of a certificate, the client must query an OCSP responder for the status
695of the certificate, thus exposing a user's HTTPS browsing history to the
696responder (a third party).
697
698That said, you can use enterprise policies to [enable soft-fail
Felipe Andrade239aaf3c2019-09-11 12:31:58699OCSP](https://cloud.google.com/docs/chrome-enterprise/policies/?policy=EnableOnlineRevocationChecks)
Chris Palmer554c66e2017-07-29 01:02:56700and hard-fail OCSP for [local trust
Felipe Andrade239aaf3c2019-09-11 12:31:58701anchors](https://cloud.google.com/docs/chrome-enterprise/policies/?policy=RequireOnlineRevocationChecksForLocalAnchors).
Chris Palmer554c66e2017-07-29 01:02:56702
703Chrome performs online checking for [Extended
704Validation](https://cabforum.org/about-ev-ssl/) certificates if it does not
705already have a non-expired CRLSet entry covering the domain. If Chrome does not
706get a response, it simply downgrades the security indicator to Domain Validated.
707
708See also [Issue 361820](https://crbug.com/361820) for more discussion of the
709user-facing UX.
710
Alex Goughe7bcbea2022-05-03 21:45:34711## Passwords & Local Data
712
713<a name="TOC-What-about-unmasking-of-passwords-with-the-developer-tools-"></a>
714### What about unmasking of passwords with the developer tools?
715
716One of the most frequent reports we receive is password disclosure using the
717Inspect Element feature (see [Issue 126398](https://crbug.com/126398) for an
718example). People reason that "If I can see the password, it must be a bug."
719However, this is just one of the [physically-local attacks described in the
720previous
721section](#TOC-Why-aren-t-physically-local-attacks-in-Chrome-s-threat-model-),
722and all of those points apply here as well.
723
724The reason the password is masked is only to prevent disclosure via
725"shoulder-surfing" (i.e. the passive viewing of your screen by nearby persons),
726not because it is a secret unknown to the browser. The browser knows the
727password at many layers, including JavaScript, developer tools, process memory,
728and so on. When you are physically local to the computer, and only when you are
729physically local to the computer, there are, and always will be, tools for
730extracting the password from any of these places.
731
732<a name="TOC-Is-Chrome-s-support-for-userinfo-in-HTTP-URLs-e.g.-http:-user:password-example.com-considered-a-vulnerability-"></a>
733### Is Chrome's support for userinfo in HTTP URLs (e.g. http://user:[email protected]) considered a vulnerability?
734
735[Not at this time](https://crbug.com/626951). Chrome supports HTTP and HTTPS
736URIs with username and password information embedded within them for
737compatibility with sites that require this feature. Notably, Chrome will
738suppress display of the username and password information after navigation in
739the URL box to limit the effectiveness of spoofing attacks that may try to
740mislead the user. For instance, navigating to
741`http://[email protected]` will show an address of
742`http://evil.example.com` after the page loads.
743
Tom Sepez83fd1f612022-07-18 21:21:27744Note: We often receive reports calling this an "open redirect". However, it has
745nothing to do with redirection; rather the format of URLs is complex and the
746userinfo may be misread as a host.
747
Chris Palmer554c66e2017-07-29 01:02:56748<a name="TOC-Why-does-the-Password-Manager-ignore-autocomplete-off-for-password-fields-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34749### Why does the Password Manager ignore `autocomplete='off'` for password fields?
Chris Palmer554c66e2017-07-29 01:02:56750
751Ignoring `autocomplete='off'` for password fields allows the password manager to
752give more power to users to manage their credentials on websites. It is the
753security team's view that this is very important for user security by allowing
754users to have unique and more complex passwords for websites. As it was
755originally implemented, autocomplete='off' for password fields took control away
756from the user and gave control to the web site developer, which was also a
757violation of the [priority of
Adam Barth3a3bfef2021-10-06 02:36:44758constituencies](https://www.schemehostport.com/2011/10/priority-of-constituencies.html).
Chris Palmer554c66e2017-07-29 01:02:56759For a longer discussion on this, see the [mailing list
760announcement](https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/zhhj7hCip5c).
761
Eric Lawrence122e86882017-12-07 22:53:05762<a name="TOC-Signout-of-Chrome"></a>
Alex Goughe7bcbea2022-05-03 21:45:34763### Signing out of Chrome does not delete previously-synced data?
Eric Lawrence122e86882017-12-07 22:53:05764
765If you have signed into Chrome and subsequently sign out of Chrome, previously
766saved passwords and other data are not deleted from your device unless you
767select that option when signing out of Chrome.
768
769If you change your Google password, synced data will no longer be updated in
770Chrome instances until you provide the new password to Chrome on each device
771configured to sync. However, previously synced data [remains available](https://crbug.com/792967)
772on each previously-syncing device unless manually removed.
773
Chris Palmer554c66e2017-07-29 01:02:56774<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:34775### Why doesn't the Password Manager save my Google password if I am using Chrome Sync?
Chris Palmer554c66e2017-07-29 01:02:56776
777In its default mode, Chrome Sync uses your Google password to protect all the
778other passwords in the Chrome Password Manager.
779
780In general, it is a bad idea to store the credential that protects an asset in
781the same place as the asset itself. An attacker who could temporarily compromise
782the Chrome Password Manager could, by stealing your Google password, obtain
783continuing access to all your passwords. Imagine you store your valuables in a
784safe, and you accidentally forget to close the safe. If a thief comes along,
785they might steal all of your valuables. Thats bad, but imagine if you had also
786left the combination to the safe inside as well. Now the bad guy has access to
787all of your valuables and all of your future valuables, too. The password
788manager is similar, except you probably would not even know if a bad guy
789accessed it.
790
791To prevent this type of attack, Chrome Password Manager does not save the Google
792password for the account you sync with Chrome. If you have multiple Google
793accounts, the Chrome Password Manager will save the passwords for accounts other
794than the one you are syncing with.
795
796<a name="TOC-Does-the-Password-Manager-store-my-passwords-encrypted-on-disk-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34797### Does the Password Manager store my passwords encrypted on disk?
Chris Palmer554c66e2017-07-29 01:02:56798
799Chrome generally tries to use the operating system's user storage mechanism
800wherever possible and stores them encrypted on disk, but it is platform
801specific:
802
803* On Windows, Chrome uses the [Data Protection API
804 (DPAPI)](https://msdn.microsoft.com/en-us/library/ms995355.aspx) to bind
805 your passwords to your user account and store them on disk encrypted with
806 a key only accessible to processes running as the same logged on user.
807* On macOS, Chrome previously stored credentials directly in the user's
808 Keychain, but for technical reasons, it has switched to storing the
809 credentials in "Login Data" in the Chrome users profile directory, but
810 encrypted on disk with a key that is then stored in the user's Keychain.
811 See [Issue 466638](https://crbug.com/466638) for further explanation.
Christos Froussios2a02cc52019-07-30 07:04:46812* On Linux, Chrome previously stored credentials directly in the user's
813 Gnome Keyring or KWallet, but for technical reasons, it has switched to
814 storing the credentials in "Login Data" in the Chrome user's profile directory,
815 but encrypted on disk with a key that is then stored in the user's Gnome
816 Keyring or KWallet. If there is no available Keyring or KWallet, the data is
817 not encrypted when stored.
Chris Palmer554c66e2017-07-29 01:02:56818* On iOS, passwords are currently stored directly in the iOS Keychain and
819 referenced from the rest of the metadata stored in a separate DB. The plan
820 there is to just store them in plain text in the DB, because iOS gives
821 strong guarantees about only Chrome being able to access its storage. See
822 [Issue 520437](https://crbug.com/520437) to follow this migration.
823
Adrian Taylorae8545252021-05-27 17:16:51824<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:34825### If there's a way to see stored passwords without entering a password, is this a security bug?
Adrian Taylorae8545252021-05-27 17:16:51826
827No. If an attacker has control of your login on your device, they can get to
828your passwords by inspecting Chrome disk files or memory. (See
829[why aren't physically-local attacks in Chrome's threat
830model](#TOC-Why-aren-t-physically-local-attacks-in-Chrome-s-threat-model-)).
831
832On some platforms we ask for a password before revealing stored passwords,
833but this is not considered a robust defense. Its historically to stop
834users inadvertently revealing their passwords on screen, for example if
835theyre screen sharing. We dont do this on all platforms because we consider
836such risks greater on some than on others.
837
Alex Goughe7bcbea2022-05-03 21:45:34838## Other
Alex Gough8dc4f562022-04-18 22:14:05839
Chris Palmer554c66e2017-07-29 01:02:56840<a name="TOC-What-is-the-security-story-for-Service-Workers-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34841### What is the security story for Service Workers?
Chris Palmer554c66e2017-07-29 01:02:56842
843See our dedicated [Service Worker Security
Eric Lawrence [MSFT]f80579552021-04-22 18:39:26844FAQ](https://chromium.googlesource.com/chromium/src/+/main/docs/security/service-worker-security-faq.md).
Chris Palmer554c66e2017-07-29 01:02:56845
Devlin Cronin7304fec2021-06-02 22:51:26846<a name="TOC-What-is-the-security-story-for-Extensions-"></a>
Alex Goughe7bcbea2022-05-03 21:45:34847### What is the security story for Extensions?
Devlin Cronin7304fec2021-06-02 22:51:26848
849See our dedicated [Extensions Security FAQ](https://chromium.googlesource.com/chromium/src/+/main/extensions/docs/security_faq.md).
Adrian Taylord57a4c62022-11-10 10:27:50850
851<a name="TOC-Im-making-a-Chromium-based-browser-how-should-I-secure-it-"></a>
852### I'm making a Chromium-based browser. How should I secure it?
853
854If you want to make a browser based on Chromium, you should stay up to date
855with Chromium's security fixes. There are adversaries who weaponize fixed
856Chromium bugs ("n-day vulnerabilities") to target browsers which haven’t yet
857absorbed those fixes.
858
859Decide whether your approach is to stay constantly up to date with Chromium
860releases, or to backport security fixes onto some older version, upgrading
861Chromium versions less frequently.
862
863Backporting security fixes sounds easier than forward-porting features, but in
864our experience, this is false. Chromium releases 400+ security bug fixes per
865year ([example
866query](https://bugs.chromium.org/p/chromium/issues/list?q=type%3DBug-Security%20has%3Arelease%20closed%3Etoday-730%20closed%3Ctoday-365%20allpublic&can=1)).
867Some downstream browsers take risks by backporting only Medium+ severity fixes,
868but that's still over 300 ([example
869query](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)).
870Most are trivial cherry-picks; but others require rework and require versatile
871engineers who can make good decisions about any part of a large codebase.
872
873Our recommendation is to stay up-to-date with Chrome's released versions. You
874should aim to release a version of your browser within just a few days of each
875Chrome [stable
876release](https://chromereleases.googleblog.com/search/label/Stable%20updates).
877If your browser is sufficiently widely-used, you can [apply for advance notice
878of fixed vulnerabilities](https://www.chromium.org/Home/chromium-security/) to
879make this a little easier.
880
881Finally, if you choose the backporting approach, please explain the security
882properties to your users. Some fraction of security improvements cannot be
883backported. This can happen for several reasons, for example: because they
884depend upon architectural changes (e.g. breaking API changes); because the
885security improvement is a significant new feature; or because the security
886improvement is the removal of a broken feature.