Skip to content

Commit fa0126d

Browse files
authored
Merge branch 'main' into 2023-07-12-meeting-notes
2 parents e64b1ce + 5cb3c41 commit fa0126d

File tree

7 files changed

+152
-13
lines changed

7 files changed

+152
-13
lines changed

SECURITY.md

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
# conda-forge vulnerability handling process
2+
3+
This document summarizes and proposes guidelines for handling vulnerabilities reported in
4+
conda-forge's infrastructure.
5+
6+
Security issues and vulnerabilities have expectations and processes that are differ from typical
7+
open source practices:
8+
9+
- Private discussions
10+
- Obfuscation
11+
- Short timeline
12+
13+
This makes it quite hard to be able to understand, learn, or know what to expect from a security
14+
point of view. This document will give you a glimpse on what's happening on the inside, and what
15+
timeline to expect when you report a security vulnerability. It will also serve as a guideline and
16+
task list for conda-forge members on how to handle security related issues.
17+
18+
## Scope
19+
20+
This process applies to *all projects* governed by conda-forge. This includes:
21+
22+
- conda-forge feedstock machinery
23+
- conda-forge infrastructure and bots
24+
- conda-forge website and documentation
25+
26+
Conversely, this process does NOT apply to the software packaged by conda-forge itself. Please contact the upstream maintainers directly.
27+
28+
## Reporting Vulnerabilities
29+
30+
If you believe you’ve found a security vulnerability in a conda-forge project, please responsibly report it to [email protected]. conda-forge will try to will respond within 7 days to all new reports.
31+
32+
We are also testing GitHub Private vulnerability reporting, you can try to submit a security advisory on [conda-forge/conda-forge.github.io using this link](https://github.com/conda-forge/conda-forge.github.io/security/advisories/new).
33+
34+
## Coordinated Disclosures
35+
36+
conda-forge follows a [coordinated disclosure][coordinated-disclosure] model where the initial
37+
report and remediation are handled privately, but the completion description is made public once a
38+
patch is available. conda-forge will disclose known vulnerabilities within 90 days by default,
39+
whether a patch is available or not.
40+
41+
## Acknowledgement
42+
43+
conda-forge will work to ensure that security researchers, developers, users, or others who
44+
identify and report vulnerabilities within conda-forge projects receive acknowledgement for their
45+
contribution.
46+
47+
## Vulnerability Triage & Remediation Process
48+
49+
This section describes an example process used by conda-forge to track, remediate, and disclose a
50+
reported vulnerability. This description is both a reference for the conda-forge community and a
51+
guideline for contributors. The actual process may vary depending on the nature of the
52+
vulnerability.
53+
54+
### Roles
55+
56+
This process defines these roles:
57+
- **Reporter** The individual(s) who report the vulnerability
58+
- **Coordinator** A conda-forge core member who facilitates the tracking of the vulnerability
59+
through this process
60+
- **Developer** One or more developers who work on remediating the vulnerability
61+
62+
For the purpose of this document these roles are distinct, in practice, some of these roles may be handled by the same individual. However, the roles should be covered by a minimum of two separate individuals. For example, a Reporter may also fill the Developer role and create the remediation, in this case the Coordinator should be a separate individual.
63+
64+
### Process
65+
66+
The role responsible for each step is noted at the beginning.
67+
68+
- Upon receipt of the initial report:
69+
- **Coordinator**: Respond to the reported and acknowledge receipt of the report in the timeframe
70+
given in the "Reporting Vulnerabilities" section.
71+
- **Coordinator**: Open an issue in the private GitHub repository used for tracking
72+
vulnerabilities across projects
73+
- **Coordinator**: Review the issue for completeness and suitability (triage). If more
74+
information is needed, follow up with the Reporter.
75+
- If the vulnerability is not accepted:
76+
- **Coordinator**: Close the issue
77+
- **Coordinator**: Notify the reporter
78+
- If the vulnerability is accepted, within the relevant repositories:
79+
- **Coordinator**: Open a draft [GitHub Security
80+
Advisory](https://docs.github.com/en/code-security/repository-security-advisories/about-github-security-advisories-for-repositories#about-github-security-advisories)
81+
- Include relevant but sanitized details in the top level comment, which will become public
82+
- Sensitive details and reproductions go in the comments on the draft advisory, which are not
83+
public
84+
- **Coordinator**: Add relevant people to the advisory
85+
- **Developer**: Attempt to replicate the reported vulnerability. Request more information from
86+
the **Reporter** if necessary.
87+
- **Developer**: Work on the [vulnerability fix
88+
PR](https://docs.github.com/en/code-security/repository-security-advisories/collaborating-in-a-temporary-private-fork-to-resolve-a-repository-security-vulnerability#creating-a-temporary-private-fork).
89+
- **Coordinator**/**Developer**: If appliccable, request a
90+
[CVE](https://docs.github.com/en/code-security/repository-security-advisories/about-github-security-advisories-for-repositories#cve-identification-numbers)
91+
from GitHub. The CVE Number will be private until the advisory is published.
92+
- **Developer & Coordinator**: Decide on release and announcement dates and post them the draft
93+
advisory.
94+
- **Coordinator**: Post the release and announcement dates on the conda-forge core chat room and
95+
mailing list.
96+
- **Developer**: Merge the security fix PR
97+
- **Developer**: Release the package and/or deploy the fix as appropriate
98+
- **Developer & Coordinator**: Draft a [blog post](https://github.com/conda-forge/blog) and other
99+
announcement texts. This can be done in parallel with the previous steps, but consider using a
100+
[private advisory](https://github.com/conda-forge/blog/security/advisories) for the text.
101+
- **Coordinator**: Publish the security advisory on the announcement date. If applicable, GitHub
102+
will post the CVE to the MITRE database.
103+
- **Coordinator**: Publish the blog post and other announcements (Element chat room, Twitter,
104+
etc) as necessary.
105+
- **Coordinator**: Notify the **Reporter** of the releases
106+
- **Coordinator**: Close the issue in the tracking repository
107+
108+
> Notes to Developers
109+
>
110+
> - Be aware that GitHub CI workflows won't run on security forks, so reviewers must test manually
111+
> to avoid a broken CI when the patch is merged to the public repo.
112+
> - Also, vulnerabilities may involve multiple private security forks across different GitHub
113+
> organizations.
114+
> - This may require additional manual steps to include those private forks.
115+
116+
[coordinated-disclosure]: https://cheatsheetseries.owasp.org/cheatsheets/Vulnerability_Disclosure_Cheat_Sheet.html#responsible-or-coordinated-disclosure
117+
118+
---
119+
120+
> This document is based on the excellent [write-up](https://github.com/jupyter/security/blob/86ec517/docs/vulnerability-handling.md) used by the Jupyter community, [BSD-3 licensed](https://github.com/jupyter/security/blob/86ec517/LICENSE).
121+
122+
123+

src/conf.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@
118118
r'https://conda-forge.org/status/#armosxaddition$',
119119
r'https://github.com/conda-forge/conda-smithy/blob/main/CHANGELOG.rst#v3130$',
120120
r'https://github.com/.*#L\d+-L\d+$',
121+
r'https://github.com/.*#L\d+$',
121122
r'https://github.com/conda-forge/miniforge/#download$',
122123
r'https://github.com/conda-incubator/grayskull#introduction$',
123124
]

src/core.csv

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ chrisburr,[email protected],Chris Burr
55
cj-wright,[email protected],Christopher J. 'CJ' Wright
66
dopplershift,[email protected],Ryan May
77
ericdill,[email protected],Eric Dill
8+
h-vetinari,[email protected],Axel Obermeier
89
isuruf,[email protected],Isuru Fernando
910
jakirkham,[email protected],John Kirkham
1011
jezdez,[email protected],Jannis Leidel

src/maintainer/knowledge_base.rst

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1132,7 +1132,7 @@ In order to qualify as a noarch python package, all of the following criteria mu
11321132
``dataclasses``.
11331133

11341134
.. hint::
1135-
1135+
11361136
You can build platform-specific ``noarch`` packages to include runtime requirements depending on the target OS.
11371137
See mini-tutorial below.
11381138

@@ -1148,7 +1148,7 @@ It is possible to build ``noarch`` packages with runtime requirements that depen
11481148
(Linux, Windows, MacOS), regardless the architecture (amd64, ARM, PowerPC, etc). This approach
11491149
relies on three concepts:
11501150

1151-
1. `Virtual packages <https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-virtual.html>`__.
1151+
1. `Virtual packages <https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-virtual.html>`__.
11521152
Prefixed with a double underscore, they are used by conda to represent system properties as
11531153
constraints for the solver at install-time. We will use ``__linux``, ``__win`` or ``__osx``,
11541154
which are only present when the running platform is Linux, Windows, or MacOS, respectively.
@@ -1826,7 +1826,7 @@ If you close the PR, it makes the bot think that another PR implementing the mig
18261826
Another reason why it is good to keep the PR open or in draft status is that people might help with it if they want in the future.
18271827
18281828
In some cases a migration PR may not get opened. Please look for
1829-
`the migration on our status page <https://conda-forge.org/status/#current_migrations>`_
1829+
`the migration on our status page <https://conda-forge.org/status/#big_migrations>`_
18301830
to see if there are any issues. This may show there are still dependencies
18311831
needing migration, in which case the best approach is to wait (or if possible
18321832
offer to help migrate those dependencies). If there is a bot error, there will
@@ -1860,6 +1860,9 @@ You are also free to download recipes and rebuild them yourself, if you would li
18601860
3. We have `artifact-validation <https://github.com/conda-forge/artifact-validation>`__ for validating all the conda-forge artifacts uploaded to ``anaconda.org``. This validation scans for various security-related items, such as artifacts that overwrite key pieces of certain packages.
18611861
4. We have a dedicated `Security and Systems Sub-Team <https://conda-forge.org/docs/orga/subteams.html?highlight=security+team#security-and-systems-sub-team>`__ who works hard towards making sure to secure and maintain appropriate access to the credentials and services/systems used by conda-forge.
18621862
1863+
If you have found a security-related issue with conda-forge, please check our `Security Policy <https://github.com/conda-forge/conda-forge.github.io/security/policy>`__
1864+
to learn how to report it responsibly.
1865+
18631866
Significant Changes To Upstream Projects
18641867
========================================
18651868

src/maintainer/updating_pkgs.rst

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ When a new version of a package is released on PyPI/CRAN/.., we have a bot that
6868
The `regro-cf-autotick-bot <https://github.com/regro/autotick-bot>`__ continuously searches on a loop for any PyPI releases, GitHub releases, and any other sources of versions when any updates are released. The source code that gets executed in the loop comes from the `cf-scripts repository <https://github.com/regro/cf-scripts>`__, which contains the code to detect versions and submit PRs. Visit `cf-scripts <https://regro.github.io/cf-scripts/index.html>`__ to read more about it.
6969

7070
The bot creates updates via inspection of the upstream release and will always update the ``source`` section and build version in the `recipe metadata <https://docs.conda.io/projects/conda-build/en/stable/resources/define-metadata.html#>`_.
71-
As an experimental feature, the autotick bot can also be configured to verify or update the recipe's requirements for `Grayskull <https://github.com/conda-incubator/grayskull>`_-compatible recipes.
71+
As an experimental feature, the autotick bot can also be configured to verify or update the recipe's requirements for `Grayskull <https://github.com/conda-incubator/grayskull>`_-compatible recipes.
7272
This may help maintain packages with frequent requirements changes or specific requirements version pins, however this feature is not as extensively verified and proposed updates should be reviewed.
7373
(See the :ref:`bot` section in ``conda-forge.yml``)
7474

@@ -174,7 +174,7 @@ Updating for newly released Python version
174174
==========================================
175175

176176
When a new Python version is released (e.g. ``3.11``), an automatic migration process is triggered that will have ``@regro-cf-autotick-bot`` eventually automatically open pull requests to all feedstocks, updating their CI setup to include the new Python version in the build matrix. After veryfing that the PR build passes, that automatic PR can simply be merged to roll out packages for new Python version.
177-
This process takes time, though, and pull requests will not be opened to all feedstocks at the same time to not overload CI. The current status of the migration can be tracked on the `migration status page <https://conda-forge.org/status/#current_migrations>`_ and there maintainers can verify that their feedstock is listed under the ``AWAITING-PR`` dropdown list.
177+
This process takes time, though, and pull requests will not be opened to all feedstocks at the same time to not overload CI. The current status of the migration can be tracked on the `migration status page <https://conda-forge.org/status/#big_migrations>`_ and there maintainers can verify that their feedstock is listed under the ``AWAITING-PR`` dropdown list.
178178

179179
Testing changes locally
180180
=======================
@@ -247,7 +247,7 @@ the `repo data patches feedstock <https://github.com/conda-forge/conda-forge-rep
247247
If this is the case, the following general guidelines should be followed:
248248
1. Update the feedstocks recipe to ensure future builds do not propagate the issue with a new build number.
249249
2. Please make a PR there to add a patch. The patch should specify as much has possible the versions and times when the packages were generated. It may use the following information
250-
250+
251251
- The current timestamp, you may generate it with ``python -c "import time; print(f'{time.time():.0f}000')"``.
252252
- The problematic version and build numbers of the packages to affect.
253253

@@ -285,7 +285,7 @@ an issue in the feedstock repository with the following title:
285285
``@conda-forge-admin, please add user @username``
286286

287287
where ``username`` is the username of the new maintainer to be added.
288-
A PR will be automatically created and a maintainer or a member of the ``core`` team, in case no maintainer is active anymore, can then merge this PR to add the user.
288+
A PR will be automatically created and a maintainer or a member of the ``core`` team, in case no maintainer is active anymore, can then merge this PR to add the user.
289289
To contact core, ping them by mentioning @conda-forge/core in a comment or, if you haven't heard back in a while or are new to conda-forge, contact them through the community `Element <https://app.element.io/#/room/#conda-forge:matrix.org>`__.
290290

291291
.. note::

src/orga/subteams.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ Members
200200
- Anthony Scopatz <[email protected]>
201201
- Christian Roth <[email protected]>
202202
- Lori A. Burns <[email protected]>
203-
203+
- Jaime Rodríguez-guerra <[email protected]>
204204

205205
Staging Sub-Team
206206
================

src/user/announcements.rst

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,31 @@ Our announcements are published to an RSS feed `here <https://conda-forge.org/do
88
2023
99
----
1010

11+
2023-07-12: End-of-life for CentOS 6
12+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
13+
14+
As you may be aware, we have delayed the deprecation of our CentOS 6 build
15+
system the ``linux64`` platform several times. We have now set a formal deprecation
16+
date to be June 30, 2024. This date matches the
17+
`end of extended life-cycle support <https://endoflife.software/operating-systems/linux/red-hat-enterprise-linux-rhel>`_
18+
from RedHat for RHEL 6. After this date, we build packages against
19+
CentOS 7 by default for ``linux64``.
20+
21+
1122
2023-01-09: conda-forge Google Group is Now Read-only - Move to Discourse
1223
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1324

14-
We have made the conda-forge Google Group read-only. Please use the new
15-
conda-forge `discourse forum <https://conda.discourse.group/c/pkg-building/conda-forge/25>`_,
16-
our `Gitter room <https://gitter.im/conda-forge/conda-forge.github.io>`_, or it's `Matrix/Element
25+
We have made the conda-forge Google Group read-only. Please use the new
26+
conda-forge `discourse forum <https://conda.discourse.group/c/pkg-building/conda-forge/25>`_,
27+
our `Gitter room <https://gitter.im/conda-forge/conda-forge.github.io>`_, or it's `Matrix/Element
1728
counterpart <https://app.element.io/#/room/#conda-forge-space:matrix.org>`_ instead.
1829

1930

2031
2023-01-08: ``conda-forge/staged-recipes`` Feedstock Creation Job Moved
2132
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2233

23-
We have moved the CI job that makes new feedstocks to our
24-
`conda-forge/admin-requests <https://github.com/conda-forge/admin-requests>`_
34+
We have moved the CI job that makes new feedstocks to our
35+
`conda-forge/admin-requests <https://github.com/conda-forge/admin-requests>`_
2536
repo. The new location is reflected in the various links on repos and our status page.
2637

2738
2022

0 commit comments

Comments
 (0)