| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 241ece0 commit 004238d
3 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -221,6 +221,16 @@ then untrusted input must not lead to arbitrary JavaScript code execution. | |||
| 221 | 221 | * The developers and infrastructure that run it. | |
| 222 | 222 | * The operating system that Node.js is running under and its configuration, | |
| 223 | 223 | along with anything under the control of the operating system. | |
| 224 | + * The deployment network environment for the privacy of traffic and routing | ||
| 225 | + decisions, including internal networks through which Node.js traffic passes | ||
| 226 | + and configured HTTP(S) proxy servers. Built-in proxy support is intended to | ||
| 227 | + route traffic through proxies authorized for the deployment, often because a | ||
| 228 | + firewall requires one to access external networks. It is not intended to hide | ||
| 229 | + traffic from network operators or authorities governing the deployment. | ||
| 230 | + Untrusted or unauthorized proxies, as well as deployment policy or legal | ||
| 231 | + compliance controls around proxy use, are the responsibility of the deployment | ||
| 232 | + operator and are outside this threat model. This does not change that data | ||
| 233 | + parsed from network protocol peers is untrusted as described above. | ||
| 224 | 234 | * The code it is asked to run, including JavaScript, WASM and native code, even | |
| 225 | 235 | if said code is dynamically loaded, e.g., all dependencies installed from the | |
| 226 | 236 | npm registry. | |
@@ -301,6 +311,19 @@ the community they pose. | |||
| 301 | 311 | client consuming unsolicited or misordered responses within the same HTTP/1.1 connection | |
| 302 | 312 | reuse lifecycle are generally not considered Node.js vulnerabilities. | |
| 303 | 313 | ||
| 314 | + #### Unauthorized or untrusted HTTP proxy deployments | ||
| 315 | + | ||
| 316 | + * Built-in HTTP proxy support is intended for routing outbound requests through | ||
| 317 | + a proxy authorized by the deployment, for example because a firewall requires | ||
| 318 | + one to reach external networks. It is not an anonymity, traffic-hiding, or | ||
| 319 | + policy-evasion feature. | ||
| 320 | + * Reports that depend on using an unauthorized proxy, expecting Node.js to | ||
| 321 | + provide privacy from a configured proxy or internal network, or expecting | ||
| 322 | + Node.js to enforce deployment-specific network policy or legal requirements | ||
| 323 | + are not considered Node.js vulnerabilities. Deployment operators are | ||
| 324 | + responsible for hardening such environments and controlling which proxy | ||
| 325 | + settings are allowed. | ||
| 326 | + | ||
| 304 | 327 | #### Malicious Third-Party Modules (CWE-1357) | |
| 305 | 328 | ||
| 306 | 329 | * Code is trusted by Node.js. Therefore any scenario that requires a malicious | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -3188,9 +3188,14 @@ added: v24.5.0 | |||
| 3188 | 3188 | > Stability: 1.1 - Active Development | |
| 3189 | 3189 | ||
| 3190 | 3190 | When enabled, Node.js parses the `HTTP_PROXY`, `HTTPS_PROXY` and `NO_PROXY` | |
| 3191 | - environment variables during startup, and tunnels requests over the | ||
| 3191 | + environment variables during startup, and routes requests through the | ||
| 3192 | 3192 | specified proxy. | |
| 3193 | 3193 | ||
| 3194 | + Use this only with proxies that are trusted and authorized for the deployment. | ||
| 3195 | + Proxy support is intended for reaching external networks through authorized | ||
| 3196 | + proxy servers, for example when a firewall requires one. It is not for hiding | ||
| 3197 | + traffic or evading network policy. See [Built-in Proxy Support][]. | ||
| 3198 | + | ||
| 3194 | 3199 | This is equivalent to setting the [`NODE_USE_ENV_PROXY=1`][] environment variable. | |
| 3195 | 3200 | When both are set, `--use-env-proxy` takes precedence. | |
| 3196 | 3201 | ||
@@ -3864,9 +3869,14 @@ added: v24.0.0 | |||
| 3864 | 3869 | > Stability: 1.1 - Active Development | |
| 3865 | 3870 | ||
| 3866 | 3871 | When enabled, Node.js parses the `HTTP_PROXY`, `HTTPS_PROXY` and `NO_PROXY` | |
| 3867 | - environment variables during startup, and tunnels requests over the | ||
| 3872 | + environment variables during startup, and routes requests through the | ||
| 3868 | 3873 | specified proxy. | |
| 3869 | 3874 | ||
| 3875 | + Use this only with proxies that are trusted and authorized for the deployment. | ||
| 3876 | + Proxy support is intended for reaching external networks through authorized | ||
| 3877 | + proxy servers, for example when a firewall requires one. It is not for hiding | ||
| 3878 | + traffic or evading network policy. See [Built-in Proxy Support][]. | ||
| 3879 | + | ||
| 3870 | 3880 | This can also be enabled using the [`--use-env-proxy`][] command-line flag. | |
| 3871 | 3881 | When both are set, `--use-env-proxy` takes precedence. | |
| 3872 | 3882 | ||
@@ -4170,6 +4180,7 @@ node --stack-trace-limit=12 -p -e "Error.stackTraceLimit" # prints 12 | |||
| 4170 | 4180 | <!-- v8-options end --> | |
| 4171 | 4181 | ||
| 4172 | 4182 | [#42511]: https://github.com/nodejs/node/issues/42511 | |
| 4183 | + [Built-in Proxy Support]: http.md#built-in-proxy-support | ||
| 4173 | 4184 | [Chrome DevTools Protocol]: https://chromedevtools.github.io/devtools-protocol/ | |
| 4174 | 4185 | [Chromium's policy for locally trusted certificates]: https://chromium.googlesource.com/chromium/src/+/main/net/data/ssl/chrome_root_store/faq.md#does-the-chrome-certificate-verifier-consider-local-trust-decisions | |
| 4175 | 4186 | [CommonJS module]: modules.md | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -4525,6 +4525,22 @@ support. | |||
| 4525 | 4525 | ||
| 4526 | 4526 | If the request is made to a Unix domain socket, the proxy settings will be ignored. | |
| 4527 | 4527 | ||
| 4528 | + ### Proxy security considerations | ||
| 4529 | + | ||
| 4530 | + Built-in proxy support routes outbound requests through an HTTP(S) proxy, often | ||
| 4531 | + because a firewall requires one to access external networks. It is not an | ||
| 4532 | + anonymity or traffic-hiding feature and does not attempt to hide traffic from | ||
| 4533 | + the proxy, the local network, network operators, or authorities that govern the | ||
| 4534 | + deployment. | ||
| 4535 | + | ||
| 4536 | + Configure only proxies that are trusted and authorized for the deployment. A | ||
| 4537 | + proxy can observe connection metadata; for plain HTTP requests, or when TLS is | ||
| 4538 | + terminated or intercepted by the proxy, it can also observe request and response | ||
| 4539 | + contents. Node.js does not support treating an untrusted proxy as a privacy | ||
| 4540 | + boundary. Deployment operators are responsible for controlling proxy | ||
| 4541 | + configuration and for meeting deployment-specific network policy and legal | ||
| 4542 | + requirements. | ||
| 4543 | + | ||
| 4528 | 4544 | ### Proxy URL Format | |
| 4529 | 4545 | ||
| 4530 | 4546 | Proxy URLs can use either HTTP or HTTPS protocols: | |
| Back | FazBrowse Home | New Git URL |
0 commit comments