Annotation of embedaddon/curl/docs/SECURITY-PROCESS.md, revision 1.1.1.1

1.1       misho       1: curl security process
                      2: =====================
                      3: 
                      4: This document describes how security vulnerabilities should be handled in the
                      5: curl project.
                      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.
                     15: 
                     16: Vulnerability Handling
                     17: ----------------------
                     18: 
                     19: The typical process for handling a new security vulnerability is as follows.
                     20: 
                     21: No information should be made public about a vulnerability until it is
                     22: formally announced at the end of this process. That means, for example that a
                     23: bug tracker entry must NOT be created to track the issue since that will make
                     24: the issue public and it should not be discussed on any of the project's public
                     25: mailing lists. Also messages associated with any commits should not make any
                     26: reference to the security nature of the commit if done prior to the public
                     27: announcement.
                     28: 
                     29: - The person discovering the issue, the reporter, reports the vulnerability on
                     30:   [https://hackerone.com/curl](https://hackerone.com/curl). Issues filed there
                     31:   reach a handful of selected and trusted people.
                     32: 
                     33: - Messages that do not relate to the reporting or managing of an undisclosed
                     34:   security vulnerability in curl or libcurl are ignored and no further action
                     35:   is required.
                     36: 
                     37: - A person in the security team responds to the original report to acknowledge
                     38:   that a human has seen the report.
                     39: 
                     40: - The security team investigates the report and either rejects it or accepts
                     41:   it.
                     42: 
                     43: - If the report is rejected, the team writes to the reporter to explain why.
                     44: 
                     45: - If the report is accepted, the team writes to the reporter to let him/her
                     46:   know it is accepted and that they are working on a fix.
                     47: 
                     48: - The security team discusses the problem, works out a fix, considers the
                     49:   impact of the problem and suggests a release schedule. This discussion
                     50:   should involve the reporter as much as possible.
                     51: 
                     52: - The release of the information should be "as soon as possible" and is most
                     53:   often synchronized with an upcoming release that contains the fix. If the
                     54:   reporter, or anyone else involved, thinks the next planned release is too
                     55:   far away, then a separate earlier release should be considered.
                     56: 
                     57: - Write a security advisory draft about the problem that explains what the
                     58:   problem is, its impact, which versions it affects, solutions or workarounds,
                     59:   when the release is out and make sure to credit all contributors properly.
                     60:   Figure out the CWE (Common Weakness Enumeration) number for the flaw.
                     61: 
                     62: - Request a CVE number from
                     63:   [HackerOne](https://docs.hackerone.com/programs/cve-requests.html)
                     64: 
                     65: - Consider informing
                     66:   [distros@openwall](https://oss-security.openwall.org/wiki/mailing-lists/distros)
                     67:   to prepare them about the upcoming public security vulnerability
                     68:   announcement - attach the advisory draft for information. Note that
                     69:   'distros' won't accept an embargo longer than 14 days and they do not care
                     70:   for Windows-specific flaws.
                     71: 
                     72: - Update the "security advisory" with the CVE number.
                     73: 
                     74: - The security team commits the fix in a private branch. The commit message
                     75:   should ideally contain the CVE number. This fix is usually also distributed
                     76:   to the 'distros' mailing list to allow them to use the fix prior to the
                     77:   public announcement.
                     78: 
                     79: - No more than 48 hours before the release, the private branch is merged into
                     80:   the master branch and pushed. Once pushed, the information is accessible to
                     81:   the public and the actual release should follow suit immediately afterwards.
                     82:   The time between the push and the release is used for final tests and
                     83:   reviews.
                     84: 
                     85: - The project team creates a release that includes the fix.
                     86: 
                     87: - The project team announces the release and the vulnerability to the world in
                     88:   the same manner we always announce releases. It gets sent to the
                     89:   curl-announce, curl-library and curl-users mailing lists.
                     90: 
                     91: - The security web page on the web site should get the new vulnerability
                     92:   mentioned.
                     93: 
                     94: curl-security (at haxx dot se)
                     95: ------------------------------
                     96: 
                     97: This is a private mailing list for discussions on and about curl security
                     98: issues.
                     99: 
                    100: Who is on this list? There are a couple of criteria you must meet, and then we
                    101: might ask you to join the list or you can ask to join it. It really isn't very
                    102: formal. We basically only require that you have a long-term presence in the
                    103: curl project and you have shown an understanding for the project and its way
                    104: of working. You must've been around for a good while and you should have no
                    105: plans in vanishing in the near future.
                    106: 
                    107: We do not make the list of participants public mostly because it tends to vary
                    108: somewhat over time and a list somewhere will only risk getting outdated.
                    109: 
                    110: Publishing Security Advisories
                    111: ------------------------------
                    112: 
                    113: 1. Write up the security advisory, using markdown syntax. Use the same
                    114:    subtitles as last time to maintain consistency.
                    115: 
                    116: 2. Name the advisory file after the allocated CVE id.
                    117: 
                    118: 3. Add a line on the top of the array in `curl-www/docs/vuln.pm'.
                    119: 
                    120: 4. Put the new advisory markdown file in the curl-www/docs/ directory. Add it
                    121:    to the git repo.
                    122: 
                    123: 5. Run `make` in your local web checkout and verify that things look fine.
                    124: 
                    125: 6. On security advisory release day, push the changes on the curl-www
                    126:    repository's remote master branch.
                    127: 
                    128: Bug Bounty
                    129: ----------
                    130: 
                    131: See [BUG-BOUNTY](https://curl.haxx.se/docs/bugbounty.html) for details on the
                    132: bug bounty program.

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>