Agent: Windows process containment and environment allowlist (follow-up to #320)

Aperta
#346 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
12/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
docker, electron, nodejs, powershell, typescript

Direzione di ricerca

The work spans runtime/process-tree.ts (killTreeAndEscapees), runtime/command-environment.ts (the win32 denylist to replace with an allowlist) and a Job Object wrapper that needs a native addon or ffi. Start by reading how killTreeAndEscapees and the environment filter are wired, then decide the native-addon approach with maintainers. Done means a grandchild reparented outside the tree is killed on Stop in Windows CI, and git, node, npm and python still run under the allowlist.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Not finishable safely without Windows hardware or a native addon, so split out from the 0.3.7 follow-ups.

  1. Job Object (H2, Windows). Node cannot create a Job Object with KILL_ON_JOB_CLOSE without a native addon (e.g. a small N-API module or ffi). 0.3.7 ships a PowerShell ParentProcessId sweep plus taskkill /T /F (runtime/process-tree.ts, killTreeAndEscapees), which cannot reach processes started through WMI/schtasks or whose parent already exited. Spawn the shell inside a Job Object and close the handle on Stop/timeout. Test on Windows CI with a grandchild that is reparented.
  2. Windows environment allowlist (H3 / N7). runtime/command-environment.ts still passes the whole environment minus a denylist on win32. Kept today: STRIPE_SECRET_KEY, DJANGO_SECRET_KEY, LITELLM_MASTER_KEY, _KEY, GITHUB_PAT, PGPASSWORD, MYSQL_PWD, DATABASE_URL, REDIS_URL, SENTRY_DSN, SLACK_WEBHOOK_URL, DOCKER_AUTH_CONFIG, NODE_OPTIONS, ELECTRON_RUN_AS_NODE. Use an allowlist: SystemRoot, windir, ComSpec, PATHEXT, PATH, TEMP, TMP, USERPROFILE, APPDATA, LOCALAPPDATA, ProgramData, ProgramFiles, SystemDrive, HOMEDRIVE, HOMEPATH, USERNAME, USERDOMAIN, COMPUTERNAME, OS, PROCESSOR_*, NUMBER_OF_PROCESSORS, PSModulePath. Check that git, node, npm, python still run on windows-latest CI.
  3. Already-daemonised processes (POSIX). The ppid walk cannot find a process that was reparented to init before Stop (double fork that outlived its parent). Options: tag the run's environment with a unique MUSTER_RUN_ID and sweep ps eww for it on Stop (Linux: /proc/*/environ), or a cgroup/subreaper where available.
  4. A background job that outlives a successful command is never cleaned up (matches the Codex route); decide whether to sweep after each command.

Source: scratchpad/sec320-REVERIFY.md (H2, H3, N2, N7).

Lingua principale
TypeScript
Stelle
3
Fork
0
Merge medio
17h 33m
PR unite (30g)
163

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di musterhq/muster-code

Tutte le issue di musterhq/muster-code

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.