Skip to content

Commit 918f906

Browse files
committed
provide a first iteration for a rez security policy
Signed-off-by: Stephen Mackenzie <maxnbk@users.noreply.github.com>
1 parent 21a5735 commit 918f906

File tree

1 file changed

+120
-0
lines changed

1 file changed

+120
-0
lines changed

SECURITY.md

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
<!-- SPDX-License-Identifier: Apache-2.0 -->
2+
<!-- Copyright Contributors to the Rez Project -->
3+
4+
# Security Policy
5+
6+
## Reporting a Vulnerability
7+
8+
If you think you've found a potential vulnerability in rez, please
9+
report it by filing a GitHub [security
10+
advisory](https://github.com/AcademySoftwareFoundation/rez/security/advisories/new). Alternatively,
11+
email security@rez-project.io and provide your contact info for further
12+
private/secure discussion. If your email does not receive a prompt
13+
acknowledgement, your address may be blocked.
14+
15+
Our policy is to acknowledge the receipt of vulnerability reports
16+
within 48 hours. Our policy is to address critical security vulnerabilities
17+
rapidly and post patches within 14 days if possible.
18+
19+
## Known Vulnerabilities
20+
21+
There are currently no known reported vulnerabilities.
22+
23+
See the [release notes](CHANGES.md) for more information.
24+
25+
## Supported Versions
26+
27+
In general, the rez project release strategy is purely sequential, and we will drop support for any
28+
major version which is not the current development major version. However, we may at our discretion issue
29+
patches for prior major versions with compelling reasoning. The rez project team takes compatibility very
30+
seriously, deprecations are telegraphed, and forward compatibility is incredibly important, making it
31+
reasonable to expect that users of rez attempt to stay close to the newest version as possible.
32+
33+
## Signed Releases
34+
35+
Signed releases are not yet supported.
36+
37+
We plan to add signed releases soon. The following details are speculative but likely:
38+
39+
Release artifacts are signed via
40+
[sigstore](https://www.sigstore.dev). See
41+
[release-sign.yml](.github/workflows/release-sign.yml) for details.
42+
43+
To verify a downloaded release at a given tag:
44+
45+
% pip install sigstore
46+
% sigstore verify github --cert-identity https://github.com/AcademySoftwareFoundation/rez/.github/workflows/release-sign.yml@refs/tags/<tag> rez-<tag>.tar.gz
47+
48+
## Security Expectations
49+
50+
### Software Features
51+
52+
- The rez project implements a package management solution that is agnostic
53+
to build system, shell, platform, architecture, operating system, or
54+
packaged toolset. rez can be used to package python, javascript, C++, or
55+
even binaries. As long as it is possible to express the way your package
56+
modifies the environment to expose itself to be consumed, rez can package it.
57+
58+
- rez is implemented in python, and consists primarily of simply its own
59+
source, a handful of vendored python packages, and is installed to a system
60+
in the form of a virtualenv-powered executable, tied to a python interpreter.
61+
62+
- rez exposes a robust CLI which can be used to do common operations like build
63+
or release packages, to resolve and drop into a shell for a given environment,
64+
or to freeze context files that can be used to bake and reuse resolves.
65+
66+
- rez exposes an API that can be used, in and out of isolation, to perform many
67+
of the same tasks, as well as more granular operations, so that groups can
68+
also leverage many of the low-level constructs that make the higher-level CLI
69+
usages possible.
70+
71+
- rez reads and writes to/from stdout, as well as to/from json-like rxt files.
72+
rez also writes temporary shell context files like .sh or .bat scripts on a
73+
shell-by-shell basis, as a shell entrypoint into the chosen environment.
74+
75+
- rez exposes a rich plugin system which can be used and configured in order to
76+
augment and expand its use-cases or integrations per the users preferences.
77+
78+
- rez will engage in network calls only if configured to do so. Typically, this
79+
would be the case with the built-in `memcached` functionality, or to publish
80+
`amqp` messages on package release.
81+
82+
- rez does not handle, or expect to handle, any sort of login credentials to any
83+
network, file system, or verson-control system. rez expects that these details
84+
are handled independently and outside of rez.
85+
86+
- rez packages can, by definition and by design, result in the execution of
87+
arbitrary code. It is critical that users of rez maintain their own strict
88+
control over their own package repositories, and not trust arbitrary packages
89+
given to them by unknown sources. rez takes no responsibility for malicious
90+
effects caused by the execution of packages.
91+
92+
### Software Dependencies
93+
94+
rez depends on python and virtualenv, in order to be installed.
95+
96+
At runtime, without any user-provided plugins, rez depends on the following
97+
table of vendored packages, their versions, and details related to any
98+
modifications made:
99+
100+
[Vendored Packages](https://github.com/AcademySoftwareFoundation/rez/blob/main/src/rez/vendor/README.md)
101+
102+
### Potential Vulnerabilities
103+
104+
It is expected that maliciously crafted packages, or rxt files, could cause any
105+
type of issue that would ordinarily be causable as the result of a json file load,
106+
or an arbitrary code execution. Do not use or consume packages or context files
107+
provided from untrusted sources without undue validation, care, or sandboxing.
108+
109+
#### Development Cycle and Distribution
110+
111+
rez is downloadable and buildable as (mostly) python source via the GitHub
112+
releases page. Only members of the project's Technical Steering Committee have
113+
write permissions on the source code repository. All critical software changes
114+
are reviewed by at least one TSC member.
115+
116+
rez is also distributed as a [pypi](https://pypi.org/project/rez/) package,
117+
however this distribution is not yet usable as a so-called "production install",
118+
for which details can be found in the
119+
[docs](https://rez.readthedocs.io/en/stable/installation.html#installation-via-pip).
120+
This may change in the future.

0 commit comments

Comments
 (0)