GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GeezerVison is showing devguide.python.org — Python Security Response Team (PSRT) Python Security Response Team (PSRT)¶The Python Security Response Team (PSRT) is responsible for handling vulnerability reports for CPython and pip. To report security issues: https://www.python.org/dev/security/ Members¶The PSRT publishes a full list of members and admins, included in the table below:
See also the members emeritus list. How can I join the PSRT?¶Anyone can join the PSRT following a nomination process similar to core team nominations. Nomination for a new member is brought to the PSRT by an existing PSRT member and then this nomination is voted on by existing PSRT members. The nomination succeeds if the nomination receives at least two-thirds positive votes from a vote of existing PSRT members that is open for one week and not vetoed by the Steering Council. Every six months the Steering Council will receive a report of inactive PSRT members with the recommendation to remove the inactive users from the PSRT. “Inactive” is defined as a member who hasn’t coordinated or commented on a vulnerability report in the past six months since the last report was generated. The Steering Council may remove members of the PSRT with a simple vote. Release Managers must be members of the PSRT for the duration of their term. Steering Council members and the release team experts may join the PSRT if they wish. All of these members may remain in the PSRT regardless of inactivity in vulnerability reports. When a member leaves these roles, their PSRT membership becomes a regular membership subject to the inactivity policy above. PSRT admins are not exempt from the inactivity policy and are included in the report of inactive members. Responsibilities of PSRT members¶Below are the responsibilities of PSRT members:
Responsibilities of PSRT admins¶PSRT members who are designated as admins by the Steering Council have the following additional responsibilities:
Triaging a vulnerability report¶PSRT members coordinate reports from when they are first submitted
to a “finished” state. Finished states include
marking a report as a “non-issue”, opening a public issue on GitHub,
or a merged patch with an accompanying CVE and advisory to
Reports enter the system through
New report in GitHub Security Advisories (GHSA)¶Once a report is in GHSA, a “Coordinator” must be assigned to be responsible for moving the report through the process. The “Coordinator” role is assigned using a “Credit” in a GHSA ticket (Select Edit > Credit > Add a GitHub username and the ‘Coordinator’ role). Important Assigning the “Coordinator” role to each GHSA ticket is important, as this metadata records whether a PSRT member is “active” according to PEP 811 to avoid being removed due to inactivity. If a GHSA ticket is idle for three days without a coordinator assigned, a PSRT member who is not a Release Manager or Steering Council member will be automatically assigned as coordinator by the PSRT bot. If a coordinator can’t complete the process they must find a replacement coordinator in the PSRT and re-assign the GHSA ticket.
Determining whether a report is a vulnerability¶The coordinator will make a determination about a report, either marking the ticket as a non-issue, as an issue that isn’t a security vulnerability, or as a security vulnerability. If the Coordinator needs help from core team experts in making the determination, the experts may be added as ‘Collaborators’ to the GHSA ticket. Accepted security vulnerabilities will be moved to the ‘Draft’ state in GHSA. If the report isn’t a vulnerability, coordinators close the GHSA ticket after optionally opening a public GitHub issue. Note that reporters often will not open a GitHub issue on their own, as there is no longer an incentive for them to do so without a CVE being assigned. Remediating a vulnerability report¶Once a report has been accepted as a vulnerability, the remediation development process begins. Coordinators move the GHSA ticket to a ‘Draft’ state using the green Accept as Draft button. Once in this state, the PSRT bot will automatically assign a CVE ID from the Python Software Foundation CVE Numbering Authority and create a temporary private fork. Once a vulnerability has been accepted there are three things the Coordinator must prepare before sending an advisory and closing the GHSA ticket:
Severity scoring¶Severity of a vulnerability can be difficult to assess objectively due to not knowing how software is used in all situations. Severity is calculated from expected or known use, not from worst-case hypothetical scenarios. The PSRT and PSF CNA use CVSSv4 for calculating the severity of a vulnerability. GHSA tickets provide a CVSSv4 calculator within the ticket UI. Note that GitHub defaults to CVSSv3, change the scoring algorithm to CVSSv4 before scoring in the ticket UI. As with all aspects of PSRT operations, coordinators are encouraged to ask for help in calculating a severity from other PSRT members. Developing a patch privately¶Patch development can begin once a report has been accepted, as the PSRT bot will automatically create a temporary private fork for the advisory. The fork can also be created earlier by repository admins or reporters by selecting the Start a temporary private fork button within the GHSA ticket. Note that due to the size of Git repositories, this fork repository may take several minutes to create. Once the fork has been created any PSRT member or GHSA collaborator can clone the fork and develop a fix and push a branch: git clone https://github.com/python/cpython-ghsa-abcd-efgh-ijkl.git cd cpython-ghsa-abcd-efgh-ijkl git checkout -b advisory-fix-1 # (develop a fix) git add ... git commit -m "Fix" git push origin advisory-fix-1 From here a pull request can be opened within the GHSA ticket to be reviewed privately. The coordinator can add core team experts as collaborators as necessary to the GHSA to develop the patch and to review the patch if the expertise for patch development or review aren’t available within PSRT. Coordinators are not necessarily responsible for developing patches themselves: only with seeing that a patch is developed in a timely fashion by involving experts as necessary. Once the patch has been approved
a public GitHub issue and pull request can be opened.
Generate a blurb in the category To quickly pull a patch file from a GHSA pull request, you
can append curl https://github.com/python/cpython-ghsa-abcd-efgh-ijkl/pull/1.patch \ --output ghsa-abcd-efgh-ijkl.patch This patch can then be applied and pushed to the public GitHub repository: git remote -v origin ssh://[email protected]/.../cpython (fetch) origin ssh://[email protected]/.../cpython (fetch) git checkout -b branch-name git apply ./ghsa-abcd-efgh-ijkl.patch git push origin branch-name Important CPython’s backport infrastructure is used for tracking backported patches. Use one GitHub issue per CVE to accurately track backports of vulnerability fixes. For new CVEs, even when related to a previous issue, open a new GitHub issue to accurately track fixed versions. Important Repository admins should not select the green Publish advisory or Merge pull request buttons within GHSA. Advisories are published to the mailing list, and the Merge pull request button within GHSA bypasses all continuous integration and branch protection steps. Use a public pull request instead. Publishing an advisory¶Once the vulnerability fix has been merged into the main branch via a public GitHub pull request, an advisory must be published. The advisory requires the severity, a title, and a short description of the vulnerable module, functions, behavior and fix. This short description can optionally include mitigation steps if applying the patch isn’t the only way to mitigate the vulnerability.
After an advisory email is sent, the GHSA ticket can be closed. The PSRT bot¶The PSRT bot is a GitHub App that automates parts of the GHSA workflow described above. The bot runs hourly (or by manual dispatch) and for each open GHSA ticket:
Handling code signing certificate reports¶Python signs binaries using Azure Trusted Signing and Apple Developer ID certificates. If a code signing certificate is reported as “compromised” or “malware signed with certificate”, the Python Security Response Team must request the following information from the reporter:
To avoid unnecessary user confusion and churn around revoking code signing certificates, any reports must be verifiable independently by the PSRT before taking destructive actions, such as revoking certificates. With this information the PSRT can take investigative steps to verify the report, such as:
If any signs of compromise or incorrectly signed binaries are discovered by the PSRT, only then will certificates be revoked and an advisory published. If compromise is reported, the following non-destructive actions can be taken by the PSRT without verifying the reported information as a precaution, if relevant:
Template responses¶These template responses should be used as guidance for messaging in various points in the process above. They are not required to be sent as-is, please feel free to adapt them as needed for the current context. Submit using GitHub Security Advisories¶Thanks for submitting this report. We use GitHub Security Advisories for triaging vulnerability reports, please review our security policy before submitting: https://devguide.python.org/security/policy/ Then submit your report here: https://github.com/python/cpython/security/advisories/new Rejecting a vulnerability report¶Thanks for your report. We've determined that the report doesn't constitute a vulnerability. Let us know if you disagree with this determination. If you are interested in working on this further, you can optionally open a public issue on GitHub. Rejecting a duplicate report¶Thanks for your report. We've determined that this submission is a duplicate of an issue that is already being tracked internally. Please refrain from public disclosure until the issue has been resolved. Advisory email¶Title: [{CVE-YYYY-XXXX}] {title}
There is a {LOW, MEDIUM, HIGH, CRITICAL} severity vulnerability affecting {project}.
{description}
Please see the linked CVE ID for the latest information on affected versions:
* https://www.cve.org/CVERecord?id={CVE-YYYY-XXXX}
* {pull request URL}
Members emeritus¶Members who have previously served on the PSRT.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |