GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — src,process: initial permission model implementation by RafaelGSS · Pull Request #44004 · nodejs/node

Conversation

@RafaelGSS

@RafaelGSS RafaelGSS commented Jul 27, 2022 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

Reference issue: nodejs/security-wg#791

The tagged issue contains the initial proposal for this MVP. This Pull Request includes the foundation of the Permission Model.


Constraints

This Permission Model is not bulletproof, which means, there are constraints we agree on before landing this system:

  • It’s not a sandbox, we assume the user trusts in the running code.
  • No break-changes are ideal.
  • It must add a low/no overhead when disabled and low overhead when enabled.

API Design

The Node.js Permission Model is a mechanism to restrict access to specific resources during the program execution. The API exists behind a flag --experimental-permission which when enabled, will restrict access to all available permissions.

Currently, the available permissions are:

  • File System - manageable through --allow-fs-read and --allow-fs-write flags
  • Child Process - manageable through --allow-child-process flag
  • Worker Threads - manageable through --allow-worker flag

Therefore, when starting a Node.js process with --experimental-permission,
the ability to access the filesystem, spawn process and,
create worker_threads will be restricted.

The CLI Arguments

To allow access to the filesystem, use the --allow-fs-read and
--allow-fs-write flags:

The valid arguments for both flags are:

  • * - To allow all operations to given scope (read/write).
  • Paths delimited by comma (,) to manage reading/writing operations.

Example:

  • --allow-fs-read=/tmp/ - It will allow FileSystemRead access to the /tmp/ folder
  • --allow-fs-read=/tmp/,/home/.gitignore - It allows FileSystemRead access to the /tmp/ folder and the /home/.gitignore file — Relative paths are NOT supported.

Due to the PrefixRadixTree (fs_permission) lookup, relative paths are not supported. For this reason, the possiblyTransformPath was needed. I do have plans to create a pretty similar path.resolve on the C++ side so the possiblyTransformPath won't be needed, but I'll do it in a second iteration.

You can also mix both arguments:

  • --allow-fs-write=* --allow-fs-read=/tmp/ - It will allow FileSystemRead access to the /tmp/ folder and allow all the FileSystemWrite operations.
    Note: It accepts wildcard parameters as well. For instance: --allow-fs-write=/home/test* will allow everything that matches the wildcard. e.g: /home/test/file1 / /home/test2

Note: I rather prefer reading those arguments from a file (policy-deny.json), instead passing them in the command line. However, to reduce the PR scope, I've decided to do it in a separate PR.

The API Arguments

A new property permission was added to the process module. The property contains two functions:

  • deny(scope [,parameters])

API Call to deny permissions at runtime. e.g (REMOVED)

process.permission.deny('fs') // deny permissions to ALL fs operations

process.permission.deny('fs.out') // deny permissions to ALL FileSystemWrite operations
process.permission.deny('fs.out', '/home/rafaelgss/protected-folder') // deny FileSystemWrite permissions to the protected-folder
process.permission.deny('fs.in') // deny permissions to ALL FileSystemRead operations
process.permission.deny('fs.in', '/home/rafaelgss/protected-folder') // deny FileSystemRead permissions to the protected-folder
  • has(scope [,parameters])

API Call to check permissions at runtime. e.g:

process.permission.has('fs.out') // true
process.permission.has('fs.out', '/home/rafaelgss/protected-folder') // true

process.permission.deny('fs.out', '/home/rafaelgss/protected-folder')

process.permission.has('fs.out') // true
process.permission.has('fs.out', '/home/rafaelgss/protected-folder') // false

Future implementations

The implementation of the next features like “net” or “env” will be easily possible just by creating a new net_permission.h and implementing the PermissionBase methods.

image

FAQ

The user should be able to grant permissions in runtime?

No. Much like with other well-known and well-used permissions systems, code ought to be able to decide it can drop privileges, but never be able to grant itself any expanded privileges.

Can I deny permissions to just a specific module?

No. The permission system is process-scoped. You can use the [policy](https://nodejs.org/api/policy.html) to restrict module access.

What if I spawn a process, it will inherit the root permissions?

A process that has --experimental-permission will not be able to spawn a child process by default. If the user explicitly allows it to spawn a child process, then it will be the user's responsibility to pass along the correct arguments.

Benchmarks

This feature adds a very low overhead (if any), either enabled or disabled). Please, note I'm measuring only the feature usage without restricted files/resources (a better benchmark suite will be created in subsequent PRs). The principal behavior is that it doesn't add overhead to the main fs usage. For example, using the benchmark/fs/readfile.js

comparisson between main and this PR (permission model disabled)

➜ node-benchmark-compare compare_fs_permission.csv
                                                                      confidence improvement accuracy (*)   (**)  (***)
fs/readfile.js concurrent=1 len=1024 encoding='' duration=5                          -0.58 %       ±0.78% ±1.05% ±1.38%
fs/readfile.js concurrent=1 len=1024 encoding='utf-8' duration=5                     -0.24 %       ±0.44% ±0.58% ±0.76%
fs/readfile.js concurrent=1 len=16777216 encoding='' duration=5                       0.15 %       ±0.96% ±1.28% ±1.67%
fs/readfile.js concurrent=1 len=16777216 encoding='utf-8' duration=5                  0.76 %       ±1.16% ±1.56% ±2.04%
fs/readfile.js concurrent=10 len=1024 encoding='' duration=5                          0.32 %       ±0.39% ±0.52% ±0.68%
fs/readfile.js concurrent=10 len=1024 encoding='utf-8' duration=5              *     -0.73 %       ±0.57% ±0.76% ±0.99%
fs/readfile.js concurrent=10 len=16777216 encoding='' duration=5                     -0.71 %       ±1.54% ±2.06% ±2.69%
fs/readfile.js concurrent=10 len=16777216 encoding='utf-8' duration=5                 0.09 %       ±0.69% ±0.91% ±1.19%

Be aware that when doing many comparisons the risk of a false-positive result increases.
In this case, there are 8 comparisons, you can thus expect the following amount of false-positive results:
  0.40 false positives, when considering a   5% risk acceptance (*, **, ***),
  0.08 false positives, when considering a   1% risk acceptance (**, ***),
  0.01 false positives, when considering a 0.1% risk acceptance (***)

comparisson enabling permission model (this branch)

node on  feat/permission-system [⇕$] took 40.4s
➜ ./node benchmark/fs/readfile.js
fs/readfile.js concurrent=1 len=1024 encoding="" duration=5: 24,192.15827315814
fs/readfile.js concurrent=10 len=1024 encoding="" duration=5: 95,917.90322639987
fs/readfile.js concurrent=1 len=16777216 encoding="" duration=5: 612.9672164291768
fs/readfile.js concurrent=10 len=16777216 encoding="" duration=5: 1,107.9227500862503
fs/readfile.js concurrent=1 len=1024 encoding="utf-8" duration=5: 24,314.915724686496
fs/readfile.js concurrent=10 len=1024 encoding="utf-8" duration=5: 92,569.37571752333
fs/readfile.js concurrent=1 len=16777216 encoding="utf-8" duration=5: 278.3922768971328
fs/readfile.js concurrent=10 len=16777216 encoding="utf-8" duration=5: 338.3870755499357

node on  feat/permission-system [⇕$!] took 40.4s
➜ ./node benchmark/fs/readfile-permission-enabled.js
(node:62815) ExperimentalWarning: Permission is an experimental feature
(Use `node --trace-warnings ...` to show where the warning was created)
^C

node on  feat/permission-system [⇕$!]
➜ ./node --no-warnings benchmark/fs/readfile-permission-enabled.js
fs/readfile-permission-enabled.js concurrent=1 len=1024 encoding="" duration=5: 24,185.367751785307
fs/readfile-permission-enabled.js concurrent=10 len=1024 encoding="" duration=5: 96,253.07607327335
fs/readfile-permission-enabled.js concurrent=1 len=16777216 encoding="" duration=5: 612.8715221066299
fs/readfile-permission-enabled.js concurrent=10 len=16777216 encoding="" duration=5: 1,106.1275272124165
fs/readfile-permission-enabled.js concurrent=1 len=1024 encoding="utf-8" duration=5: 24,375.648655236808
fs/readfile-permission-enabled.js concurrent=10 len=1024 encoding="utf-8" duration=5: 91,882.5214931248
fs/readfile-permission-enabled.js concurrent=1 len=16777216 encoding="utf-8" duration=5: 277.1205079822853
fs/readfile-permission-enabled.js concurrent=10 len=16777216 encoding="utf-8" duration=5: 337.30003270280775

Additional Considerations

  • To make the THROW_IF_INSUFFICIENT_PERMISSIONS work, I had to make req_wrap weak, reverting the behaviour documented in fs: do not throw exception after creating FSReqCallback #35487. I was talking to @addaleax and it shouldn’t break anything. (See: src: make ReqWrap weak #44074)
  • All of this work is being regularly discussed in the Security WG Meeting. Feel free to join if you want to raise questions/ideas.

cc: @nodejs/security-wg

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

BrunoBernardino, simonplend, bricss, micheleriva, rluvaton, matuzalemsteles, abdus, MomenNano, twlite, juliangruber, and 19 more reacted with hooray emoji bricss, micheleriva, rluvaton, abdus, MomenNano, juliangruber, H4ad, ruyadorno, zombieleet, mcollina, and 15 more reacted with heart emoji bricss, micheleriva, naugtur, rluvaton, MomenNano, outranker, marco-ippolito, ruyadorno, zombieleet, ovflowd, and 6 more reacted with rocket emoji bricss, Barbapapazes, rluvaton, MomenNano, zombieleet, benjamingr, and jurosh reacted with eyes emoji
All reactions
  • 🎉 29 reactions
  • ❤️ 25 reactions
  • 🚀 16 reactions
  • 👀 7 reactions
@nodejs-github-bot

nodejs-github-bot commented Jul 27, 2022

Copy link
Copy Markdown
Collaborator

Review requested:

  • @nodejs/gyp
  • @nodejs/startup
All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@nodejs-github-bot nodejs-github-bot added lib / src Issues and PRs involving general changes in the lib/ or src/ directories. needs-ci PRs that need a full CI run. labels Jul 27, 2022
@RafaelGSS
RafaelGSS force-pushed the feat/permission-system branch from fcf1607 to d7d7854 Compare July 27, 2022 01:22
@RafaelGSS RafaelGSS mentioned this pull request Jul 27, 2022
Permission Model nodejs/security-wg#791
Closed
@mscdex mscdex added the wip Issues and PRs that are still a work in progress. label Jul 27, 2022
@RafaelGSS
RafaelGSS force-pushed the feat/permission-system branch 2 times, most recently from 2978c49 to ca0ebe3 Compare July 27, 2022 01:34
@mcollina

mcollina commented Jul 27, 2022

Copy link
Copy Markdown
Member

Awesome work!

benjamingr reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@mcollina
mcollina marked this pull request as draft July 27, 2022 08:42
@mcollina mcollina added the notable-change PRs with changes that should be highlighted in changelogs. label Jul 27, 2022
@targos

targos commented Jul 27, 2022

Copy link
Copy Markdown
Member

If fs is completely denied, does it block the module loader? For example require('./package.json')

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

addaleax
addaleax reviewed Jul 27, 2022
View reviewed changes
Comment thread src/policy/policy.cc Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/policy/policy.cc Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/policy/policy.cc Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/policy/policy.cc Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/policy/policy.cc Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/policy/policy_deny_fs.cc Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/policy/policy_deny_fs.h Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/policy/policy_deny_fs.h Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/policy/policy_deny_fs.h Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/req_wrap-inl.h Resolved

Uh oh!

There was an error while loading. Please reload this page.

@RafaelGSS

RafaelGSS commented Jul 27, 2022

Copy link
Copy Markdown
Member Author

If fs is completely denied, does it block the module loader? For example require('./package.json')

Yes

rafaelgss@rafaelgss-desktop:~/repos/os/node$ ./node --policy-deny-fs=fs example.js
node:internal/modules/cjs/loader:157
  const result = internalModuleStat(filename);
                 ^

Error: Access to this API has been restricted
    at stat (node:internal/modules/cjs/loader:157:18)
    at Module._findPath (node:internal/modules/cjs/loader:531:16)
    at resolveMainPath (node:internal/modules/run_main:19:25)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:71:24)
    at node:internal/main/run_main_module:17:47 {
  code: 'ERR_ACCESS_DENIED',
  permission: 'FileSystemIn'
}

Node.js v19.0.0-pre
targos, addaleax, ruyadorno, and Qard reacted with thumbs up emoji
All reactions
  • 👍 4 reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@targos

targos commented Jul 27, 2022

Copy link
Copy Markdown
Member

It must be able to restrict access to specific folders and files

Don't we actually want the opposite (in common use cases)?
It seems way more usual to me to need to deny access to most of the file system, with a few exceptions (allow list instead of deny list)

rluvaton, g-plane, metcoder95, and eugene1g reacted with thumbs up emoji mcollina, joyeecheung, fardjad, and hansott reacted with heart emoji
All reactions
  • 👍 4 reactions
  • ❤️ 4 reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@RafaelGSS

RafaelGSS commented Jul 27, 2022

Copy link
Copy Markdown
Member Author

It seems way more usual to me to need to deny access to most of the file system, with a few exceptions (allow list instead of deny list)

The problem is that it would block the Node.js internal functions. Node.js can't bypass those permissions since it runs the same code as the userland. If you deny access to the most of the file system, you would need to grant access to all internally needed FS operations manually.

I've talked to @jasnell and @addaleax previously and I don't think we're able to bypass Node.js needs without the complexity and compromising the security.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@addaleax

addaleax commented Jul 27, 2022

Copy link
Copy Markdown
Member

I don't think we're able to bypass Node.js needs without the complexity and compromising the security.

To be fair, it’s probably quite a bit of work, but that doesn’t mean it isn’t worth doing. (This is something I’d not consider part of the initial implementation here, though.)

mcollina, jasnell, and Qard reacted with heart emoji
All reactions
  • ❤️ 3 reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@tniessen

tniessen commented Jul 27, 2022

Copy link
Copy Markdown
Member

It must be able to restrict access to specific folders and files

How is that going to work? For example, what prevents user code from creating a symlink from /tmp/xyz to $HOME/.ssh/id_rsa and then reading the protected file through said symlink?

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@rluvaton

rluvaton commented Jul 27, 2022

Copy link
Copy Markdown
Member

Maybe we can allow changing the process policy only in the user land code and not in packages

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@GeoffreyBooth

GeoffreyBooth commented Jul 27, 2022

Copy link
Copy Markdown
Member

I assume you know about https://nodejs.org/api/policy.html ? Shouldn’t the configuration for this be part of that?

legendecas reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

jasnell
jasnell reviewed Jul 27, 2022
View reviewed changes
Comment thread doc/api/cli.md Resolved

Uh oh!

There was an error while loading. Please reload this page.

@jasnell

jasnell commented Jul 27, 2022

Copy link
Copy Markdown
Member

Given that @addaleax has already left a ton of comments, I'll wait a bit until those are resolved before going through and reviewing myself. Overall, however, on first read through things are looking pretty solid here. Happy to see this moving forward

RafaelGSS reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@RafaelGSS
RafaelGSS force-pushed the feat/permission-system branch from b5fec69 to c8494fc Compare July 28, 2022 00:51
@RafaelGSS

RafaelGSS commented Jul 28, 2022

Copy link
Copy Markdown
Member Author

How is that going to work? For example, what prevents user code from creating a symlink from /tmp/xyz to $HOME/.ssh/id_rsa and then reading the protected file through said symlink?

As mentioned in the description, this behavior wasn't addressed yet. I suggest discussing it in the next iteration (when all the code-review are fully resolved)

I assume you know about https://nodejs.org/api/policy.html ? Shouldn’t the configuration for this be part of that?

Yes. Honestly, this is quite different from the current policy behavior. We can discuss the nomenclature for sure, however, I suggest having this discussion later in this PR.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@addaleax

addaleax commented Jul 28, 2022

Copy link
Copy Markdown
Member

How is that going to work? For example, what prevents user code from creating a symlink from /tmp/xyz to $HOME/.ssh/id_rsa and then reading the protected file through said symlink?

As mentioned in the description, this behavior wasn't addressed yet. I suggest discussing it in the next iteration (when all the code-review are fully resolved)

I think this is something that needs to be answered before this PR (or any PR with a path-based fs permissions model) can be merged, though.

tniessen reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@RafaelGSS

RafaelGSS commented Jul 28, 2022

Copy link
Copy Markdown
Member Author

I think this is something that needs to be answered before this PR (or any PR with a path-based fs permissions model) can be merged, though.

Sure, I will. What I meant by "next iteration" is the next round of review after addressing the list mentioned in the PR description 😄

addaleax reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@GeoffreyBooth

GeoffreyBooth commented Jul 28, 2022

Copy link
Copy Markdown
Member

I assume you know about nodejs.org/api/policy.html ? Shouldn’t the configuration for this be part of that?

Yes. Honestly, this is quite different from the current policy behavior. We can discuss the nomenclature for sure, however, I suggest having this discussion later in this PR.

I don’t think we can land a PR that adds a --policy-deny-* flag when we already have an existing --experimental-policy flag. Either this PR’s functionality needs to be configured through the policy.json file described in https://nodejs.org/api/policy.html or the existing policies functionality needs to be refactored to be defined via flags like --policy-deny-fs. We shouldn’t have two competing systems for security policies.

legendecas reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@RafaelGSS

RafaelGSS commented Jul 29, 2022 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member Author

I don’t think we can land a PR that adds a --policy-deny-* flag when we already have an existing --experimental-policy flag. Either this PR’s functionality needs to be configured through the policy.json file described in https://nodejs.org/api/policy.html or the existing policies functionality needs to be refactored to be defined via flags like --policy-deny-fs. We shouldn’t have two competing systems for security policies.

That's indeed a good point. I'll mention it in the next Security WG. If you have any nomenclature suggestions, please raise them here 😄

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@GeoffreyBooth

GeoffreyBooth commented Jul 29, 2022

Copy link
Copy Markdown
Member

That’s indeed a good point. I’ll mention it in the next Security WG. If you any nomenclature suggestion, please raise them here 😄

Looking in https://nodejs.org/api/policy.html, that feature is file/specifier specific, like “disable access to child_process“ or “ensure that app.js has this hash.” That’s too much data to try to convey via CLI flags, so I think we need to keep the separate file for defining all of that.

So I think maybe you could add a top-level section to that policy.json file for what you’re using flags for? Something like "permissions": { "deny": ["fs"] } or whatever you think is appropriate. And if what’s already in policies.json needs to move down a level under some new top-level field, that could happen too.

I agree there’s value in being able to define broad-brush permissions via a flag without needing a config file all the time (like if all the user wants to do is disable FS access or child processes or whatever, without getting into per-specifier definitions), so it’s probably worthwhile to keep the flag that this PR adds in addition to supporting the same via policies.json. We should probably come up with naming that makes sense when both exist, like --policy-file and --policy-permissions or something. I’ll leave the specifics to you and the Security WG; I just ask that you design the UX for this such that it makes sense alongside the policies feature that we already have. We should also probably create new flags as experimental at first, like --experimental-policy.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@RafaelGSS
RafaelGSS force-pushed the feat/permission-system branch from c8494fc to 4dbc8ac Compare July 31, 2022 23:18
@RafaelGSS

RafaelGSS commented Feb 23, 2023

Copy link
Copy Markdown
Member Author

So, all the errors are gone.

FWIW The CI was failing for two reasons:

  • On node-test-commit-arm-debug: because args.As<Array> behave slightly differently on ARM64 using Debug mode.
  • On node-test-commit-custom-freestyle: because it uses the tools/test.py --worker mode, which runs parallel tests inside a worker context, and when permission is enabled, workers aren't allowed unless --allow-worker is passed. To fix it, I had to skip the tests whenever permission is enabled and workers aren't allowed (See: tools/run-worker.js).

I'm planning to merge it soon (once test-asan finishes).

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

mcollina
mcollina approved these changes Feb 23, 2023
View reviewed changes

@mcollina mcollina left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@RafaelGSS

RafaelGSS commented Feb 23, 2023

Copy link
Copy Markdown
Member Author

The CI is already green. I've pushed a performance improvement, once it's gets green again, I'll merge it

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@nodejs-github-bot

nodejs-github-bot commented Feb 23, 2023

Copy link
Copy Markdown
Collaborator

CI: https://ci.nodejs.org/job/node-test-pull-request/49924/

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@RafaelGSS
src,process: add permission model
8dc6400
Signed-off-by: RafaelGSS <[email protected]>
@nodejs-github-bot

nodejs-github-bot commented Feb 23, 2023

Copy link
Copy Markdown
Collaborator

CI: https://ci.nodejs.org/job/node-test-pull-request/49925/

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@nodejs-github-bot

nodejs-github-bot commented Feb 23, 2023

Copy link
Copy Markdown
Collaborator

CI: https://ci.nodejs.org/job/node-test-pull-request/49930/

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@nodejs-github-bot

nodejs-github-bot commented Feb 23, 2023

Copy link
Copy Markdown
Collaborator

CI: https://ci.nodejs.org/job/node-test-pull-request/49932/

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

cjihrig
cjihrig approved these changes Feb 23, 2023
View reviewed changes
@nodejs-github-bot

nodejs-github-bot commented Feb 23, 2023

Copy link
Copy Markdown
Collaborator

Landed in 00c2225

debadree25, RomainLanz, BrunoBernardino, RafaelGSS, and RaisinTen reacted with rocket emoji
All reactions
  • 🚀 5 reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@BrunoBernardino

BrunoBernardino commented Feb 23, 2023 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown

Big time lurker on this PR, now that it will no longer be noisy, I want to share that I'm so excited about this!! This is the thing that excites me the most about Deno vs Node.js, so I'm very thrilled to see it being worked on for Node.js directly. Thank you for the amazing work!

RafaelGSS reacted with heart emoji
All reactions
  • ❤️ 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

This was referenced Feb 24, 2023
CI Reliability 2023-02-24 nodejs/reliability#505
Open
CI Reliability 2023-02-25 nodejs/reliability#506
Open
CI Reliability 2023-02-26 nodejs/reliability#507
Open
@juanarbol

juanarbol commented Mar 1, 2023

Copy link
Copy Markdown
Member

Would you mind rebasing against v18.x?

RafaelGSS reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

This was referenced Mar 2, 2023
Permission Model - Roadmap nodejs/security-wg#898
Closed
permission: fix spawnSync permission check #46975
Closed
@RafaelGSS

RafaelGSS commented Mar 7, 2023 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member Author

Given the following PRs/issues

  • permission: fix spawnSync permission check #46975
  • permission: fix some vulnerabilities in fs #47091
  • Permission model restrictions imposed through process.permission.deny can be bypassed through case-insensitive paths #47105

we're going to have a baking-time of 1 release for this feature (after landing all the patches).

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@targos

targos commented Mar 14, 2023

Copy link
Copy Markdown
Member

@RafaelGSS The blocked label isn't used by releasers to filter commits. I replaced it with backport-blocked

tniessen reacted with thumbs up emoji RafaelGSS reacted with heart emoji
All reactions
  • 👍 1 reaction
  • ❤️ 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@tniessen tniessen mentioned this pull request Mar 15, 2023
Permission model restrictions imposed through process.permission.deny can be bypassed through case-insensitive paths #47105
Closed
@targos targos mentioned this pull request Mar 18, 2023
gyp: put filenames in variables #46965
Closed
@RafaelGSS RafaelGSS mentioned this pull request Apr 3, 2023
2023-04-18, Version 20.0.0 (Current) #47381
Merged
@RafaelGSS

RafaelGSS commented Apr 3, 2023 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member Author

Adding dont-land-on-v19.x. After discussing it with TSC we've agreed to release it straight in Node.js v20.

Note to Node.js users: we've decided to drop the process.permission.deny for now. See: #47335

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@tniessen tniessen mentioned this pull request Apr 13, 2023
permission: fix chmod,chown,link, and lutimes #47529
Merged
@tniessen tniessen mentioned this pull request Apr 29, 2023
doc: clarify fs permissions only affect fs module #47782
Merged
@RafaelGSS RafaelGSS mentioned this pull request May 5, 2023
doc: add stability experimental to pm #47890
Merged
@codebytere codebytere mentioned this pull request Dec 11, 2023
src: avoid shadowed string in fs_permission #51123
Merged
@avivkeller avivkeller mentioned this pull request Mar 5, 2024
Remove Redundant Path Resolution in Internal File System Utilities #51964
Closed
@github-actions github-actions Bot mentioned this pull request Apr 24, 2024
Adding VersionStream for nodejs-22 wolfi-dev/os#17646
Merged
@theanarkh theanarkh mentioned this pull request Jun 9, 2024
permission: add permission for udp #53398
Closed
4 tasks done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@ljharb ljharb ljharb left review comments
@Trott Trott Trott left review comments
@tniessen tniessen tniessen left review comments
@joyeecheung joyeecheung joyeecheung left review comments
@ovflowd ovflowd ovflowd left review comments
@RaisinTen RaisinTen RaisinTen left review comments
@mcollina mcollina mcollina approved these changes
@ShogunPanda ShogunPanda ShogunPanda approved these changes
@jasnell jasnell jasnell approved these changes
@cjihrig cjihrig cjihrig approved these changes
@gireeshpunathil gireeshpunathil gireeshpunathil approved these changes
@Qard Qard Awaiting requested review from Qard
@addaleax addaleax Awaiting requested review from addaleax
@aduh95 aduh95 Awaiting requested review from aduh95
+1 more reviewer
@targos targos targos approved these changes
Reviewers whose approvals may not affect merge requirements

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

experimental Issues and PRs related to experimental features. lib / src Issues and PRs involving general changes in the lib/ or src/ directories. needs-ci PRs that need a full CI run. notable-change PRs with changes that should be highlighted in changelogs. permission Issues and PRs related to the Permission Model. security Issues and PRs related to security. semver-minor PRs that contain new features and should be released in the next minor version.

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

20 participants

@RafaelGSS @nodejs-github-bot @mcollina @targos @addaleax @tniessen @rluvaton @GeoffreyBooth @jasnell @Qard @ovflowd @joyeecheung @richardlau @BrunoBernardino @juanarbol @ljharb @ShogunPanda @Trott @cjihrig @gireeshpunathil
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.