nodejs / nodejs/security-wg

Script execution control on Linux

Open
#1,388 7 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

never-stale
Dominant language
Go
Stars
548
Forks
133
Avg merge
1d 22h
Merged PRs (30d)
2

Description

This is a recap of yesterday's meeting (see #1382) about script execution control on Linux, and how it compares to #1364 (see https://github.com/nodejs/node/pull/54364). @RafaelGSS, @mhdawson, @rdw-msft, and I were attending.

LWN published an article about this new feature: Restricting execution of scripts — the third approach

I gave a talk last week that explains the goal, the challenges, and the current approach: Closing the script execution control gap

The changes required for Node.js would be:

  • To check all files containing code with execveat(2) + AT_CHECK
  • To restrict according to 2 complementary securebits: SECBIT_EXEC_RESTRICT_FILE and SECBIT_EXEC_DENY_INTERACTIVE

Here is a proof of concept for Python (using the original securebits): https://github.com/zooba/spython/pull/12

Latest kernel patch series: https://lore.kernel.org/all/20240704190137.696169-1-mic@digikod.net/

I'll update this issue with the next patches (which will include an enlighten toy script interpreter).

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the linked 2024-09-26 meeting recap, issue #1382, issue #1364, and pull request #54364, then review the referenced execveat(2), securebits, and kernel patch materials. No implementation files or tests are named; the issue does not define a concrete completion target beyond exploring the proposed Node.js execution-control changes.

Written by the indexing model from the issue text.

Assessment

Tech stack
linux, node.js, python
Domain
operating-systems, security
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.