xref: /dpdk/doc/guides/contributing/vulnerability.rst (revision 20cb55cb14714620f6f07547b1ab86474510c3d2)
1baf9fba3SThomas Monjalon..  SPDX-License-Identifier: BSD-3-Clause
2baf9fba3SThomas Monjalon    Copyright 2019 The DPDK contributors
3baf9fba3SThomas Monjalon
4baf9fba3SThomas MonjalonDPDK Vulnerability Management Process
5baf9fba3SThomas Monjalon=====================================
6baf9fba3SThomas Monjalon
7baf9fba3SThomas MonjalonScope
8baf9fba3SThomas Monjalon-----
9baf9fba3SThomas Monjalon
10baf9fba3SThomas MonjalonOnly the main repositories (dpdk and dpdk-stable) of the core project
1145c1608dSFerruh Yigitare in the scope of this security process (including experimental APIs).
12baf9fba3SThomas MonjalonIf a stable branch is declared unmaintained (end of life),
13baf9fba3SThomas Monjalonno fix will be applied.
14baf9fba3SThomas Monjalon
15baf9fba3SThomas MonjalonAll vulnerabilities are bugs, but not every bug is a vulnerability.
16baf9fba3SThomas MonjalonVulnerabilities compromise one or more of:
17baf9fba3SThomas Monjalon
18baf9fba3SThomas Monjalon* Confidentiality (personal or corporate confidential data).
19baf9fba3SThomas Monjalon* Integrity (trustworthiness and correctness).
20baf9fba3SThomas Monjalon* Availability (uptime and service).
21baf9fba3SThomas Monjalon
22baf9fba3SThomas MonjalonIf in doubt, please consider the vulnerability as security sensitive.
23baf9fba3SThomas MonjalonAt worst, the response will be to report the bug through the usual channels.
24baf9fba3SThomas Monjalon
25baf9fba3SThomas Monjalon
26baf9fba3SThomas MonjalonFinding
27baf9fba3SThomas Monjalon-------
28baf9fba3SThomas Monjalon
29baf9fba3SThomas MonjalonThere is no pro-active security engineering effort at the moment.
30baf9fba3SThomas Monjalon
31baf9fba3SThomas MonjalonPlease report any security issue you find in DPDK as described below.
32baf9fba3SThomas Monjalon
33baf9fba3SThomas Monjalon
34baf9fba3SThomas MonjalonReport
35baf9fba3SThomas Monjalon------
36baf9fba3SThomas Monjalon
37baf9fba3SThomas MonjalonDo not use Bugzilla (unsecured).
38baf9fba3SThomas MonjalonInstead, send GPG-encrypted emails
393d4b2afbSDavid Marchandto `security@dpdk.org <https://core.dpdk.org/security#contact>`_.
40baf9fba3SThomas MonjalonAnyone can post to this list.
41baf9fba3SThomas MonjalonIn order to reduce the disclosure of a vulnerability in the early stages,
42baf9fba3SThomas Monjalonmembership of this list is intentionally limited to a `small number of people
433d4b2afbSDavid Marchand<https://mails.dpdk.org/roster/security>`_.
44baf9fba3SThomas Monjalon
45baf9fba3SThomas MonjalonIt is additionally encouraged to GPG-sign one-on-one conversations
46baf9fba3SThomas Monjalonas part of the security process.
47baf9fba3SThomas Monjalon
48baf9fba3SThomas MonjalonAs it is with any bug, the more information provided,
49baf9fba3SThomas Monjalonthe easier it will be to diagnose and fix.
50baf9fba3SThomas MonjalonIf you already have a fix, please include it with your report,
51baf9fba3SThomas Monjalonas that can speed up the process considerably.
52baf9fba3SThomas Monjalon
53baf9fba3SThomas MonjalonIn the report, please note how you would like to be credited
54baf9fba3SThomas Monjalonfor discovering the issue
55baf9fba3SThomas Monjalonand the details of any embargo you would like to impose.
56baf9fba3SThomas Monjalon
57baf9fba3SThomas MonjalonIf the vulnerability is not public yet,
58baf9fba3SThomas Monjalonno patch or information should be disclosed publicly.
59baf9fba3SThomas MonjalonIf a fix is already published,
60baf9fba3SThomas Monjalonthe reporting process must be followed anyway, as described below.
61baf9fba3SThomas Monjalon
62baf9fba3SThomas Monjalon
63baf9fba3SThomas MonjalonConfirmation
64baf9fba3SThomas Monjalon------------
65baf9fba3SThomas Monjalon
66baf9fba3SThomas MonjalonUpon reception of the report, a security team member should reply
67baf9fba3SThomas Monjalonto the reporter acknowledging that the report has been received.
68baf9fba3SThomas Monjalon
69baf9fba3SThomas MonjalonThe DPDK security team reviews the security vulnerability reported.
70baf9fba3SThomas MonjalonArea experts not members of the security team may be involved in the process.
71baf9fba3SThomas MonjalonIn case the reported issue is not qualified as a security vulnerability,
72baf9fba3SThomas Monjalonthe security team will request the submitter to report it
73baf9fba3SThomas Monjalonusing the usual channel (Bugzilla).
74baf9fba3SThomas MonjalonIf qualified, the security team will assess which DPDK version are affected.
75baf9fba3SThomas MonjalonA bugzilla ID (allocated in a `reserved pool
76baf9fba3SThomas Monjalon<https://bugs.dpdk.org/buglist.cgi?f1=bug_group&o1=equals&v1=security>`_)
77baf9fba3SThomas Monjalonis assigned to the vulnerability, and kept empty until public disclosure.
78baf9fba3SThomas Monjalon
79baf9fba3SThomas MonjalonThe security team calculates the severity score with
80baf9fba3SThomas Monjalon`CVSS calculator <https://www.first.org/cvss/calculator/3.0>`_
81baf9fba3SThomas Monjalonbased on inputs from the reporter and its own assessment of the vulnerability,
82baf9fba3SThomas Monjalonand agrees on the score with the reporter.
83baf9fba3SThomas Monjalon
84baf9fba3SThomas MonjalonAn embargo may be put in place depending on the severity of the vulnerability.
85baf9fba3SThomas MonjalonIf an embargo is decided, its duration should be suggested by the security team
86baf9fba3SThomas Monjalonand negotiated with the reporter.
87baf9fba3SThomas MonjalonEmbargo duration between vulnerability confirmation and public disclosure
88baf9fba3SThomas Monjalonshould be between **one and ten weeks**.
89baf9fba3SThomas MonjalonIf an embargo is not required, the vulnerability may be fixed
90baf9fba3SThomas Monjalonusing the standard patch process, once a CVE number has been assigned.
91baf9fba3SThomas Monjalon
92baf9fba3SThomas MonjalonThe confirmation mail should be sent within **3 business days**.
93baf9fba3SThomas Monjalon
94baf9fba3SThomas MonjalonFollowing information must be included in the mail:
95baf9fba3SThomas Monjalon
96baf9fba3SThomas Monjalon* Confirmation
97baf9fba3SThomas Monjalon* CVSS severity and score
98baf9fba3SThomas Monjalon* Embargo duration
99baf9fba3SThomas Monjalon* Reporter credit
100baf9fba3SThomas Monjalon* Bug ID (empty and restricted for future reference)
101baf9fba3SThomas Monjalon
102baf9fba3SThomas MonjalonCVE Request
103baf9fba3SThomas Monjalon-----------
104baf9fba3SThomas Monjalon
105baf9fba3SThomas MonjalonThe security team develops a security advisory document.
106baf9fba3SThomas MonjalonThe security team may, at its discretion,
107baf9fba3SThomas Monjaloninclude the reporter (via "CC") in developing the security advisory document,
108baf9fba3SThomas Monjalonbut in any case should accept feedback
109baf9fba3SThomas Monjalonfrom the reporter before finalizing the document.
110baf9fba3SThomas MonjalonWhen the document is final, the security team needs to
111baf9fba3SThomas Monjalonrequest a CVE identifier from a CNA.
112baf9fba3SThomas Monjalon
113baf9fba3SThomas MonjalonThe CVE request should be sent
114baf9fba3SThomas Monjalonto `secalert@redhat.com <mailto:secalert@redhat.com>`_
115baf9fba3SThomas Monjalonusing GPG encrypted email
116baf9fba3SThomas Monjalon(see `contact details <https://access.redhat.com/security/team/contact>`_).
117baf9fba3SThomas Monjalon
118baf9fba3SThomas Monjalon
119baf9fba3SThomas MonjalonCVE Request Template with Embargo
120baf9fba3SThomas Monjalon~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
121baf9fba3SThomas Monjalon
122baf9fba3SThomas Monjalon::
123baf9fba3SThomas Monjalon
124baf9fba3SThomas Monjalon  A vulnerability was discovered in the DPDK project.
125baf9fba3SThomas Monjalon  In order to ensure full traceability, we need a CVE number assigned
126baf9fba3SThomas Monjalon  that we can attach to private and public notifications.
127baf9fba3SThomas Monjalon  Please treat the following information as confidential during the embargo
128baf9fba3SThomas Monjalon  until further public disclosure.
129baf9fba3SThomas Monjalon
130baf9fba3SThomas Monjalon  [PRODUCT]:
131baf9fba3SThomas Monjalon  [VERSION]:
132baf9fba3SThomas Monjalon  [PROBLEMTYPE]:
133baf9fba3SThomas Monjalon  [SEVERITY]:
134baf9fba3SThomas Monjalon  [REFERENCES]: { bug_url }
135baf9fba3SThomas Monjalon  [DESCRIPTION]:
136baf9fba3SThomas Monjalon
137baf9fba3SThomas Monjalon  Thanks
138baf9fba3SThomas Monjalon  { DPDK_security_team_member }, on behalf of the DPDK security team
139baf9fba3SThomas Monjalon
140baf9fba3SThomas Monjalon
141baf9fba3SThomas MonjalonCVE Request Template without Embargo
142baf9fba3SThomas Monjalon~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
143baf9fba3SThomas Monjalon
144baf9fba3SThomas Monjalon::
145baf9fba3SThomas Monjalon
146baf9fba3SThomas Monjalon  A vulnerability was discovered in the DPDK project.
147baf9fba3SThomas Monjalon  In order to ensure full traceability, we need a CVE number assigned
148baf9fba3SThomas Monjalon  that we can attach to private and public notifications.
149baf9fba3SThomas Monjalon
150baf9fba3SThomas Monjalon  [PRODUCT]:
151baf9fba3SThomas Monjalon  [VERSION]:
152baf9fba3SThomas Monjalon  [PROBLEMTYPE]:
153baf9fba3SThomas Monjalon  [SEVERITY]:
154baf9fba3SThomas Monjalon  [REFERENCES]: { bug_url }
155baf9fba3SThomas Monjalon  [DESCRIPTION]:
156baf9fba3SThomas Monjalon
157baf9fba3SThomas Monjalon  Thanks
158baf9fba3SThomas Monjalon  { DPDK_security_team_member }, on behalf of the DPDK security team
159baf9fba3SThomas Monjalon
160baf9fba3SThomas Monjalon
161baf9fba3SThomas MonjalonFix Development and Review
162baf9fba3SThomas Monjalon--------------------------
163baf9fba3SThomas Monjalon
164baf9fba3SThomas MonjalonIf the fix is already published, this step is skipped,
165baf9fba3SThomas Monjalonand the pre-release disclosure is replaced with the private disclosure,
166baf9fba3SThomas Monjalonas described below. It must not be considered as the standard process.
167baf9fba3SThomas Monjalon
168baf9fba3SThomas MonjalonThis step may be started in parallel with CVE creation.
169baf9fba3SThomas MonjalonThe patches fixing the vulnerability are developed and reviewed
170baf9fba3SThomas Monjalonby the security team and
171baf9fba3SThomas Monjalonby elected area experts that agree to maintain confidentiality.
172baf9fba3SThomas Monjalon
173*20cb55cbSLuca BoccassiThe CVE id and the bug id must be referenced in the patch if there is no
174*20cb55cbSLuca Boccassiembargo, or if there is an embargo, but it will be lifted when the release
175*20cb55cbSLuca Boccassiincluding the patch is published. If the embargo is going to be lifted after the
176*20cb55cbSLuca Boccassirelease, then the CVE and bug ids must be omitted from the commit message.
177baf9fba3SThomas Monjalon
178baf9fba3SThomas MonjalonBackports to the identified affected versions are done once the fix is ready.
179baf9fba3SThomas Monjalon
180baf9fba3SThomas Monjalon
181baf9fba3SThomas MonjalonPre-Release Disclosure
182baf9fba3SThomas Monjalon----------------------
183baf9fba3SThomas Monjalon
184baf9fba3SThomas MonjalonWhen the fix is ready, the security advisory and patches are sent
185baf9fba3SThomas Monjalonto downstream stakeholders
186baf9fba3SThomas Monjalon(`security-prerelease@dpdk.org <mailto:security-prerelease@dpdk.org>`_),
187baf9fba3SThomas Monjalonspecifying the date and time of the end of the embargo.
1884f041696SFerruh YigitThe communicated public disclosure date should be **less than one week**
189baf9fba3SThomas Monjalon
190baf9fba3SThomas MonjalonDownstream stakeholders are expected not to deploy or disclose patches
191baf9fba3SThomas Monjalonuntil the embargo is passed, otherwise they will be removed from the list.
192baf9fba3SThomas Monjalon
193baf9fba3SThomas MonjalonDownstream stakeholders (in `security-prerelease list
1943d4b2afbSDavid Marchand<https://mails.dpdk.org/roster/security-prerelease>`_), are:
195baf9fba3SThomas Monjalon
196baf9fba3SThomas Monjalon* Operating system vendors known to package DPDK
197baf9fba3SThomas Monjalon* Major DPDK users, considered trustworthy by the technical board, who
198baf9fba3SThomas Monjalon  have made the request to `techboard@dpdk.org <mailto:techboard@dpdk.org>`_
199baf9fba3SThomas Monjalon
200a46987cfSLuca BoccassiThe `OSS security private mailing list mailto:distros@vs.openwall.org>` will
201a46987cfSLuca Boccassialso be contacted one week before the end of the embargo, as indicated by `the
202a46987cfSLuca BoccassiOSS-security process <https://oss-security.openwall.org/wiki/mailing-lists/distros>`
203a46987cfSLuca Boccassiand using the PGP key listed on the same page, describing the details of the
204a46987cfSLuca Boccassivulnerability and sharing the patch[es]. Distributions and major vendors follow
205a46987cfSLuca Boccassithis private mailing list, and it functions as a single point of contact for
206a46987cfSLuca Boccassiembargoed advance notices for open source projects.
207a46987cfSLuca Boccassi
208baf9fba3SThomas MonjalonThe security advisory will be based on below template,
209baf9fba3SThomas Monjalonand will be sent signed with a security team's member GPG key.
210baf9fba3SThomas Monjalon
211baf9fba3SThomas Monjalon
212baf9fba3SThomas MonjalonPre-Release Mail Template
213baf9fba3SThomas Monjalon~~~~~~~~~~~~~~~~~~~~~~~~~
214baf9fba3SThomas Monjalon
215baf9fba3SThomas Monjalon::
216baf9fba3SThomas Monjalon
217baf9fba3SThomas Monjalon  This is an advance warning of a vulnerability discovered in DPDK,
218baf9fba3SThomas Monjalon  to give you, as downstream stakeholders, a chance to coordinate
219baf9fba3SThomas Monjalon  the release of fixes and reduce the vulnerability window.
220baf9fba3SThomas Monjalon  Please treat the following information as confidential until
221baf9fba3SThomas Monjalon  the proposed public disclosure date.
222baf9fba3SThomas Monjalon
223baf9fba3SThomas Monjalon  { impact_description }
224baf9fba3SThomas Monjalon
225baf9fba3SThomas Monjalon  Proposed patches are attached.
226baf9fba3SThomas Monjalon  Unless a flaw is discovered in them, these patches will be merged
227baf9fba3SThomas Monjalon  to { branches } on the public disclosure date.
228baf9fba3SThomas Monjalon
229baf9fba3SThomas Monjalon  CVE: { cve_id }
230baf9fba3SThomas Monjalon  Severity: { severity }
231baf9fba3SThomas Monjalon  CVSS scores: { cvss_scores }
232baf9fba3SThomas Monjalon
233baf9fba3SThomas Monjalon  Proposed public disclosure date/time: { disclosure_date } at 15:00 UTC.
234baf9fba3SThomas Monjalon  Please do not make the issue public (or release public patches)
235baf9fba3SThomas Monjalon  before this coordinated embargo date.
236baf9fba3SThomas Monjalon
237baf9fba3SThomas MonjalonIf the issue is leaked during the embargo, the same procedure is followed
238baf9fba3SThomas Monjalonwith only a few days delay between the pre-release and the public disclosure.
239baf9fba3SThomas Monjalon
240baf9fba3SThomas Monjalon
241baf9fba3SThomas MonjalonPrivate Disclosure
242baf9fba3SThomas Monjalon------------------
243baf9fba3SThomas Monjalon
244baf9fba3SThomas MonjalonIf a vulnerability is unintentionally already fixed in the public repository,
245baf9fba3SThomas Monjalona security advisory is sent to downstream stakeholders
246baf9fba3SThomas Monjalon(`security-prerelease@dpdk.org <mailto:security-prerelease@dpdk.org>`_),
247baf9fba3SThomas Monjalongiving few days to prepare for updating before the public disclosure.
248baf9fba3SThomas Monjalon
249baf9fba3SThomas Monjalon
250baf9fba3SThomas MonjalonPrivate Disclosure Mail Template
251baf9fba3SThomas Monjalon~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
252baf9fba3SThomas Monjalon
253baf9fba3SThomas Monjalon::
254baf9fba3SThomas Monjalon
255baf9fba3SThomas Monjalon  This is a warning of a vulnerability discovered in DPDK,
256baf9fba3SThomas Monjalon  to give you, as downstream stakeholders, a chance to coordinate
257baf9fba3SThomas Monjalon  the deployment of fixes before a CVE is public.
258baf9fba3SThomas Monjalon
259baf9fba3SThomas Monjalon  Please treat the following information as confidential until
260baf9fba3SThomas Monjalon  the proposed public disclosure date.
261baf9fba3SThomas Monjalon
262baf9fba3SThomas Monjalon  { impact_description }
263baf9fba3SThomas Monjalon
264baf9fba3SThomas Monjalon  Commits: { commit_ids with branch number }
265baf9fba3SThomas Monjalon
266baf9fba3SThomas Monjalon  CVE: { cve_id }
267baf9fba3SThomas Monjalon  Severity: { severity }
268baf9fba3SThomas Monjalon  CVSS scores: { cvss_scores }
269baf9fba3SThomas Monjalon
270baf9fba3SThomas Monjalon  Proposed public disclosure date/time: { disclosure_date }.
271baf9fba3SThomas Monjalon  Please do not make the vulnerability information public
272baf9fba3SThomas Monjalon  before this coordinated embargo date.
273baf9fba3SThomas Monjalon
274baf9fba3SThomas Monjalon
275baf9fba3SThomas MonjalonPublic Disclosure
276baf9fba3SThomas Monjalon-----------------
277baf9fba3SThomas Monjalon
278baf9fba3SThomas MonjalonOn embargo expiration, following tasks will be done simultaneously:
279baf9fba3SThomas Monjalon
280baf9fba3SThomas Monjalon* The assigned bug is filled by a member of the security team,
281baf9fba3SThomas Monjalon  with all relevant information, and it is made public.
282baf9fba3SThomas Monjalon* The patches are pushed to the appropriate branches.
283baf9fba3SThomas Monjalon* For long and short term stable branches fixed,
284baf9fba3SThomas Monjalon  new versions should be released.
285baf9fba3SThomas Monjalon
286baf9fba3SThomas MonjalonReleases on Monday to Wednesday are preferred, so that system administrators
287baf9fba3SThomas Monjalondo not have to deal with security updates over the weekend.
288baf9fba3SThomas Monjalon
289baf9fba3SThomas MonjalonThe security advisory is posted
290a46987cfSLuca Boccassito `announce@dpdk.org <mailto:announce@dpdk.org>`_ and to `the public OSS-security
291a46987cfSLuca Boccassimailing list <mailto:oss-security@lists.openwall.com>` as soon as the patches
292a46987cfSLuca Boccassiare pushed to the appropriate branches.
293baf9fba3SThomas Monjalon
294baf9fba3SThomas MonjalonPatches are then sent to `dev@dpdk.org <mailto:dev@dpdk.org>`_
295baf9fba3SThomas Monjalonand `stable@dpdk.org <mailto:stable@dpdk.org>`_ accordingly.
296baf9fba3SThomas Monjalon
297baf9fba3SThomas Monjalon
298baf9fba3SThomas MonjalonRelease Mail Template
299baf9fba3SThomas Monjalon~~~~~~~~~~~~~~~~~~~~~
300baf9fba3SThomas Monjalon
301baf9fba3SThomas Monjalon::
302baf9fba3SThomas Monjalon
303baf9fba3SThomas Monjalon  A vulnerability was fixed in DPDK.
304baf9fba3SThomas Monjalon  Some downstream stakeholders were warned in advance
305baf9fba3SThomas Monjalon  in order to coordinate the release of fixes
306baf9fba3SThomas Monjalon  and reduce the vulnerability window.
307baf9fba3SThomas Monjalon
308baf9fba3SThomas Monjalon  { impact_description }
309baf9fba3SThomas Monjalon
310baf9fba3SThomas Monjalon  Commits: { commit_ids with branch number }
311baf9fba3SThomas Monjalon
312baf9fba3SThomas Monjalon  CVE: { cve_id }
313baf9fba3SThomas Monjalon  Bugzilla: { bug_url }
314baf9fba3SThomas Monjalon  Severity: { severity }
315baf9fba3SThomas Monjalon  CVSS scores: { cvss_scores }
316baf9fba3SThomas Monjalon
317baf9fba3SThomas Monjalon
318baf9fba3SThomas MonjalonReferences
319baf9fba3SThomas Monjalon----------
320baf9fba3SThomas Monjalon
321baf9fba3SThomas Monjalon* `A minimal security response process
322baf9fba3SThomas Monjalon  <https://access.redhat.com/blogs/766093/posts/1975833>`_
323baf9fba3SThomas Monjalon* `fd.io Vulnerability Management
324baf9fba3SThomas Monjalon  <https://wiki.fd.io/view/TSC:Vulnerability_Management>`_
325baf9fba3SThomas Monjalon* `Open Daylight Vulnerability Management
326baf9fba3SThomas Monjalon  <https://wiki.opendaylight.org/view/Security:Vulnerability_Management>`_
327baf9fba3SThomas Monjalon* `CVE Assignment Information Format
328baf9fba3SThomas Monjalon  <https://cve.mitre.org/cve/list_rules_and_guidance/cve_assignment_information_format.html>`_
329