blob: c24ce236f881ec2a74e1a1a98f10f13b62642faf [file] [log] [blame] [view]
Varun Khanejadf1bc00e2017-08-10 05:22:401# Severity Guidelines for Security Issues
2
3[TOC]
4
5Vendors shipping products based on Chromium might wish to rate the severity of
6security issues in the products they release. This document contains guidelines
7for how to rate these issues. Check out our
8[security release management page](https://www.chromium.org/Home/chromium-security/security-release-management)
9for guidance on how to release fixes based on severity.
10
Amy Ressler4e00f882022-02-24 18:03:4111Any significant mitigating factors will generally reduce an issue's severity by one or
12more levels:
13* Not web accessible, reliant solely on direct UI interaction to trigger.
14* Unusual or unlikely user interaction will normally reduce severity by one
15 level. This means interaction which may sometimes occur, but would not be
16 typical of an average user engaging with Chrome or a particular feature in
17 Chrome, nor could a user be easily convinced to perform by a persuasive web page.
18* Requiring profile destruction or browser shutdown will normally reduce
19 severity by one level.
Adrian Taylor850e6c02023-05-15 09:56:2520* [MiraclePtr protection](#TOC-MiraclePtr)
Amy Ressler4e00f882022-02-24 18:03:4121
22Bugs that require implausible interaction, interactions a user would not
23realistically be convinced to perform, will generally be downgraded to a
24functional bug and not considered a security bug.
Adrian Taylor44dbdc82020-01-07 01:49:1925
26Conversely, we do not consider it a mitigating factor if a vulnerability applies
27only to a particular group of users. For instance, a Critical vulnerability is
28still considered Critical even if it applies only to Linux or to those users
29running with accessibility features enabled.
30
31Also note that most crashes do not indicate vulnerabilities. Chromium is designed
32to crash in a controlled manner (e.g., with a ```__debugBreak```) when memory is
Varun Khanejadf1bc00e2017-08-10 05:22:4033exhausted or in other exceptional circumstances.
34
35
Amy Ressleraa1ed33b2024-02-02 17:51:3636## Critical severity (S0) {#TOC-Critical-severity}
Varun Khanejadf1bc00e2017-08-10 05:22:4037
Amy Ressleraa1ed33b2024-02-02 17:51:3638Critical severity (S0) issues allow an attacker to read or write arbitrary
39resources (including but not limited to the file system, registry, network,
40etc.) on the underlying platform, with the user's full privileges.
Varun Khanejadf1bc00e2017-08-10 05:22:4041
Amy Ressleraa1ed33b2024-02-02 17:51:3642They are normally assigned Priority **P0** and assigned to the current stable
Varun Khanejadf1bc00e2017-08-10 05:22:4043milestone (or earliest milestone affected). For critical severity bugs,
44[SheriffBot](https://www.chromium.org/issue-tracking/autotriage) will
45automatically assign the milestone.
46
Amy Ressleraa1ed33b2024-02-02 17:51:3647**For critical severity (S0) vulnerabilities, we aim to deploy the patch to all
Chris Palmer91bab482019-07-17 00:05:3648Chrome users in under 30 days.**
Varun Khanejadf1bc00e2017-08-10 05:22:4049
50Critical vulnerability details may be made public in 60 days,
51in accordance with Google's general [vulnerability disclosure recommendations](https://security.googleblog.com/2010/07/rebooting-responsible-disclosure-focus.html),
52or [faster (7 days)](https://security.googleblog.com/2013/05/disclosure-timeline-for-vulnerabilities.html)
53if there is evidence of active exploitation.
54
55Example bugs:
56
Daniel Cheng62a44a82019-09-09 22:15:3657* Memory corruption in the browser process ([319125](https://crbug.com/319125#c10)).
Adrian Taylor9dd42e2962024-06-05 17:53:0658* Memory corruption in an unsandboxed GPU process when it is reachable directly from web
Chris Bookholt5f45d02b2023-11-27 17:10:3659 content without compromising the renderer.
Adrian Taylor9dd42e2962024-06-05 17:53:0660 ([1420130](https://crbug.com/1420130), [1427865](https://crbug.com/1427865)).
Alex Goughdbb74e42024-07-31 23:31:4661 ([on some platforms we consider the GPU process 'sandboxed'](../../docs/security/process-sandboxes-by-platform.md)).
Varun Khanejadf1bc00e2017-08-10 05:22:4062* Exploit chains made up of multiple bugs that can lead to code execution
Chris Palmer5c330772019-05-24 23:32:4363 outside of the sandbox ([416449](https://crbug.com/416449)).
64* A bug that enables web content to read local files
65 ([962500](https://crbug.com/962500)).
Varun Khanejadf1bc00e2017-08-10 05:22:4066
67Note that the individual bugs that make up the chain will have lower severity
68ratings.
69
Amy Ressleraa1ed33b2024-02-02 17:51:3670## High severity (S1) {#TOC-High-severity}
Varun Khanejadf1bc00e2017-08-10 05:22:4071
Amy Ressleraa1ed33b2024-02-02 17:51:3672High severity (S1) vulnerabilities allow an attacker to execute code in the context
Lukasz Anforowiczcb7b5142019-07-19 23:40:1673of, or otherwise impersonate other origins or read cross-origin data.
74Bugs which would normally be
Varun Khanejadf1bc00e2017-08-10 05:22:4075critical severity with unusual mitigating factors may be rated as high severity.
76For example, renderer sandbox escapes fall into this category as their impact is
77that of a critical severity bug, but they require the precondition of a
Adrian Taylor6f37ff32020-05-01 00:40:1478compromised renderer. (Bugs which involve using [MojoJS](../../mojo/public/js/README.md)
79to trigger an exploitable browser process crash usually fall into this category).
Amy Ressler4e00f882022-02-24 18:03:4180Another example are bugs that result in memory corruption in the browser
81process, which would normally be critical severity, but require browser shutdown
82or profile destruction, which would lower these issues to high severity. A
83bug with the precondition of browser shutdown or profile destruction should be
84considered to have a maximum severity of high and could potentially be
85reduced by other mitigating factors.
Varun Khanejadf1bc00e2017-08-10 05:22:4086
Amy Ressleraa1ed33b2024-02-02 17:51:3687They are normally assigned Priority **P1** and assigned to the current stable
Varun Khanejadf1bc00e2017-08-10 05:22:4088milestone (or earliest milestone affected). For high severity bugs,
89[SheriffBot](https://www.chromium.org/issue-tracking/autotriage) will
90automatically assign the milestone.
91
Amy Ressleraa1ed33b2024-02-02 17:51:3692**For high severity (S1) vulnerabilities, we aim to deploy the patch to all
93Chrome users in under 60 days.**
Varun Khanejadf1bc00e2017-08-10 05:22:4094
95Example bugs:
96
97* A bug that allows full circumvention of the same origin policy. Universal XSS
98bugs fall into this category, as they allow script execution in the context of
99an arbitrary origin ([534923](https://crbug.com/534923)).
100* A bug that allows arbitrary code execution within the confines of the sandbox,
Chris Bookholt5f45d02b2023-11-27 17:10:36101such as memory corruption in the renderer process
Varun Khanejadf1bc00e2017-08-10 05:22:40102([570427](https://crbug.com/570427), [468936](https://crbug.com/468936)).
103* Complete control over the apparent origin in the omnibox
104([76666](https://crbug.com/76666)).
Adrian Taylor9dd42e2962024-06-05 17:53:06105* Memory corruption in the browser or another high privileged process (e.g. a
Alex Goughdbb74e42024-07-31 23:31:46106 GPU or network process on a [platform where they're not sandboxed](../../docs/security/process-sandboxes-by-platform.md)),
Adrian Taylor9dd42e2962024-06-05 17:53:06107 that can only be triggered from a compromised renderer,
Chris Bookholt5f45d02b2023-11-27 17:10:36108 leading to a sandbox escape ([1393177](https://crbug.com/1393177),
109 [1421268](crbug.com/1421268)).
Varun Khanejadf1bc00e2017-08-10 05:22:40110* Kernel memory corruption that could be used as a sandbox escape from a
111compromised renderer ([377392](https://crbug.com/377392)).
Adrian Taylor9dd42e2962024-06-05 17:53:06112* Memory corruption in the browser or another high privileged process (e.g.
Alex Goughdbb74e42024-07-31 23:31:46113 GPU or network process on a [platform where they're not sandboxed](../../docs/security/process-sandboxes-by-platform.md))
114 that requires specific user interaction, such as granting a permission ([455735](https://crbug.com/455735)).
Lukasz Anforowicz33b14352019-09-20 21:57:58115* Site Isolation bypasses:
116 - Cross-site execution contexts unexpectedly sharing a renderer process
117 ([863069](https://crbug.com/863069), [886976](https://crbug.com/886976)).
118 - Cross-site data disclosure
119 ([917668](https://crbug.com/917668), [927849](https://crbug.com/927849)).
Varun Khanejadf1bc00e2017-08-10 05:22:40120
121
Amy Ressleraa1ed33b2024-02-02 17:51:36122## Medium severity (S2) {#TOC-Medium-severity}
Varun Khanejadf1bc00e2017-08-10 05:22:40123
Amy Ressleraa1ed33b2024-02-02 17:51:36124Medium severity (S2) bugs allow attackers to read or modify limited amounts of
Varun Khanejadf1bc00e2017-08-10 05:22:40125information, or are not harmful on their own but potentially harmful when
126combined with other bugs. This includes information leaks that could be useful
127in potential memory corruption exploits, or exposure of sensitive user
Chris Palmer91bab482019-07-17 00:05:36128information that an attacker can exfiltrate. Bugs that would normally be rated
129at a higher severity level with unusual mitigating factors may be rated as
130medium severity.
Varun Khanejadf1bc00e2017-08-10 05:22:40131
Liza Burakovaf192e992025-04-08 20:15:26132Certain vulnerabilities in [sandboxed GPU shader compilers](#TOC-Sandboxed-shader-compilers)
133should be marked as medium severity.
134
Amy Ressleraa1ed33b2024-02-02 17:51:36135They are normally assigned Priority **P1** and assigned to the current stable
Varun Khanejadf1bc00e2017-08-10 05:22:40136milestone (or earliest milestone affected). If the fix seems too complicated to
137merge to the current stable milestone, they may be assigned to the next stable
138milestone.
139
140Example bugs:
141
142* An out-of-bounds read in a renderer process
143([281480](https://crbug.com/281480)).
144* An uninitialized memory read in the browser process where the values are
145passed to a compromised renderer via IPC ([469151](https://crbug.com/469151)).
146* Memory corruption that requires a specific extension to be installed
147([313743](https://crbug.com/313743)).
Amy Ressler4e00f882022-02-24 18:03:41148* Memory corruption in the browser process, triggered by a browser shutdown that
149 is not reliably triggered and/or is difficult to trigger ([1230513](https://crbug.com/1230513)).
150* Memory corruption in the browser process, requiring a non-standard flag and
151 user interaction ([1255332](https://crbug.com/1255332)).
Varun Khanejadf1bc00e2017-08-10 05:22:40152* An HSTS bypass ([461481](https://crbug.com/461481)).
153* A bypass of the same origin policy for pages that meet several preconditions
154([419383](https://crbug.com/419383)).
155* A bug that allows web content to tamper with trusted browser UI
156([550047](https://crbug.com/550047)).
157* A bug that reduces the effectiveness of the sandbox
158([338538](https://crbug.com/338538)).
159* A bug that allows arbitrary pages to bypass security interstitials
160([540949](https://crbug.com/540949)).
161* A bug that allows an attacker to reliably read or infer browsing history
162([381808](https://crbug.com/381808)).
163* An address bar spoof where only certain URLs can be displayed, or with other
164mitigating factors ([265221](https://crbug.com/265221)).
165* Memory corruption in a renderer process that requires specific user
166interaction, such as dragging an object ([303772](https://crbug.com/303772)).
167
168
Amy Ressleraa1ed33b2024-02-02 17:51:36169## Low severity (S3) {#TOC-Low-severity}
Varun Khanejadf1bc00e2017-08-10 05:22:40170
Amy Ressleraa1ed33b2024-02-02 17:51:36171Low severity (S3) vulnerabilities are usually bugs that would normally be a
172higher severity, but which have extreme mitigating factors or highly limited
173scope.
Varun Khanejadf1bc00e2017-08-10 05:22:40174
Amy Ressleraa1ed33b2024-02-02 17:51:36175They are normally assigned Priority **P2**. Milestones can be assigned to low
Varun Khanejadf1bc00e2017-08-10 05:22:40176severity bugs on a case-by-case basis, but they are not normally merged to
177stable or beta branches.
178
179Example bugs:
180
181* Bypass requirement for a user gesture ([256057](https://crbug.com/256057)).
182* Partial CSP bypass ([534570](https://crbug.com/534570)).
183* A limited extension permission bypass ([169632](https://crbug.com/169632)).
184* An uncontrolled single-byte out-of-bounds read
185([128163](https://crbug.com/128163)).
186
Amy Ressler15e636812023-11-28 21:21:55187## Priority for in the wild vulnerabilities {#TOC-itw-pri}
188
189If there is evidence of a weaponized exploit or active exploitation in the wild,
Amy Ressleraa1ed33b2024-02-02 17:51:36190the vulnerability is considered a P0 priority - regardless of the severity
191rating -with a SLO of 7 days or faster. Our goal is to release a fix in a
192Stable channel update of Chrome as soon as possible.
Adrian Taylorb3f73122020-04-30 00:56:14193
Adrian Taylor364e9fd2020-11-04 22:41:11194## Can't impact Chrome users by default {#TOC-No-impact}
195
196If the bug can't impact Chrome users by default, this is denoted instead by
Amy Ressleraa1ed33b2024-02-02 17:51:36197the **Security-Impact_None** hotlist (hotlistID: 5433277). See
Adrian Taylor364e9fd2020-11-04 22:41:11198[the security labels document](security-labels.md#TOC-Security_Impact-None)
199for more information. The bug should still have a severity set according
200to these guidelines.
201
202
Adrian Taylorb3f73122020-04-30 00:56:14203## Not a security bug {#TOC-Not-a-security-bug}
204
Varun Khanejadf1bc00e2017-08-10 05:22:40205The [security FAQ](faq.md) covers many of the cases that we do not consider to
Adrian Taylorb3f73122020-04-30 00:56:14206be security bugs, such as [denial of service](faq.md#TOC-Are-denial-of-service-issues-considered-security-bugs-)
207and, in particular, null pointer dereferences with consistent fixed offsets.
Adrian Taylorb1691a82022-08-23 18:54:37208
209
Adrian Taylor850e6c02023-05-15 09:56:25210## "MiraclePtr" protection against use-after-free {#TOC-MiraclePtr}
Adrian Taylorb1691a82022-08-23 18:54:37211
212["MiraclePtr"](../../base/memory/raw_ptr.md) is a technology designed to
213deterministically prevent exploitation of use-after-free bugs. Address
214sanitizer is aware of MiraclePtr and will report on whether a given
215use-after-free bug is protected or not:
216
217```
218MiraclePtr Status: NOT PROTECTED
219No raw_ptr<T> access to this region was detected prior to the crash.
220```
221
222or
223
224```
225MiraclePtr Status: PROTECTED
226The crash occurred while a raw_ptr<T> object containing a dangling pointer was being dereferenced.
227MiraclePtr should make this crash non-exploitable in regular builds.
228```
229
Amy Ressler8bdc2b82024-07-29 16:45:08230MiraclePtr is now active on all Chrome platforms in non-renderer processes as
231of 118 and on Fuchsia as of 128. Severity assessments are made with
232consideration of all active release channels (Dev, Beta, Stable, and Extended Stable);
Amy Ressler304b2dd32023-10-26 17:30:40233BRP is now enabled in all active release channels.
Adrian Taylor850e6c02023-05-15 09:56:25234
Amy Ressler8bdc2b82024-07-29 16:45:08235As of 128, if a bug is marked `MiraclePtr Status:PROTECTED`, it is not
236considered a security issue. It should be converted to type:Bug and assigned to
237the appropriate engineering team as functional issue.
Liza Burakovaf192e992025-04-08 20:15:26238
239## Sandboxed GPU Shader Compilers {#TOC-Sandboxed-shader-compilers}
240
241If a GPU shader compiler is in a separate process outside the GPU process and sandboxed, the
242overall attack surface of a vulnerability in that specific compiler may be much lower than an
243in-GPU-process shader compiler. Unlike the renderer process, which can make hundreds of different
244IPCs to the browser process, a well sandboxed shader compiler process can make a very limited number
245of IPCs back to the GPU process. Furthermore, code execution in a sandboxed GPU shader compiler
246is now limited to writing arbitrary shaders, which is a much lower threat surface than code execution
247in the GPU process as a whole.
248
249Currently, only the Metal shader compiler is in its own sandboxed process, so vulnerabilities that would
250otherwise be high severity should be considered medium severity if they are specific to that compiler.
251
252Vulnerabilities specific to the Metal shader compiler will typically call into the `MTLCompiler` in
253the stack trace, and a PoC will only be reproducible on MacOS devices. An example of a stack trace
254specific to the metal shader compiler can be found at ([40074630](https://crbug.com/40074630)).