Robert Sesek | e4d979b | 2022-07-11 23:22:14 | [diff] [blame] | 1 | # Life of a Security Issue |
| 2 | |
| 3 | This page will help you understand the life cycle of a manually-reported |
| 4 | external security bug in the Chromium project. Internally reported and |
| 5 | fuzzer-found bugs follow a similar lifecycle, though specific details vary. The |
| 6 | process can be visualized at a high level using the state diagram below, and |
| 7 | further explanation is provided in the paragraphs that follow. |
| 8 | |
| 9 |  |
| 10 | |
| 11 | <pre style="display:none" data-note="Source code for sequence diagram. Gitiles will not display this."> |
| 12 | <!-- |
| 13 | https://mermaid.live/edit#pako:eNqNU71uwjAQfpWTh070BTJUqgKd2goBYiEdLvZBLBw79Q9thHj3OpAgklCJJUpy39_d2UfGjSCWMEffgTSnqcSdxTLTmcfgjQ5lTrb5qtB6yWWF2sOCKmP9-P-SeLDS17Cii8RtcUoHUqY6s2Kp03h-eenRklYd8rBrcL3iGLyyMTD9B756JvDqnNzpFhihn8YTmAPZazeTG_QmNdoF5dFLo78ujGt5IBx8YSygFqCaR_oORkOJckQaRP9Au2_yADrI2Jv8JZGxi1W_j1Ej5Bxso2eOfN9kd8OAfUZakLU1VJLv78mPgq0Xc5ijJnUP203rOtEnqLAGSz9oxUOEdD17IMQ85Eq6IgorQkfRxnUAHVfnBqeoZ7Q5k7mqQUjHlXEUV8gmrCQb9yLicT9mGuLQfUElZSyJr4K2GBfebOAUoaES6GkmpDeWJVtUjiasuRHLWnOWeBuoA7VXpkWd_gADszf5 |
| 14 | --> |
| 15 | |
| 16 | sequenceDiagram |
| 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 Ressler | c9d693f | 2024-01-04 17:19:45 | [diff] [blame] | 45 | A security bug begins when a reporter [ |
Robert Sesek | e4d979b | 2022-07-11 23:22:14 | [diff] [blame] | 46 | discloses](https://www.chromium.org/Home/chromium-security/reporting-security-bugs/) |
| 47 | a bug in the [Chromium issue |
Amy Ressler | cf808d5 | 2024-02-03 20:51:17 | [diff] [blame] | 48 | tracker](https://issues.chromium.org/issues/new?noWizard=true&component=1363614&template=1922342). |
Robert Sesek | e4d979b | 2022-07-11 23:22:14 | [diff] [blame] | 49 | The new bug is placed in a queue of other incoming security bugs, and it is |
| 50 | view-restricted to the reporter and select individuals on a need-to-know |
| 51 | basis. |
| 52 | |
| 53 | Bug reports that include specific steps to reproduce, analysis, proofs of |
Amy Ressler | c9d693f | 2024-01-04 17:19:45 | [diff] [blame] | 54 | concept, and/or suggested patches are encouraged. The [Chrome Vulnerability |
| 55 | Rewards Program (VRP) policies page](https://g.co/chrome/vrp/#report-quality) |
| 56 | has information about the expected characteristics of baseline and high-quality |
| 57 | security bug reports. Please also check the [FAQ](faq.md) to learn |
| 58 | about issues that are frequently reported. |
Robert Sesek | e4d979b | 2022-07-11 23:22:14 | [diff] [blame] | 59 | |
| 60 | ## 2. Triage bug |
| 61 | |
Liza Burakova | f3d929b6 | 2023-05-01 16:31:12 | [diff] [blame] | 62 | After the bug is filed, a [security shepherd](shepherd.md) will evaluate the |
| 63 | report. The shepherd does several tasks: |
Robert Sesek | e4d979b | 2022-07-11 23:22:14 | [diff] [blame] | 64 | |
| 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 Burakova | f3d929b6 | 2023-05-01 16:31:12 | [diff] [blame] | 74 | The primary job of the shepherd is to route valid and actionable reports of |
Robert Sesek | e4d979b | 2022-07-11 23:22:14 | [diff] [blame] | 75 | security bugs to the Chromium developer who is best poised to fix the issue. |
| 76 | |
| 77 | After the issue is assigned, there may be discussion between the developer(s) |
| 78 | involved, members of the security team, and the original reporter. |
| 79 | |
| 80 | ## 4. Author and land a CL on `main` |
| 81 | |
Grace Park | 4507763 | 2023-01-28 00:58:42 | [diff] [blame] | 82 | The developer will author a fix and a regression test for the security issue |
| 83 | The CL description should mention the bug number in a |
Alex Gough | ca5b3f0f | 2024-09-02 20:32:50 | [diff] [blame] | 84 | [`Bug:` or `Fixed:` footer](../contributing.md#cl-footer-reference). The CL |
| 85 | description should be as complete as possible and does not need to hide that |
| 86 | the CL fixes a security issue. In general the CL should include a regression |
| 87 | test - in limited cases where the issue can easily be triggered from a |
| 88 | JavaScript sample the test can be landed later. |
| 89 | |
Robert Sesek | e4d979b | 2022-07-11 23:22:14 | [diff] [blame] | 90 | Once the CL lands, it will not yet be widely available to users, since it is |
| 91 | only in the `main` branch. Unless further steps are taken (see below), the fix |
| 92 | will roll out as part of the normal [release |
| 93 | process](../process/release_cycle.md). |
| 94 | |
| 95 | Reporters are welcome to include a suggested patch in the report or to [upload a |
| 96 | CL](../contributing.md) with the fix. In that case, the developer assigned to |
| 97 | the bug can help code review and land it. |
| 98 | |
| 99 | ## 5. Mark bug as *Fixed* |
| 100 | |
| 101 | Once the CL has landed, the developer should set the bug's status to *Fixed*. |
| 102 | When the bug moves into the *Fixed* state, the security team's automation |
Amy Ressler | cf808d5 | 2024-02-03 20:51:17 | [diff] [blame] | 103 | systems begin processing the bug report. In particular, the tools will update |
| 104 | [merge request](../process/merge_request.md) the *Merge* fields with the |
| 105 | appropriate merge request tags, based on the severity and impact assessed by |
| 106 | the shepherd during triage. |
Robert Sesek | e4d979b | 2022-07-11 23:22:14 | [diff] [blame] | 107 | |
Amy Ressler | cf808d5 | 2024-02-03 20:51:17 | [diff] [blame] | 108 | VRP reports also are updated with the reward-topanel hotlist by the automation. |
Amy Ressler | c9d693f | 2024-01-04 17:19:45 | [diff] [blame] | 109 | This allows the report to be included in the VRP Panel queue for |
| 110 | evaluation and consideration of a potential VRP reward at a future VRP Panel |
| 111 | session. |
| 112 | |
Robert Sesek | e4d979b | 2022-07-11 23:22:14 | [diff] [blame] | 113 | ## 6. Assess for backports |
| 114 | |
Amy Ressler | c9d693f | 2024-01-04 17:19:45 | [diff] [blame] | 115 | The appropriate members of the security team will make the [final determination](https://www.chromium.org/Home/chromium-security/security-release-management/) |
Robert Sesek | e4d979b | 2022-07-11 23:22:14 | [diff] [blame] | 116 | as to whether backports of the fix should occur to Stable and/or pre-Stable |
| 117 | Chrome release channels. |
| 118 | |
| 119 | ## 7. Cherry pick |
| 120 | |
| 121 | If approved for backporting, the developer will [cherry |
| 122 | pick](../process/merge_request.md#landing-an-approved-merge) the CL to the |
Amy Ressler | c9d693f | 2024-01-04 17:19:45 | [diff] [blame] | 123 | release branches identified by the security team member who approved the |
| 124 | merge. |
Robert Sesek | e4d979b | 2022-07-11 23:22:14 | [diff] [blame] | 125 | |
| 126 | ## 8. VRP Panel |
| 127 | |
| 128 | Members of the security team meet regularly as a panel to assess [vulnerability |
| 129 | rewards](vrp-faq.md) for externally reported security bugs. The individuals on |
| 130 | the panel will [take into account](https://g.co/chrome/vrp) the severity and |
| 131 | impact of the bug, the quality of the bug report, whether a patch/fix was |
| 132 | proposed with the report, and other mitigating circumstances. The VRP panel will |
| 133 | assign any reward amount for the bug. |
| 134 | |
| 135 | ## 9. Assign and pay reward |
| 136 | |
| 137 | After the VRP panel meets, the reporter will be notified of the VRP reward |
Amy Ressler | cf808d5 | 2024-02-03 20:51:17 | [diff] [blame] | 138 | decision through the bug report, and the *vrp-reward* field will be updated to |
| 139 | reflect the VRP reward amount. |
Robert Sesek | e4d979b | 2022-07-11 23:22:14 | [diff] [blame] | 140 | |
Amy Ressler | c9d693f | 2024-01-04 17:19:45 | [diff] [blame] | 141 | Payments are not handled by the security team. A member of the Google finance |
| 142 | team working on VRP payments (p2p-vrp) will reach out to arrange payment. The |
| 143 | reporter must first be enrolled in a payment system Google uses to issue |
| 144 | payments. The p2p-vrp team will assist the reporter in the enrollment process. |
| 145 | Once the reporter is enrolled, all potential future VRP payments will be |
| 146 | processed automatically without any action required by the reporter. |
| 147 | |
Robert Sesek | e4d979b | 2022-07-11 23:22:14 | [diff] [blame] | 148 | ## 10. Assign CVE |
| 149 | |
| 150 | At the time that the security fix is shipped to a Stable channel release, a |
Amy Ressler | c9d693f | 2024-01-04 17:19:45 | [diff] [blame] | 151 | security team member will assign the issue a [CVE](https://www.cve.org/) number. |
| 152 | CVE numbers need to point to a publicly accessible artifact, and Chrome uses the |
Robert Sesek | e4d979b | 2022-07-11 23:22:14 | [diff] [blame] | 153 | releases blog (see below) for this purpose. |
| 154 | |
| 155 | ## 11. Publish release & security notes |
| 156 | |
| 157 | The Chrome Release team releases an update of Chrome containing the security |
| 158 | fix. If the fix is included in a Stable channel release of Chrome, it will be |
| 159 | listed and acknowledged in the security fix notes on the [Chrome Releases |
| 160 | blog](https://googlechromereleases.blogspot.com/). Security issues will be |
Amy Ressler | c9d693f | 2024-01-04 17:19:45 | [diff] [blame] | 161 | highlighted with a short description, a reward amount, the CVE number, and |
Robert Sesek | e4d979b | 2022-07-11 23:22:14 | [diff] [blame] | 162 | acknowledging the reporter as requested (if they have consented to such). |
| 163 | |
| 164 | ## 12. Publicly disclose |
| 165 | |
| 166 | Except in rare circumstances where the bug report has been embargoed, 14 weeks |
| 167 | after the issue is marked *Fixed*, security automation opens the bug for public |
| 168 | disclosure. At that time, the reporter can consider their obligations under |
Amy Ressler | c9d693f | 2024-01-04 17:19:45 | [diff] [blame] | 169 | coordinated disclosure to be fulfilled. |