mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 12:05:37 +00:00
Merge pull request #8826 from open-sausages/pulls/4/docs-cve-security-process
DOCS Clarify security process, introduce CVE and CVSS
This commit is contained in:
commit
b388114dd3
@ -119,7 +119,7 @@ SS_DEPRECATION_ENABLED="0"
|
||||
### Reporting an issue
|
||||
|
||||
Report security issues in our [commercially supported modules](https://www.silverstripe.org/software/addons/silverstripe-commercially-supported-module-list/)
|
||||
to [security@silverstripe.com](mailto:security@silverstripe.com).
|
||||
to [security@silverstripe.com](mailto:security@silverstripe.org).
|
||||
Please don't file security issues in our [bugtracker](issues_and_bugs).
|
||||
|
||||
### Acknowledgment and disclosure
|
||||
@ -128,16 +128,11 @@ In the event of a confirmed vulnerability in our
|
||||
[supported modules](https://www.silverstripe.org/software/addons/silverstripe-commercially-supported-module-list/),
|
||||
we will take the following actions:
|
||||
|
||||
* Acknowledge to the reporter that we’ve received the report and that a fix is forthcoming. We’ll give a rough
|
||||
timeline and ask the reporter to keep the issue confidential until we announce it.
|
||||
* Assign a unique identifier to the issue in the format `SS-<year>-<count>`,
|
||||
where `<count>` is a padded three digit number counting issues for the year.
|
||||
Example: `SS-2013-001` would be the first of the year `2013`.
|
||||
Additionally, [CVE](http://cve.mitre.org) numbers are accepted.
|
||||
* Halt all other development as long as is needed to develop a fix, including patches against the current and one
|
||||
previous major release (if applicable).
|
||||
* Pre-announce the upcoming security release to aprivate pre-announcement mailing list of important stakeholders (see below).
|
||||
* We will inform you about resolution and [announce](https://forum.silverstripe.org/c/releases) a
|
||||
* Acknowledge to the reporter that we’ve received the report and that a fix is forthcoming.
|
||||
We’ll give a rough timeline and ask the reporter to keep the issue confidential until we announce it.
|
||||
* Assign a [CVE identifier](https://cve.mitre.org) to the issue.
|
||||
* For "high" and "critical" issues (CVSS of >=7.0): Pre-announce the upcoming security release to aprivate pre-announcement mailing list of important stakeholders (see below).
|
||||
* We will inform you about resolution and [announce](https://forum.silverstripe.org/c/releases) a
|
||||
[new release](http://silverstripe.org/security-releases/) publically.
|
||||
|
||||
You can help us determine the problem and speed up responses by providing us with more information on how to reproduce
|
||||
@ -147,52 +142,25 @@ webserver access logs (if a hack is suspected), any other services and web packa
|
||||
### Severity rating
|
||||
|
||||
Each [security release](http://www.silverstripe.org/security-releases/) includes an overall severity rating and one for
|
||||
each vulnerability. The rating indicates how important an update is:
|
||||
each vulnerability. The rating indicates how important an update is.
|
||||
It follows the [Common Vulnerability Scoring System (CVSS)](https://www.first.org/cvss).
|
||||
|
||||
| Severity | Description |
|
||||
|---------------|-------------|
|
||||
| **Critical** | Critical releases require immediate action. Such vulnerabilities allow attackers to take control of your site and you should upgrade on the day of release. *Example: Directory traversal, privilege escalation* |
|
||||
| **Important** | Important releases should be evaluated immediately. These issues allow an attacker to compromise a site's data and should be fixed within days. *Example: SQL injection.* |
|
||||
| **Moderate** | Releases of moderate severity should be applied as soon as possible. They allow the unauthorized editing or creation of content. *Examples: Cross Site Scripting (XSS) in template helpers.* |
|
||||
| **Low** | Low risk releases fix information disclosure and read-only privilege escalation vulnerabilities. These updates should also be applied as soon as possible, but with an impact-dependent priority. *Example: Exposure of the core version number, Cross Site Scripting (XSS) limited to the admin interface.* |
|
||||
| Severity | CVSS | Description |
|
||||
|---------------|------|-------------|
|
||||
| **Critical** | 9.0 to 10.0 | Critical releases require immediate action. Such vulnerabilities allow attackers to take control of your site and you should upgrade on the day of release. *Example: Directory traversal, privilege escalation* |
|
||||
| **High** | 7.0 to 8.9 | Important releases should be evaluated immediately. These issues allow an attacker to compromise a site's data and should be fixed within days. *Example: SQL injection.* |
|
||||
| **Medium** | 4.0 to 6.9 | Releases of moderate severity should be applied as soon as possible. They allow the unauthorized editing or creation of content. *Examples: Cross Site Scripting (XSS) in template helpers.* |
|
||||
| **Low** | 0.1 to 3.9 | Low risk releases fix information disclosure and read-only privilege escalation vulnerabilities. These updates should also be applied as soon as possible, but with an impact-dependent priority. *Example: Exposure of the core version number, Cross Site Scripting (XSS) limited to the admin interface.* |
|
||||
|
||||
### Internal Security Process
|
||||
|
||||
Follow these instructions in sequence as much as possible:
|
||||
|
||||
* When receiving a report:
|
||||
* Perform initial criticality assessment, and ensure that the reporter is given a justification for all issues we classify or demote as non-security vulnerabilities.
|
||||
* Assign a unique identifier (see "Acknowledgement and disclosure").
|
||||
Identifiers are based on reported year and order reported in JIRA (Example: `SS-2017-001`)
|
||||
* Respond to issue reporter with this identifier on the same discussion thread (cc security@silverstripe.org). Clarify issue if required.
|
||||
* If encrypted information is provided, add pass phrases into the SilverStripe Ltd. LastPass account. Keep encrypted documents in Google Drive and only share directly with relevant participants
|
||||
* Add a new issue in the "Backlog" on the [project board](https://github.com/silverstripe-security/security-issues/projects/1).
|
||||
Add a link to the [Google Groups](https://groups.google.com/a/silverstripe.com/forum/#!forum/security) discussion thread so it's easy to review follow up messages.
|
||||
* Create a draft page under [Open Source > Download > Security Releases](https://www.silverstripe.org/admin/pages/edit/show/794) on silverstripe.org. Describe the issue in a readable way, make the impact clear. Credit the author if applicable.
|
||||
* Clarify who picks up owns the issue resolution
|
||||
* When developing a fix:
|
||||
* Ensure you're working on the oldest supported minor release branch of every supported major release (see [Supported Versions](#supported-versions))
|
||||
* Move the issue into "In Progress" on the [project board](https://github.com/silverstripe-security/security-issues/projects/1)
|
||||
* Add fixes on the [http://github.com/silverstripe-security](http://github.com/silverstripe-security) repo
|
||||
* Ensure that all security commit messages are prefixed with the CVE. E.g. "[ss-2015-001] Fixed invalid XSS"
|
||||
* Get them peer reviewed by posting on security@silverstripe.org with a link to the Github issue
|
||||
* Before release (or release candidate)
|
||||
* Merge back from [http://github.com/silverstripe-security](http://github.com/silverstripe-security) repos shortly at the release (minimise early disclosure through source code)
|
||||
* Merge up to newer minor release branches (see [Supported Versions](#supported-versions))
|
||||
* Send out a note on the pre-announcement mailing list with a highlevel description of the issue and impact (usually a copy of the yet unpublished security release page on silverstripe.org)
|
||||
* Link to silverstripe.org security release page in the changelog.
|
||||
* Move the issue to "Awaiting Release" in the [project board](https://github.com/silverstripe-security/security-issues/projects/1)
|
||||
* Perform release
|
||||
* Follow the steps for [making a core release](making-a-silverstripe-core-release)
|
||||
* After release
|
||||
* Publish silverstripe.org security release page
|
||||
* Respond to issue reporter with reference to the release on the same discussion thread (cc security@silverstripe.org)
|
||||
* Move the issue to "Done" in the [project board](https://github.com/silverstripe-security/security-issues/projects/1)
|
||||
See [SilverStripe Core Release Process](making-a-silverstripe-core-release).
|
||||
|
||||
### Pre-announcement mailing list
|
||||
|
||||
In addition to our public disclosure process, we maintain a private mailing list where upcoming security releases
|
||||
are pre-announced. Members of this list will receive a security pre-announcement, as soon as it has been
|
||||
In addition to our public disclosure process, we maintain a private mailing list where upcoming
|
||||
"high" or "critical" security releases are pre-announced.
|
||||
Members of this list will receive a security pre-announcement, as soon as it has been
|
||||
sufficiently researched, with a timeline for the upcoming release.
|
||||
This will happen a few days before the announcement goes public alongside a new release,
|
||||
and most likely before a patch has been developed.
|
||||
|
@ -90,6 +90,8 @@ For doing security releases the following additional setup tasks are necessary:
|
||||
|
||||
## Security release process
|
||||
|
||||
### Overview
|
||||
|
||||
When doing a security release, typically one or more (or sometimes all) of the below
|
||||
steps will need to be performed manually. As such, this guide should not be followed
|
||||
exactly the same for these.
|
||||
@ -102,41 +104,52 @@ Security issues are never disclosed until a public stable release containing thi
|
||||
is available, or within a reasonable period of time of such a release.
|
||||
</div>
|
||||
|
||||
Producing a security fix follows this general process:
|
||||
### When receiving a report
|
||||
|
||||
* When a security issue is disclosed on security@silverstripe.com it should be given
|
||||
a CVE (common vulnerability exposure) code. E.g. ss-2015-020. Make sure you thank
|
||||
anyone who disclosed this issue, and confirm with them as soon as possible whether
|
||||
this issue is a verified security issue.
|
||||
* Log this CVE, along with description, release version, and name of reporter in
|
||||
the [security issues GitHub repository](https://github.com/silverstripe-security/security-issues/issues).
|
||||
* Create a similar record of this issue on the [security releases page](http://www.silverstripe.org/download/security-releases)
|
||||
in draft mode.
|
||||
* Post a pre-announcement to the [security pre-announcement list](https://groups.google.com/a/silverstripe.com/forum/#!forum/security-preannounce).
|
||||
It's normally ideal to include a [CVSS](https://nvd.nist.gov/CVSS-v2-Calculator)
|
||||
(common vulnerability scoring system) along with this pre-announcement. If the
|
||||
release date of the final stable is not known, then it's ok to give an estimated
|
||||
release schedule.
|
||||
* Push the current upstream target branches (e.g. 3.2) to the corresponding security fork
|
||||
to the equivalent branch on [silverstripe-security](https://github.com/silverstripe-security).
|
||||
Security fixes should be applied to the branch on this private repository only.
|
||||
Once a fix (or fixes) have been applied to this branch, then a tag can be applied,
|
||||
and a private release can then be developed in order to test this release.
|
||||
* Once upstream branches are all pushed to the security forks, make sure to merge all
|
||||
security fixes into those branches prior to running cow.
|
||||
* Setup a temporary [satis](https://github.com/composer/satis) repository which points to all relevant repositories
|
||||
* Perform initial criticality assessment, and ensure that the reporter is given a justification for all issues we classify or demote as non-security vulnerabilities.
|
||||
* If encrypted information is provided, add pass phrases into the SilverStripe Ltd. LastPass account. Keep encrypted documents in Google Drive and only share directly with relevant participants
|
||||
* Add a new issue in the "Backlog" on the [project board](https://github.com/silverstripe-security/security-issues/projects/1).
|
||||
Add a link to the [Google Groups](https://groups.google.com/a/silverstripe.com/forum/#!forum/security) discussion thread so it's easy to review follow up messages.
|
||||
* Use the [CVSS Calculator](https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator) to determine the issue severity
|
||||
* Once the issue is confirmed, [request a CVE identifier](https://cveform.mitre.org/) under the security@silverstripe.org contact email (see "Acknowledgement and disclosure").
|
||||
* Once a CVE has been assigned, respond to issue reporter and add it to the Github issue
|
||||
* Clarify who picks up owns the issue resolution (assign in Github)
|
||||
|
||||
### When developing a fix
|
||||
|
||||
* Ensure you're working on the oldest supported minor release branch of every supported major release (see [Supported Versions](#supported-versions))
|
||||
* Move the issue into "In Progress" on the [project board](https://github.com/silverstripe-security/security-issues/projects/1)
|
||||
* Add fixes on the [http://github.com/silverstripe-security](http://github.com/silverstripe-security) repo. Don't forget to update branches from the upstream repo.
|
||||
* Ensure that all security commit messages are prefixed with the CVE. E.g. "[CVE-2019-001] Fixed invalid XSS"
|
||||
* Get them peer reviewed by posting on security@silverstripe.org with a link to the Github issue
|
||||
|
||||
### Before release (or release candidate)
|
||||
|
||||
* For issues rated "high" or "critical" (CVSS of >=7.0), post a pre-announcement to the [security pre-announcement list](https://groups.google.com/a/silverstripe.com/forum/#!forum/security-preannounce).
|
||||
It should include a basic "preannouncement description" which doesn't give away too much,
|
||||
the CVSS score as well as the CVE identifier.
|
||||
* Create a draft page under [Open Source > Download > Security Releases](https://www.silverstripe.org/admin/pages/edit/show/794).
|
||||
Populate it with the information from the [Github project board](https://github.com/silverstripe-security/security-issues/projects/1).
|
||||
* Link to silverstripe.org security release page in the changelog.
|
||||
* Move the issue to "Awaiting Release" in the [project board](https://github.com/silverstripe-security/security-issues/projects/1)
|
||||
|
||||
### Perform release
|
||||
|
||||
* Public disclosure of security vulnerabilities need to happen in stable releases (not pre-releases)
|
||||
* Merge back from [http://github.com/silverstripe-security](http://github.com/silverstripe-security) repos shortly at the release (minimise early disclosure through source code)
|
||||
* Merge up to newer minor release branches (see [Supported Versions](#supported-versions))
|
||||
* Setup a temporary [satis](https://github.com/composer/satis) repository which points to all relevant repositories
|
||||
containing security fixes. See below for setting up a temporary satis repository.
|
||||
* Once release testing is completed and the release is ready for stabilisation, then these fixes
|
||||
* Once release testing is completed and the release is ready for stabilisation, then these fixes
|
||||
can then be pushed to the upstream module fork, and the release completed as per normal.
|
||||
Make sure to publish any draft security pages at the same time as the release is published (same day).
|
||||
* After the final release has been published, close related GitHub issues
|
||||
in the [security-issues repository](https://github.com/silverstripe-security/security-issues/issues).
|
||||
* Follow the steps for [making a core release](making-a-silverstripe-core-release)
|
||||
|
||||
### After release
|
||||
|
||||
* Publish silverstripe.org security release page
|
||||
* Respond to issue reporter with reference to the release on the same discussion thread (cc security@silverstripe.org)
|
||||
* Move the issue to "Done" in the [project board](https://github.com/silverstripe-security/security-issues/projects/1)
|
||||
|
||||
<div class="warning" markdown="1">
|
||||
Note: It's not considered acceptable to disclose any security vulnerability until a fix exists in
|
||||
a public stable, not an RC or dev-branch. Security warnings that do not require a stable release
|
||||
can be published as soon as a workaround or usable resolution exists.
|
||||
</div>
|
||||
|
||||
### Setting up satis for hosting private security releases
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user