From da2684788b7fdc35533c24e5b813440322581cd8 Mon Sep 17 00:00:00 2001 From: RafaelGSS Date: Fri, 16 May 2025 15:17:53 -0300 Subject: [PATCH 1/2] src,permission: add --allow-net permission Signed-off-by: RafaelGSS --- doc/api/cli.md | 35 +++++++ doc/api/permissions.md | 11 ++- doc/node-config-schema.json | 3 + doc/node.1 | 3 + lib/internal/errors.js | 33 +++++-- lib/internal/process/pre_execution.js | 1 + node.gyp | 2 + src/cares_wrap.cc | 30 +++++- src/cares_wrap.h | 28 ++++++ src/env.cc | 4 + src/node_options.cc | 4 + src/node_options.h | 1 + src/permission/net_permission.cc | 23 +++++ src/permission/net_permission.h | 31 ++++++ src/permission/permission.cc | 5 + src/permission/permission.h | 31 ++++++ src/permission/permission_base.h | 5 +- src/tcp_wrap.cc | 10 ++ src/udp_wrap.cc | 21 +++++ test/fixtures/permission/net-fetch.js | 9 ++ test/fixtures/permission/net-http.js | 15 +++ test/fixtures/permission/net-https.js | 19 ++++ test/fixtures/permission/net-tcp.js | 35 +++++++ test/parallel/test-permission-has.js | 11 +++ test/parallel/test-permission-net-allowed.js | 9 ++ test/parallel/test-permission-net-dns.js | 94 +++++++++++++++++++ test/parallel/test-permission-net-fetch.js | 42 +++++++++ test/parallel/test-permission-net-http.js | 41 ++++++++ test/parallel/test-permission-net-https.js | 48 ++++++++++ test/parallel/test-permission-net-tcp.js | 38 ++++++++ test/parallel/test-permission-net-udp.js | 22 +++++ .../parallel/test-permission-net-websocket.js | 14 +++ 32 files changed, 659 insertions(+), 19 deletions(-) create mode 100644 src/permission/net_permission.cc create mode 100644 src/permission/net_permission.h create mode 100644 test/fixtures/permission/net-fetch.js create mode 100644 test/fixtures/permission/net-http.js create mode 100644 test/fixtures/permission/net-https.js create mode 100644 test/fixtures/permission/net-tcp.js create mode 100644 test/parallel/test-permission-net-allowed.js create mode 100644 test/parallel/test-permission-net-dns.js create mode 100644 test/parallel/test-permission-net-fetch.js create mode 100644 test/parallel/test-permission-net-http.js create mode 100644 test/parallel/test-permission-net-https.js create mode 100644 test/parallel/test-permission-net-tcp.js create mode 100644 test/parallel/test-permission-net-udp.js create mode 100644 test/parallel/test-permission-net-websocket.js diff --git a/doc/api/cli.md b/doc/api/cli.md index ee4e9e85254135..b0909c677532d7 100644 --- a/doc/api/cli.md +++ b/doc/api/cli.md @@ -263,6 +263,38 @@ When passing a single flag with a comma a warning will be displayed. Examples can be found in the [File System Permissions][] documentation. +### `--allow-net` + + + +> Stability: 1.1 - Active development + +When using the [Permission Model][], the process will not be able to access +network by default. +Attempts to do so will throw an `ERR_ACCESS_DENIED` unless the +user explicitly passes the `--allow-net` flag when starting Node.js. + +Example: + +```js +const http = require('node:http'); +// Attempt to bypass the permission +const req = http.get('http://example.com', () => {}); + +req.on('error', (err) => { + console.log('err', err); +}); +``` + +```console +$ node --permission index.js +Error: connect ERR_ACCESS_DENIED Access to this API has been restricted. Use --allow-net to manage permissions. + code: 'ERR_ACCESS_DENIED', +} +``` + ### `--allow-wasi`