Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

security: narrow macOS sandbox file access and isolate command temp directories

Abierto
#96 1 comentario 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
30/100
Tipo de issue
Nueva funcionalidad
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
macos, typescript
Área
desktop, security

Línea de trabajo

Start with src/main/tools/sandbox.ts and the existing real Seatbelt tests and macOS CI leg; first trace how seatbeltProfile grants filesystem access and how command temp directories are configured. Run the native macOS tests and extend them to cover the listed access, alias, network, descendant, and cleanup cases. Done means the acceptance checks pass on a real Mac, with missing or broken Seatbelt execution treated as failure.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

enhancement platform: macos priority: medium security severity: medium

Observed policy

seatbeltProfile in src/main/tools/sandbox.ts starts with (deny default) but then grants (allow file-read*), denies reads beneath the current user's home, and reopens the project and selected toolchain directories.

Its writable set includes env.cwd, env.tmp, /tmp, /private/tmp, and all of /private/var/folders. Consequently, the filesystem policy is broader than a project plus a private command-temp directory:

  • OS-readable files outside the current user's home are generally readable, including other project/data locations.
  • Existing OS-writable files in shared temp trees are within the sandbox's permitted write scope, not just files created for this command.

These are findings from policy inspection, not a demonstrated macOS exploit. Ordinary filesystem permissions still apply. Do not describe this as a confirmed sandbox escape.

Proposed outcome

  • Replace blanket filesystem reads with explicit system/runtime/toolchain read grants, plus the project and that command's temporary directory.
  • Give each command a private temporary directory and point its temp environment variables there; do not grant entire shared temp trees merely to support temporary files.
  • Keep required special-device and runtime exceptions narrow and documented.
  • Resolve path aliases/symlinks consistently, including /var versus /private/var and /tmp versus /private/tmp.
  • Preserve no-network defaults, foreground/background behavior and fail-closed startup. Additional access should require explicit approval rather than silent widening.

Acceptance checks on a real Mac

  • Successfully launch a probe and demonstrate project/private-temp writes and required toolchain reads.
  • Deny reading a disposable OS-readable fixture outside the project/home grants and modifying a sibling fixture in shared temp storage; retain an unsandboxed control proving the host can perform those operations.
  • Cover symlink/path aliases, credential locations, network denial and background descendants.
  • Exercise representative build tools and private-temp cleanup on success, timeout and cancellation.
  • Keep native-backend CI requirements; missing or broken Seatbelt execution must not count as a passed isolation test.

Follow-up to #76. Existing real Seatbelt tests and the macOS CI leg should be extended, not replaced by another nominal coverage-only suite. Packaged-app signing/manual launch work remains separate (#22, #71).

Lenguaje dominante
TypeScript
Estrellas
2
Forks
2
Merge medio
6 h 27 min
PR fusionados (30 d)
37

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de PierrunoYT/patch

Todos los issues de PierrunoYT/patch

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.