blob: 9c23f5aaa7edd8e30cc5dafb91bbbfb557d8d3c3 [file] [log] [blame] [view]
Robert Seseke4d979b2022-07-11 23:22:141# Life of a Security Issue
2
3This page will help you understand the life cycle of a manually-reported
4external security bug in the Chromium project. Internally reported and
5fuzzer-found bugs follow a similar lifecycle, though specific details vary. The
6process can be visualized at a high level using the state diagram below, and
7further explanation is provided in the paragraphs that follow.
8
9![alt text](life-of-a-security-issue.png "Sequence diagram of the life of a security issue")
10
11<pre style="display:none" data-note="Source code for sequence diagram. Gitiles will not display this.">
12<!--
13https://mermaid.live/edit#pako:eNqNU71uwjAQfpWTh070BTJUqgKd2goBYiEdLvZBLBw79Q9thHj3OpAgklCJJUpy39_d2UfGjSCWMEffgTSnqcSdxTLTmcfgjQ5lTrb5qtB6yWWF2sOCKmP9-P-SeLDS17Cii8RtcUoHUqY6s2Kp03h-eenRklYd8rBrcL3iGLyyMTD9B756JvDqnNzpFhihn8YTmAPZazeTG_QmNdoF5dFLo78ujGt5IBx8YSygFqCaR_oORkOJckQaRP9Au2_yADrI2Jv8JZGxi1W_j1Ej5Bxso2eOfN9kd8OAfUZakLU1VJLv78mPgq0Xc5ijJnUP203rOtEnqLAGSz9oxUOEdD17IMQ85Eq6IgorQkfRxnUAHVfnBqeoZ7Q5k7mqQUjHlXEUV8gmrCQb9yLicT9mGuLQfUElZSyJr4K2GBfebOAUoaES6GkmpDeWJVtUjiasuRHLWnOWeBuoA7VXpkWd_gADszf5
14-->
15
16sequenceDiagram
17 autonumber
18 participant Reporter
19 participant Security Team
20 participant Developer
21
22 Reporter->>Security Team: Report bug
23 Security Team->>Security Team: Triage bug
24 Security Team->>Developer: Assign bug
25
26 Note over Reporter,Developer: [Consultation]
27
28 Developer->>Developer: Author and land CL on main
29 Developer->>Security Team: Mark bug as "Fixed"
30
31 Security Team-->>Developer: Assess for backports
32
33 Developer-->>Developer: Cherry pick
34
35 Security Team->>Security Team: VRP Panel
36 Security Team->>Reporter: Assign & pay reward
37 Security Team->>Reporter: Assign CVE
38 Security Team->>Security Team: Publish release & security notes
39
40 Reporter-->>Reporter: [Publicly disclose]
41</pre>
42
43## 1. Report bug
44
Amy Resslerc9d693f2024-01-04 17:19:4545A security bug begins when a reporter [
Robert Seseke4d979b2022-07-11 23:22:1446discloses](https://www.chromium.org/Home/chromium-security/reporting-security-bugs/)
47a bug in the [Chromium issue
Amy Resslercf808d52024-02-03 20:51:1748tracker](https://issues.chromium.org/issues/new?noWizard=true&component=1363614&template=1922342).
Robert Seseke4d979b2022-07-11 23:22:1449The new bug is placed in a queue of other incoming security bugs, and it is
50view-restricted to the reporter and select individuals on a need-to-know
51basis.
52
53Bug reports that include specific steps to reproduce, analysis, proofs of
Amy Resslerc9d693f2024-01-04 17:19:4554concept, and/or suggested patches are encouraged. The [Chrome Vulnerability
55Rewards Program (VRP) policies page](https://g.co/chrome/vrp/#report-quality)
56has information about the expected characteristics of baseline and high-quality
57security bug reports. Please also check the [FAQ](faq.md) to learn
58about issues that are frequently reported.
Robert Seseke4d979b2022-07-11 23:22:1459
60## 2. Triage bug
61
Liza Burakovaf3d929b62023-05-01 16:31:1262After the bug is filed, a [security shepherd](shepherd.md) will evaluate the
63report. The shepherd does several tasks:
Robert Seseke4d979b2022-07-11 23:22:1464
65- Validate that the bug reproduces
66- Searching for any duplicate reports
67- Tag the bug with components
68- Assess the bug's [severity](severity-guidelines.md)
69- Determine the versions affected
70- Assign the bug to a developer
71
72## 3. Assign bug
73
Liza Burakovaf3d929b62023-05-01 16:31:1274The primary job of the shepherd is to route valid and actionable reports of
Robert Seseke4d979b2022-07-11 23:22:1475security bugs to the Chromium developer who is best poised to fix the issue.
76
77After the issue is assigned, there may be discussion between the developer(s)
78involved, members of the security team, and the original reporter.
79
80## 4. Author and land a CL on `main`
81
Grace Park45077632023-01-28 00:58:4282The developer will author a fix and a regression test for the security issue
83The CL description should mention the bug number in a
Alex Goughca5b3f0f2024-09-02 20:32:5084[`Bug:` or `Fixed:` footer](../contributing.md#cl-footer-reference). The CL
85description should be as complete as possible and does not need to hide that
86the CL fixes a security issue. In general the CL should include a regression
87test - in limited cases where the issue can easily be triggered from a
88JavaScript sample the test can be landed later.
89
Robert Seseke4d979b2022-07-11 23:22:1490Once the CL lands, it will not yet be widely available to users, since it is
91only in the `main` branch. Unless further steps are taken (see below), the fix
92will roll out as part of the normal [release
93process](../process/release_cycle.md).
94
95Reporters are welcome to include a suggested patch in the report or to [upload a
96CL](../contributing.md) with the fix. In that case, the developer assigned to
97the bug can help code review and land it.
98
99## 5. Mark bug as *Fixed*
100
101Once the CL has landed, the developer should set the bug's status to *Fixed*.
102When the bug moves into the *Fixed* state, the security team's automation
Amy Resslercf808d52024-02-03 20:51:17103systems begin processing the bug report. In particular, the tools will update
104[merge request](../process/merge_request.md) the *Merge* fields with the
105appropriate merge request tags, based on the severity and impact assessed by
106the shepherd during triage.
Robert Seseke4d979b2022-07-11 23:22:14107
Amy Resslercf808d52024-02-03 20:51:17108VRP reports also are updated with the reward-topanel hotlist by the automation.
Amy Resslerc9d693f2024-01-04 17:19:45109This allows the report to be included in the VRP Panel queue for
110evaluation and consideration of a potential VRP reward at a future VRP Panel
111session.
112
Robert Seseke4d979b2022-07-11 23:22:14113## 6. Assess for backports
114
Amy Resslerc9d693f2024-01-04 17:19:45115The appropriate members of the security team will make the [final determination](https://www.chromium.org/Home/chromium-security/security-release-management/)
Robert Seseke4d979b2022-07-11 23:22:14116as to whether backports of the fix should occur to Stable and/or pre-Stable
117Chrome release channels.
118
119## 7. Cherry pick
120
121If approved for backporting, the developer will [cherry
122pick](../process/merge_request.md#landing-an-approved-merge) the CL to the
Amy Resslerc9d693f2024-01-04 17:19:45123release branches identified by the security team member who approved the
124merge.
Robert Seseke4d979b2022-07-11 23:22:14125
126## 8. VRP Panel
127
128Members of the security team meet regularly as a panel to assess [vulnerability
129rewards](vrp-faq.md) for externally reported security bugs. The individuals on
130the panel will [take into account](https://g.co/chrome/vrp) the severity and
131impact of the bug, the quality of the bug report, whether a patch/fix was
132proposed with the report, and other mitigating circumstances. The VRP panel will
133assign any reward amount for the bug.
134
135## 9. Assign and pay reward
136
137After the VRP panel meets, the reporter will be notified of the VRP reward
Amy Resslercf808d52024-02-03 20:51:17138decision through the bug report, and the *vrp-reward* field will be updated to
139reflect the VRP reward amount.
Robert Seseke4d979b2022-07-11 23:22:14140
Amy Resslerc9d693f2024-01-04 17:19:45141Payments are not handled by the security team. A member of the Google finance
142team working on VRP payments (p2p-vrp) will reach out to arrange payment. The
143reporter must first be enrolled in a payment system Google uses to issue
144payments. The p2p-vrp team will assist the reporter in the enrollment process.
145Once the reporter is enrolled, all potential future VRP payments will be
146processed automatically without any action required by the reporter.
147
Robert Seseke4d979b2022-07-11 23:22:14148## 10. Assign CVE
149
150At the time that the security fix is shipped to a Stable channel release, a
Amy Resslerc9d693f2024-01-04 17:19:45151security team member will assign the issue a [CVE](https://www.cve.org/) number.
152CVE numbers need to point to a publicly accessible artifact, and Chrome uses the
Robert Seseke4d979b2022-07-11 23:22:14153releases blog (see below) for this purpose.
154
155## 11. Publish release & security notes
156
157The Chrome Release team releases an update of Chrome containing the security
158fix. If the fix is included in a Stable channel release of Chrome, it will be
159listed and acknowledged in the security fix notes on the [Chrome Releases
160blog](https://googlechromereleases.blogspot.com/). Security issues will be
Amy Resslerc9d693f2024-01-04 17:19:45161highlighted with a short description, a reward amount, the CVE number, and
Robert Seseke4d979b2022-07-11 23:22:14162acknowledging the reporter as requested (if they have consented to such).
163
164## 12. Publicly disclose
165
166Except in rare circumstances where the bug report has been embargoed, 14 weeks
167after the issue is marked *Fixed*, security automation opens the bug for public
168disclosure. At that time, the reporter can consider their obligations under
Amy Resslerc9d693f2024-01-04 17:19:45169coordinated disclosure to be fulfilled.