1 curl security for developers 2 ============================ 3 4 This document is intended to provide guidance to curl developers on how 5 security vulnerabilities should be handled. 6 7 Publishing Information 8 ---------------------- 9 10 All known and public curl or libcurl related vulnerabilities are listed on 11 [the curl web site security page](https://curl.haxx.se/docs/security.html). 12 13 Security vulnerabilities should not be entered in the project's public bug 14 tracker unless the necessary configuration is in place to limit access to the 15 issue to only the reporter and the project's security team. 16 17 Vulnerability Handling 18 ---------------------- 19 20 The typical process for handling a new security vulnerability is as follows. 21 22 No information should be made public about a vulnerability until it is 23 formally announced at the end of this process. That means, for example that a 24 bug tracker entry must NOT be created to track the issue since that will make 25 the issue public and it should not be discussed on any of the project's public 26 mailing lists. Also messages associated with any commits should not make 27 any reference to the security nature of the commit if done prior to the public 28 announcement. 29 30 - The person discovering the issue, the reporter, reports the vulnerability 31 privately to `curl-security (a] haxx.se`. That's an email alias that reaches a 32 handful of selected and trusted people. 33 34 - Messages that do not relate to the reporting or managing of an undisclosed 35 security vulnerability in curl or libcurl are ignored and no further action 36 is required. 37 38 - A person in the security team sends an e-mail to the original reporter to 39 acknowledge the report. 40 41 - The security team investigates the report and either rejects it or accepts 42 it. 43 44 - If the report is rejected, the team writes to the reporter to explain why. 45 46 - If the report is accepted, the team writes to the reporter to let him/her 47 know it is accepted and that they are working on a fix. 48 49 - The security team discusses the problem, works out a fix, considers the 50 impact of the problem and suggests a release schedule. This discussion 51 should involve the reporter as much as possible. 52 53 - The release of the information should be "as soon as possible" and is most 54 often synced with an upcoming release that contains the fix. If the 55 reporter, or anyone else, thinks the next planned release is too far away 56 then a separate earlier release for security reasons should be considered. 57 58 - Write a security advisory draft about the problem that explains what the 59 problem is, its impact, which versions it affects, solutions or 60 workarounds, when the release is out and make sure to credit all 61 contributors properly. 62 63 - Request a CVE number from 64 [distros@openwall](http://oss-security.openwall.org/wiki/mailing-lists/distros) 65 when also informing and preparing them for the upcoming public security 66 vulnerability announcement - attach the advisory draft for information. Note 67 that 'distros' won't accept an embargo longer than 19 days and they do not 68 care for Windows-specific flaws. For windows-specific flaws, request CVE 69 directly from MITRE. 70 71 - Update the "security advisory" with the CVE number. 72 73 - The security team commits the fix in a private branch. The commit message 74 should ideally contain the CVE number. This fix is usually also distributed 75 to the 'distros' mailing list to allow them to use the fix prior to the 76 public announcement. 77 78 - No more than 48 hours before the release, the private branch is merged into 79 the master branch and pushed. Once pushed, the information is accessible to 80 the public and the actual release should follow suit immediately afterwards. 81 The time between the push and the release is used for final tests and 82 reviews. 83 84 - The project team creates a release that includes the fix. 85 86 - The project team announces the release and the vulnerability to the world in 87 the same manner we always announce releases. It gets sent to the 88 curl-announce, curl-library and curl-users mailing lists. 89 90 - The security web page on the web site should get the new vulnerability 91 mentioned. 92 93 Pre-notification 94 ---------------- 95 96 If you think you are or should be eligible for a pre-notification about 97 upcoming security announcements for curl, we urge OS distros and similar 98 vendors to primarily join the distros@openwall list as that is one of the 99 purposes of that list - and not just for curl of course. 100 101 If you are not a distro or otherwise not suitable for distros@openwall and yet 102 want pre-notifications from us, contact the curl security team with a detailed 103 and clear explanation why this is the case. 104 105 curl-security (at haxx dot se) 106 ------------------------------ 107 108 Who is on this list? There are a couple of criteria you must meet, and then we 109 might ask you to join the list or you can ask to join it. It really isn't very 110 formal. We basically only require that you have a long-term presence in the 111 curl project and you have shown an understanding for the project and its way 112 of working. You must've been around for a good while and you should have no 113 plans in vanishing in the near future. 114 115 We do not make the list of participants public mostly because it tends to vary 116 somewhat over time and a list somewhere will only risk getting outdated. 117