projectdiscovery / projectdiscovery/gozero

Sandbox does not guarantee isolation for executed code

Open
#42 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
25
Forks
5
PR merge metrics
No merged PRs in 30d

Description

gozero's sandbox package doesn't reliably isolate executed code.

Problems:

  • Not fail-closed: when sandboxing is requested but no backend is available, execution can still run on the host.
  • Source is injected through a shell heredoc, which is a breakout vector.
  • No native Linux/macOS confinement, and the Docker path isn't hardened (network, capabilities, rootfs, resource limits).

We need deny-by-default confinement that fails closed: refuse to run when confinement is requested but unavailable, inject source as bytes instead of a heredoc, and harden the Docker backend alongside native Linux (bubblewrap) and macOS (Seatbelt) backends. This is required to run untrusted code safely, e.g. nuclei's code protocol.

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 in the sandbox package and trace how requested confinement selects a backend and injects source. Review the Docker, native Linux bubblewrap, and macOS Seatbelt paths; done means unavailable confinement fails closed, source is passed as bytes, and each backend applies the requested isolation and hardening.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, go
Domain
operating-systems, security
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.