Skip to content

Commit e29539d

Browse files
committed
meta: refine the security vuln posture for experimental flagged features
Currently, any runtime gated experimental feature security vulnerability is considered a "valid" vulnerability, even if the work is still very much work in progress. This adds friction because it ends up requiring that things be compile time gated which makes it more difficult if there is not a corresponding CI job to run tests. This relaxes the policy a bit. For anything that is 1.0 and 1.1, a vuln report is only valid if it directly compromises a stable feature, allows a workaround that compromises a stable feature, etc. An example would be an obvious DOS vector that can be exploited even if the feature is not enabled, for instance. This gives us leeway to reject vuln reports on things that are enabled only by `--experimental-*` runtime flag that are still works in progress. Signed-off-by: James M Snell <jasnell@gmail.com>
1 parent 449b950 commit e29539d

1 file changed

Lines changed: 30 additions & 4 deletions

File tree

SECURITY.md

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -124,19 +124,45 @@ This policy recognizes that experimental platforms may not compile, may not
124124
pass the test suite, and do not have the same level of testing and support
125125
infrastructure as Tier 1 and Tier 2 platforms.
126126

127-
### Experimental features behind compile-time flags and V8 flags
127+
### Experimental features behind compile-time flags, experimental runtime flags, and V8 flags
128128

129129
Node.js includes certain experimental features that are only available when
130-
Node.js is compiled with specific flags. These features are intended for
131-
development, debugging, or testing purposes and are not enabled in official
132-
releases.
130+
Node.js is compiled with specific flags or that are only enabled with experimental
131+
runtime flags. These features are intended for development, debugging, or testing
132+
purposes and are not enabled or supported in official releases.
133133

134134
Node.js may also expose V8 features that are controlled by V8 command-line flags
135135
(e.g., `--js-staging`, `--max_old_space_size`). These flags
136136
enable or modify V8-level JavaScript engine behavior that is not part of the
137137
ECMAScript specification that Node.js implements and is not part of the
138138
Node.js documented API surface.
139139

140+
#### Runtime gated experimental features
141+
142+
Experimental features behind runtime flags can fall into one of three categories:
143+
144+
- 1.0 - Early development. Experimental features at this stage are unfinished
145+
and subject to substantial change.
146+
- 1.1 - Active development. Experimental features at this stage are nearing
147+
minimum viability.
148+
- 1.2 - Release candidate. Experimental features at this stage are hopefully
149+
ready to become stable. No further breaking changes are anticipated but may
150+
still occur in response to user feedback or the features' underlying
151+
specification development. We encourage user testing and feedback so that
152+
we can know that this feature is ready to be marked as stable.
153+
154+
Security vulnerabilities that only affect experimental features in either the
155+
1.0 or 1.1 stages will **not** be accepted as valid security issues unless the
156+
vulnerability can be exploited in a way that impacts the security of a stable
157+
feature. For instance, if the experimental feature exposes a vulnerability in
158+
a stable feature or allows a workaround that can be exploited to compromise a
159+
stable feature, then it may be considered a valid security issue.
160+
161+
Security vulnerabilities that affect experimental features in the 1.2 stage are
162+
acceptable as valid security issues.
163+
164+
#### Compile-time gated experimental features and V8 flags
165+
140166
* Security vulnerabilities that only affect features behind compile-time flags
141167
or V8 flags will **not** be accepted as valid security issues.
142168
* Any issues with these features will be treated as normal bugs.

0 commit comments

Comments
 (0)