@sysid/sandbox-runtime-improved 0.0.43-sysid.6 → 0.0.49-sysid.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/README.md +24 -34
  2. package/dist/sandbox/generate-seccomp-filter.d.ts +0 -51
  3. package/dist/sandbox/generate-seccomp-filter.d.ts.map +1 -1
  4. package/dist/sandbox/generate-seccomp-filter.js +0 -106
  5. package/dist/sandbox/generate-seccomp-filter.js.map +1 -1
  6. package/dist/sandbox/linux-sandbox-utils.d.ts +21 -19
  7. package/dist/sandbox/linux-sandbox-utils.d.ts.map +1 -1
  8. package/dist/sandbox/linux-sandbox-utils.js +190 -118
  9. package/dist/sandbox/linux-sandbox-utils.js.map +1 -1
  10. package/dist/sandbox/macos-sandbox-utils.d.ts +1 -1
  11. package/dist/sandbox/macos-sandbox-utils.d.ts.map +1 -1
  12. package/dist/sandbox/macos-sandbox-utils.js +50 -20
  13. package/dist/sandbox/macos-sandbox-utils.js.map +1 -1
  14. package/dist/sandbox/sandbox-config.d.ts +16 -12
  15. package/dist/sandbox/sandbox-config.d.ts.map +1 -1
  16. package/dist/sandbox/sandbox-config.js +17 -10
  17. package/dist/sandbox/sandbox-config.js.map +1 -1
  18. package/dist/sandbox/sandbox-manager.d.ts +1 -1
  19. package/dist/sandbox/sandbox-manager.d.ts.map +1 -1
  20. package/dist/sandbox/sandbox-manager.js +9 -11
  21. package/dist/sandbox/sandbox-manager.js.map +1 -1
  22. package/dist/vendor/seccomp/build.ts +91 -0
  23. package/dist/vendor/seccomp-src/apply-seccomp.c +232 -50
  24. package/dist/vendor/seccomp-src/seccomp-unix-block.c +50 -3
  25. package/package.json +3 -8
  26. package/vendor/seccomp/build.ts +91 -0
  27. package/vendor/seccomp-src/apply-seccomp.c +232 -50
  28. package/vendor/seccomp-src/seccomp-unix-block.c +50 -3
  29. package/dist/vendor/seccomp/arm64/apply-seccomp +0 -0
  30. package/dist/vendor/seccomp/arm64/unix-block.bpf +0 -0
  31. package/dist/vendor/seccomp/x64/apply-seccomp +0 -0
  32. package/dist/vendor/seccomp/x64/unix-block.bpf +0 -0
  33. package/vendor/seccomp/arm64/apply-seccomp +0 -0
  34. package/vendor/seccomp/arm64/unix-block.bpf +0 -0
  35. package/vendor/seccomp/x64/apply-seccomp +0 -0
  36. package/vendor/seccomp/x64/unix-block.bpf +0 -0
@@ -8,7 +8,7 @@ import { tmpdir } from 'node:os';
8
8
  import path, { join } from 'node:path';
9
9
  import { ripGrep } from '../utils/ripgrep.js';
10
10
  import { generateProxyEnvVars, normalizePathForSandbox, normalizeCaseForComparison, isSymlinkOutsideBoundary, DANGEROUS_FILES, getDangerousDirectories, } from './sandbox-utils.js';
11
- import { generateSeccompFilter, cleanupSeccompFilter, getPreGeneratedBpfPath, getApplySeccompBinaryPath, } from './generate-seccomp-filter.js';
11
+ import { getApplySeccompBinaryPath } from './generate-seccomp-filter.js';
12
12
  /** Default max depth for searching dangerous files */
13
13
  const DEFAULT_MANDATORY_DENY_SEARCH_DEPTH = 3;
14
14
  /**
@@ -199,31 +199,27 @@ async function linuxGetMandatoryDenyPaths(ripgrepConfig = { command: 'rg' }, max
199
199
  }
200
200
  return [...new Set(denyPaths)];
201
201
  }
202
- // Track generated seccomp filters for cleanup on process exit
203
- const generatedSeccompFilters = new Set();
204
202
  // Track mount points created by bwrap for non-existent deny paths.
205
203
  // When bwrap does --ro-bind /dev/null /nonexistent/path, it creates an empty
206
204
  // file on the host as a mount point. These persist after bwrap exits and must
207
205
  // be cleaned up explicitly.
208
206
  const bwrapMountPoints = new Set();
207
+ // Number of wrapped commands that have been generated but whose cleanup has
208
+ // not yet run. cleanupBwrapMountPoints() defers file deletion while this is
209
+ // positive, because deleting a mount point file on the host while another
210
+ // bwrap instance is still running detaches that instance's bind mount and
211
+ // the deny rule stops applying inside it.
212
+ let activeSandboxCount = 0;
209
213
  let exitHandlerRegistered = false;
210
214
  /**
211
- * Register cleanup handler for generated seccomp filters and bwrap mount points
215
+ * Register cleanup handler for bwrap mount points
212
216
  */
213
217
  function registerExitCleanupHandler() {
214
218
  if (exitHandlerRegistered) {
215
219
  return;
216
220
  }
217
221
  process.on('exit', () => {
218
- for (const filterPath of generatedSeccompFilters) {
219
- try {
220
- cleanupSeccompFilter(filterPath);
221
- }
222
- catch {
223
- // Ignore cleanup errors during exit
224
- }
225
- }
226
- cleanupBwrapMountPoints();
222
+ cleanupBwrapMountPoints({ force: true });
227
223
  });
228
224
  exitHandlerRegistered = true;
229
225
  }
@@ -238,10 +234,29 @@ function registerExitCleanupHandler() {
238
234
  * ghost dotfiles (e.g. .bashrc, .gitconfig) from appearing in the working
239
235
  * directory. It is also called automatically on process exit as a safety net.
240
236
  *
241
- * Safe to call at any time it only removes files that were tracked during
242
- * generateFilesystemArgs() and skips any that no longer exist.
237
+ * Each call decrements the active-sandbox counter that was incremented by
238
+ * wrapCommandWithSandboxLinux(). File deletion is deferred until the counter
239
+ * reaches zero. Deleting a mount point file on the host while another bwrap
240
+ * instance is still running detaches that instance's bind mount (the dentry
241
+ * is unhashed, so path lookup no longer finds the mount) and the deny rule
242
+ * stops applying inside that sandbox.
243
+ *
244
+ * Pass `{ force: true }` to delete unconditionally — used by the process-exit
245
+ * handler and reset() where deferral is not meaningful.
243
246
  */
244
- export function cleanupBwrapMountPoints() {
247
+ export function cleanupBwrapMountPoints(opts) {
248
+ if (!opts?.force) {
249
+ if (activeSandboxCount > 0) {
250
+ activeSandboxCount--;
251
+ }
252
+ if (activeSandboxCount > 0) {
253
+ logForDebugging(`[Sandbox Linux] Deferring mount point cleanup — ${activeSandboxCount} sandbox(es) still active`);
254
+ return;
255
+ }
256
+ }
257
+ else {
258
+ activeSandboxCount = 0;
259
+ }
245
260
  for (const mountPoint of bwrapMountPoints) {
246
261
  try {
247
262
  // Only remove if it's still the empty file/directory bwrap created.
@@ -271,11 +286,14 @@ export function cleanupBwrapMountPoints() {
271
286
  * Get detailed status of Linux sandbox dependencies
272
287
  */
273
288
  export function getLinuxDependencyStatus(seccompConfig) {
289
+ // argv0 mode: apply-seccomp is compiled into the caller's binary — skip
290
+ // the on-disk lookup and trust that applyPath resolves inside bwrap.
274
291
  return {
275
292
  hasBwrap: whichSync('bwrap') !== null,
276
293
  hasSocat: whichSync('socat') !== null,
277
- hasSeccompBpf: getPreGeneratedBpfPath(seccompConfig?.bpfPath) !== null,
278
- hasSeccompApply: getApplySeccompBinaryPath(seccompConfig?.applyPath) !== null,
294
+ hasSeccompApply: seccompConfig?.argv0
295
+ ? true
296
+ : getApplySeccompBinaryPath(seccompConfig?.applyPath) !== null,
279
297
  };
280
298
  }
281
299
  /**
@@ -288,9 +306,8 @@ export function checkLinuxDependencies(seccompConfig) {
288
306
  errors.push('bubblewrap (bwrap) not installed');
289
307
  if (whichSync('socat') === null)
290
308
  errors.push('socat not installed');
291
- const hasBpf = getPreGeneratedBpfPath(seccompConfig?.bpfPath) !== null;
292
- const hasApply = getApplySeccompBinaryPath(seccompConfig?.applyPath) !== null;
293
- if (!hasBpf || !hasApply) {
309
+ if (!seccompConfig?.argv0 &&
310
+ getApplySeccompBinaryPath(seccompConfig?.applyPath) === null) {
294
311
  warnings.push('seccomp not available - unix socket access not restricted');
295
312
  }
296
313
  return { warnings, errors };
@@ -424,11 +441,32 @@ export async function initializeLinuxNetworkBridge(httpProxyPort, socksProxyPort
424
441
  socksProxyPort,
425
442
  };
426
443
  }
444
+ /**
445
+ * Resolve how to invoke apply-seccomp: either a standalone binary path, or a
446
+ * multicall-binary prefix that dispatches on the ARGV0 env var.
447
+ *
448
+ * Returns a shell-ready string ending in a trailing space — callers append
449
+ * shellquote.quote([shell, '-c', cmd]). Returns undefined when seccomp is
450
+ * unavailable (no argv0, no binary found).
451
+ *
452
+ * When argv0 is set, applyPath is used verbatim (no existence check); the
453
+ * caller is responsible for ensuring it resolves inside the bwrap namespace.
454
+ */
455
+ function resolveApplySeccompPrefix(applyPath, argv0) {
456
+ if (argv0) {
457
+ if (!applyPath) {
458
+ throw new Error('seccompConfig.argv0 requires seccompConfig.applyPath');
459
+ }
460
+ return `ARGV0=${shellquote.quote([argv0])} ${shellquote.quote([applyPath])} `;
461
+ }
462
+ const binary = getApplySeccompBinaryPath(applyPath);
463
+ return binary ? `${shellquote.quote([binary])} ` : undefined;
464
+ }
427
465
  /**
428
466
  * Build the command that runs inside the sandbox.
429
467
  * Sets up HTTP proxy on port 3128 and SOCKS proxy on port 1080
430
468
  */
431
- function buildSandboxCommand(httpSocketPath, socksSocketPath, userCommand, seccompFilterPath, shell, applySeccompPath) {
469
+ function buildSandboxCommand(httpSocketPath, socksSocketPath, userCommand, applySeccompPrefix, shell) {
432
470
  // Default to bash for backward compatibility
433
471
  const shellPath = shell || 'bash';
434
472
  const socatCommands = [
@@ -436,36 +474,13 @@ function buildSandboxCommand(httpSocketPath, socksSocketPath, userCommand, secco
436
474
  `socat TCP-LISTEN:1080,fork,reuseaddr UNIX-CONNECT:${socksSocketPath} >/dev/null 2>&1 &`,
437
475
  'trap "kill %1 %2 2>/dev/null; exit" EXIT',
438
476
  ];
439
- // If seccomp filter is provided, use apply-seccomp to apply it
440
- if (seccompFilterPath) {
441
- // apply-seccomp approach:
442
- // 1. Outer bwrap/bash: starts socat processes (can use Unix sockets)
443
- // 2. apply-seccomp: applies seccomp filter and execs user command
444
- // 3. User command runs with seccomp active (Unix sockets blocked)
445
- //
446
- // apply-seccomp is a simple C program that:
447
- // - Sets PR_SET_NO_NEW_PRIVS
448
- // - Applies the seccomp BPF filter via prctl(PR_SET_SECCOMP)
449
- // - Execs the user command
450
- //
451
- // This is simpler and more portable than nested bwrap, with no FD redirects needed.
452
- const applySeccompBinary = getApplySeccompBinaryPath(applySeccompPath);
453
- if (!applySeccompBinary) {
454
- throw new Error('apply-seccomp binary not found. This should have been caught earlier. ' +
455
- 'Ensure vendor/seccomp/{x64,arm64}/apply-seccomp binaries are included in the package.');
456
- }
457
- const applySeccompCmd = shellquote.quote([
458
- applySeccompBinary,
459
- seccompFilterPath,
460
- shellPath,
461
- '-c',
462
- userCommand,
463
- ]);
477
+ // apply-seccomp runs after socat so socat can still create Unix sockets.
478
+ if (applySeccompPrefix) {
479
+ const applySeccompCmd = applySeccompPrefix + shellquote.quote([shellPath, '-c', userCommand]);
464
480
  const innerScript = [...socatCommands, applySeccompCmd].join('\n');
465
481
  return `${shellPath} -c ${shellquote.quote([innerScript])}`;
466
482
  }
467
483
  else {
468
- // No seccomp filter - run user command directly
469
484
  const innerScript = [
470
485
  ...socatCommands,
471
486
  `eval ${shellquote.quote([userCommand])}`,
@@ -479,12 +494,16 @@ function buildSandboxCommand(httpSocketPath, socksSocketPath, userCommand, secco
479
494
  async function generateFilesystemArgs(readConfig, writeConfig, ripgrepConfig = { command: 'rg' }, mandatoryDenySearchDepth = DEFAULT_MANDATORY_DENY_SEARCH_DEPTH, allowGitConfig = false, abortSignal) {
480
495
  const args = [];
481
496
  // fs already imported
497
+ // Collect normalized allowed write paths. Populated in the writeConfig
498
+ // block, read again in the denyRead loop to re-bind writes under tmpfs.
499
+ const allowedWritePaths = [];
500
+ // denyWrite binds are buffered and emitted after denyRead processing so that
501
+ // a denyRead tmpfs over an ancestor directory doesn't wipe them out.
502
+ const denyWriteArgs = [];
482
503
  // Determine initial root mount based on write restrictions
483
504
  if (writeConfig) {
484
505
  // Write restrictions: Start with read-only root, then allow writes to specific paths
485
506
  args.push('--ro-bind', '/', '/');
486
- // Collect normalized allowed write paths for later checking
487
- const allowedWritePaths = [];
488
507
  // Allow writes to specific paths
489
508
  for (const pathPattern of writeConfig.allowOnly || []) {
490
509
  const normalizedPath = normalizePathForSandbox(pathPattern);
@@ -526,8 +545,16 @@ async function generateFilesystemArgs(readConfig, writeConfig, ripgrepConfig = {
526
545
  ...(writeConfig.denyWithinAllow || []),
527
546
  ...(await linuxGetMandatoryDenyPaths(ripgrepConfig, mandatoryDenySearchDepth, allowGitConfig, abortSignal)),
528
547
  ];
548
+ // Dedup post-normalization: entries like ['~/.foo', '/home/user/.foo']
549
+ // converge to the same path here. A duplicate --ro-bind /dev/null <dest>
550
+ // hits a char device on the second pass and bwrap's ensure_file() falls
551
+ // through to creat() on a read-only mount.
552
+ const seenDenyWrite = new Set();
529
553
  for (const pathPattern of denyPaths) {
530
554
  const normalizedPath = normalizePathForSandbox(pathPattern);
555
+ if (seenDenyWrite.has(normalizedPath))
556
+ continue;
557
+ seenDenyWrite.add(normalizedPath);
531
558
  // Skip /dev/* paths since --dev /dev already handles them
532
559
  if (normalizedPath.startsWith('/dev/')) {
533
560
  continue;
@@ -538,7 +565,7 @@ async function generateFilesystemArgs(readConfig, writeConfig, ripgrepConfig = {
538
565
  // symlink and creates real .claude/settings.json with malicious hooks.
539
566
  const symlinkInPath = findSymlinkInPath(normalizedPath, allowedWritePaths);
540
567
  if (symlinkInPath) {
541
- args.push('--ro-bind', '/dev/null', symlinkInPath);
568
+ denyWriteArgs.push('--ro-bind', '/dev/null', symlinkInPath);
542
569
  logForDebugging(`[Sandbox Linux] Mounted /dev/null at symlink ${symlinkInPath} to prevent symlink replacement attack`);
543
570
  continue;
544
571
  }
@@ -576,13 +603,13 @@ async function generateFilesystemArgs(readConfig, writeConfig, ripgrepConfig = {
576
603
  // which breaks tools that expect to traverse it as a directory.
577
604
  if (firstNonExistent !== normalizedPath) {
578
605
  const emptyDir = fs.mkdtempSync(path.join(tmpdir(), 'claude-empty-'));
579
- args.push('--ro-bind', emptyDir, firstNonExistent);
606
+ denyWriteArgs.push('--ro-bind', emptyDir, firstNonExistent);
580
607
  bwrapMountPoints.add(firstNonExistent);
581
608
  registerExitCleanupHandler();
582
609
  logForDebugging(`[Sandbox Linux] Mounted empty dir at ${firstNonExistent} to block creation of ${normalizedPath}`);
583
610
  }
584
611
  else {
585
- args.push('--ro-bind', '/dev/null', firstNonExistent);
612
+ denyWriteArgs.push('--ro-bind', '/dev/null', firstNonExistent);
586
613
  bwrapMountPoints.add(firstNonExistent);
587
614
  registerExitCleanupHandler();
588
615
  logForDebugging(`[Sandbox Linux] Mounted /dev/null at ${firstNonExistent} to block creation of ${normalizedPath}`);
@@ -598,7 +625,7 @@ async function generateFilesystemArgs(readConfig, writeConfig, ripgrepConfig = {
598
625
  const isWithinAllowedPath = allowedWritePaths.some(allowedPath => normalizedPath.startsWith(allowedPath + '/') ||
599
626
  normalizedPath === allowedPath);
600
627
  if (isWithinAllowedPath) {
601
- args.push('--ro-bind', normalizedPath, normalizedPath);
628
+ denyWriteArgs.push('--ro-bind', normalizedPath, normalizedPath);
602
629
  }
603
630
  else {
604
631
  logForDebugging(`[Sandbox Linux] Skipping deny path not within allowed paths: ${normalizedPath}`);
@@ -609,34 +636,75 @@ async function generateFilesystemArgs(readConfig, writeConfig, ripgrepConfig = {
609
636
  // No write restrictions: Allow all writes
610
637
  args.push('--bind', '/', '/');
611
638
  }
639
+ // denyWriteArgs is emitted after the denyRead loop below.
612
640
  // Handle read restrictions by mounting tmpfs over denied paths
613
- const readDenyPaths = [...(readConfig?.denyOnly || [])];
641
+ const readDenyPaths = [];
614
642
  const readAllowPaths = (readConfig?.allowWithinDeny || []).map(p => normalizePathForSandbox(p));
643
+ // Files masked by --ro-bind /dev/null below. Used to filter denyWriteArgs so
644
+ // that --ro-bind <host> <host> doesn't undo the mask.
645
+ const maskedFiles = new Set();
646
+ // --tmpfs / would wipe all prior mounts (ro-bind /, write binds, deny binds).
647
+ // Expand a root deny into its direct children so the existing per-dir tmpfs
648
+ // + re-bind logic applies. Skip /proc and /dev: they're remounted by the
649
+ // caller after this function returns. Skip /sys: kernel interface, tmpfs
650
+ // over it breaks tooling and the host /sys is already read-only via ro-bind.
651
+ const rootSkip = new Set(['proc', 'dev', 'sys']);
652
+ for (const p of readConfig?.denyOnly || []) {
653
+ if (normalizePathForSandbox(p) === '/') {
654
+ for (const child of fs.readdirSync('/')) {
655
+ if (!rootSkip.has(child))
656
+ readDenyPaths.push('/' + child);
657
+ }
658
+ }
659
+ else {
660
+ readDenyPaths.push(p);
661
+ }
662
+ }
615
663
  // Always hide /etc/ssh/ssh_config.d to avoid permission issues with OrbStack
616
664
  // SSH is very strict about config file permissions and ownership, and they can
617
665
  // appear wrong inside the sandbox causing "Bad owner or permissions" errors
618
666
  if (fs.existsSync('/etc/ssh/ssh_config.d')) {
619
667
  readDenyPaths.push('/etc/ssh/ssh_config.d');
620
668
  }
621
- for (const pathPattern of readDenyPaths) {
622
- const normalizedPath = normalizePathForSandbox(pathPattern);
669
+ // Normalize then sort shallow-first so tmpfs over ancestor dirs lands before
670
+ // /dev/null masks on descendant files. Otherwise a file-deny listed before
671
+ // a dir-deny in denyRead gets wiped when the ancestor tmpfs is applied.
672
+ const normalizedDenyPaths = readDenyPaths
673
+ .map(p => normalizePathForSandbox(p))
674
+ .sort((a, b) => a.split('/').length - b.split('/').length);
675
+ for (const normalizedPath of normalizedDenyPaths) {
623
676
  if (!fs.existsSync(normalizedPath)) {
624
677
  logForDebugging(`[Sandbox Linux] Skipping non-existent read deny path: ${normalizedPath}`);
625
678
  continue;
626
679
  }
680
+ const denySep = normalizedPath === '/' ? '/' : normalizedPath + '/';
627
681
  const readDenyStat = fs.statSync(normalizedPath);
628
682
  if (readDenyStat.isDirectory()) {
629
683
  args.push('--tmpfs', normalizedPath);
684
+ // tmpfs wiped any earlier write binds under this path — restore them.
685
+ for (const writePath of allowedWritePaths) {
686
+ if (writePath.startsWith(denySep) || writePath === normalizedPath) {
687
+ args.push('--bind', writePath, writePath);
688
+ logForDebugging(`[Sandbox Linux] Re-bound write path wiped by denyRead tmpfs: ${writePath}`);
689
+ }
690
+ }
630
691
  // Re-allow specific paths within the denied directory (allowRead overrides denyRead).
631
692
  // After mounting tmpfs over the denied dir, bind back the allowed subdirectories
632
693
  // so they are readable again.
633
694
  for (const allowPath of readAllowPaths) {
634
- if (allowPath.startsWith(normalizedPath + '/') ||
635
- allowPath === normalizedPath) {
695
+ if (allowPath.startsWith(denySep) || allowPath === normalizedPath) {
636
696
  if (!fs.existsSync(allowPath)) {
637
697
  logForDebugging(`[Sandbox Linux] Skipping non-existent read allow path: ${allowPath}`);
638
698
  continue;
639
699
  }
700
+ // Skip only if a write path was re-bound just above AND covers
701
+ // allowPath. A write path that's an ancestor of the deny dir isn't
702
+ // re-bound (it wasn't wiped), so allowPath under it still needs
703
+ // its own ro-bind here.
704
+ if (allowedWritePaths.some(w => (w.startsWith(denySep) || w === normalizedPath) &&
705
+ (allowPath === w || allowPath.startsWith(w + '/')))) {
706
+ continue;
707
+ }
640
708
  // Bind the allowed path back over the tmpfs so it's readable
641
709
  args.push('--ro-bind', allowPath, allowPath);
642
710
  logForDebugging(`[Sandbox Linux] Re-allowed read access within denied region: ${allowPath}`);
@@ -644,17 +712,30 @@ async function generateFilesystemArgs(readConfig, writeConfig, ripgrepConfig = {
644
712
  }
645
713
  }
646
714
  else {
647
- // For files, check if this specific file is re-allowed
648
- const isReAllowed = readAllowPaths.some(allowPath => normalizedPath === allowPath ||
649
- normalizedPath.startsWith(allowPath + '/'));
650
- if (isReAllowed) {
715
+ // For files, only an exact allowRead match overrides the deny. A
716
+ // directory allowRead does not un-deny a file specifically listed in
717
+ // denyRead — otherwise denyRead: ['.env'] + allowRead: ['.'] silently
718
+ // drops the .env deny.
719
+ if (readAllowPaths.includes(normalizedPath)) {
651
720
  logForDebugging(`[Sandbox Linux] Skipping read deny for re-allowed path: ${normalizedPath}`);
652
721
  continue;
653
722
  }
654
723
  // For files, bind /dev/null instead of tmpfs
655
724
  args.push('--ro-bind', '/dev/null', normalizedPath);
725
+ maskedFiles.add(normalizedPath);
656
726
  }
657
727
  }
728
+ // Emitting denyWrite last means these ro-binds layer on top of any write
729
+ // paths the denyRead loop just re-bound. Before this ordering, tmpfs over
730
+ // an ancestor of cwd would wipe the .git/hooks protection. But skip any
731
+ // dest already masked by denyRead — --ro-bind <host> <host> for denyWrite
732
+ // would undo --ro-bind /dev/null <host> from denyRead, which landed first.
733
+ for (let i = 0; i < denyWriteArgs.length; i += 3) {
734
+ const dest = denyWriteArgs[i + 2];
735
+ if (maskedFiles.has(dest))
736
+ continue;
737
+ args.push(denyWriteArgs[i], denyWriteArgs[i + 1], dest);
738
+ }
658
739
  return args;
659
740
  }
660
741
  /**
@@ -670,10 +751,12 @@ async function generateFilesystemArgs(readConfig, writeConfig, ripgrepConfig = {
670
751
  * - Filesystem restrictions are applied (read-only mounts, bind mounts, etc.)
671
752
  * - Socat processes start and connect to Unix socket bridges (can use socket(AF_UNIX, ...))
672
753
  *
673
- * Stage 2: apply-seccomp - Seccomp filter application (ONLY seccomp)
674
- * - apply-seccomp binary applies seccomp filter via prctl(PR_SET_SECCOMP)
675
- * - Sets PR_SET_NO_NEW_PRIVS to allow seccomp without root
754
+ * Stage 2: apply-seccomp - Nested PID namespace + seccomp filter
755
+ * - apply-seccomp creates a nested user+PID+mount namespace and remounts /proc
756
+ * - Inside, apply-seccomp becomes PID 1 (non-dumpable init/reaper)
757
+ * - Forks, sets PR_SET_NO_NEW_PRIVS, applies seccomp via prctl(PR_SET_SECCOMP)
676
758
  * - Execs user command with seccomp active (cannot create new Unix sockets)
759
+ * - User command cannot see or ptrace bwrap/bash/socat (separate PID namespace)
677
760
  *
678
761
  * This solves the conflict between:
679
762
  * - Security: Blocking arbitrary Unix socket creation in user commands
@@ -716,33 +799,27 @@ export async function wrapCommandWithSandboxLinux(params) {
716
799
  !hasWriteRestrictions) {
717
800
  return command;
718
801
  }
802
+ // Mark this sandbox invocation as active. cleanupBwrapMountPoints() will
803
+ // defer file deletion until this (and every other concurrent) invocation
804
+ // has been cleaned up. The matching decrement happens in
805
+ // cleanupBwrapMountPoints(), which the caller must invoke after the
806
+ // spawned command exits. If wrapping fails below, the catch block
807
+ // decrements so the count does not leak.
808
+ activeSandboxCount++;
719
809
  const bwrapArgs = ['--new-session', '--die-with-parent'];
720
- let seccompFilterPath = undefined;
810
+ let applySeccompPrefix;
721
811
  try {
722
812
  // ========== SECCOMP FILTER (Unix Socket Blocking) ==========
723
- // Use bwrap's --seccomp flag to apply BPF filter that blocks Unix socket creation
724
- //
725
- // NOTE: Seccomp filtering is only enabled when allowAllUnixSockets is false
726
- // (when true, Unix sockets are allowed)
813
+ // apply-seccomp wraps the workload and applies the baked-in BPF filter
814
+ // that blocks socket(AF_UNIX, ...). Skipped when allowAllUnixSockets is true.
727
815
  if (!allowAllUnixSockets) {
728
- seccompFilterPath =
729
- generateSeccompFilter(seccompConfig?.bpfPath) ?? undefined;
730
- const applySeccompBinary = getApplySeccompBinaryPath(seccompConfig?.applyPath);
731
- if (!seccompFilterPath || !applySeccompBinary) {
732
- // Seccomp binaries not found - warn but continue without unix socket blocking
733
- logForDebugging('[Sandbox Linux] Seccomp binaries not available - unix socket blocking disabled. ' +
816
+ applySeccompPrefix = resolveApplySeccompPrefix(seccompConfig?.applyPath, seccompConfig?.argv0);
817
+ if (!applySeccompPrefix) {
818
+ logForDebugging('[Sandbox Linux] apply-seccomp binary not available - unix socket blocking disabled. ' +
734
819
  'Install @anthropic-ai/sandbox-runtime globally for full protection.', { level: 'warn' });
735
- // Clear the filter path so we don't try to use it
736
- seccompFilterPath = undefined;
737
820
  }
738
821
  else {
739
- // Track filter for cleanup and register exit handler
740
- // Only track runtime-generated filters (not pre-generated ones from vendor/)
741
- if (!seccompFilterPath.includes('/vendor/seccomp/')) {
742
- generatedSeccompFilters.add(seccompFilterPath);
743
- registerExitCleanupHandler();
744
- }
745
- logForDebugging('[Sandbox Linux] Generated seccomp BPF filter for Unix socket blocking');
822
+ logForDebugging('[Sandbox Linux] Applying seccomp filter for Unix socket blocking');
746
823
  }
747
824
  }
748
825
  else {
@@ -808,6 +885,22 @@ export async function wrapCommandWithSandboxLinux(params) {
808
885
  // Mount fresh /proc if PID namespace is isolated (secure mode)
809
886
  bwrapArgs.push('--proc', '/proc');
810
887
  }
888
+ else {
889
+ // --unshare-user: bwrap only auto-adds this when EUID != 0. In an
890
+ // unprivileged container (Docker's default: EUID=0 without
891
+ // CAP_SYS_ADMIN), bwrap assumes it has caps, tries direct clone,
892
+ // and EPERMs. Force the userns path so bwrap starts at all.
893
+ //
894
+ // --bind /proc /proc: apply-seccomp's nested-userns path writes
895
+ // /proc/self/setgroups and uid_map. Without --proc above, the
896
+ // --ro-bind / / leaves /proc read-only and those writes EROFS.
897
+ bwrapArgs.push('--unshare-user', '--bind', '/proc', '/proc');
898
+ }
899
+ // apply-seccomp obtains CAP_SYS_ADMIN for its nested PID+mount unshare
900
+ // by creating a nested user namespace. This requires the host to permit
901
+ // capability-bearing unprivileged user namespaces (the same requirement
902
+ // bwrap itself has when not installed setuid). See README for the
903
+ // Ubuntu 24.04 sysctl if AppArmor restricts this.
811
904
  // ========== COMMAND ==========
812
905
  // Use the user's shell (zsh, bash, etc.) to ensure aliases/snapshots work
813
906
  // Resolve the full path to the shell binary since bwrap doesn't use $PATH
@@ -817,58 +910,37 @@ export async function wrapCommandWithSandboxLinux(params) {
817
910
  throw new Error(`Shell '${shellName}' not found in PATH`);
818
911
  }
819
912
  bwrapArgs.push('--', shell, '-c');
820
- // If we have network restrictions, use the network bridge setup with apply-seccomp for seccomp
821
- // Otherwise, just run the command directly with apply-seccomp if needed
913
+ // With network restrictions, route the command through buildSandboxCommand
914
+ // so socat starts before seccomp is applied. Otherwise invoke apply-seccomp
915
+ // directly if we have a binary.
822
916
  if (needsNetworkRestriction && httpSocketPath && socksSocketPath) {
823
- // Pass seccomp filter to buildSandboxCommand for apply-seccomp application
824
- // This allows socat to start before seccomp is applied
825
- const sandboxCommand = buildSandboxCommand(httpSocketPath, socksSocketPath, command, seccompFilterPath, shell, seccompConfig?.applyPath);
917
+ const sandboxCommand = buildSandboxCommand(httpSocketPath, socksSocketPath, command, applySeccompPrefix, shell);
826
918
  bwrapArgs.push(sandboxCommand);
827
919
  }
828
- else if (seccompFilterPath) {
829
- // No network restrictions but we have seccomp - use apply-seccomp directly
830
- // apply-seccomp is a simple C program that applies the seccomp filter and execs the command
831
- const applySeccompBinary = getApplySeccompBinaryPath(seccompConfig?.applyPath);
832
- if (!applySeccompBinary) {
833
- throw new Error('apply-seccomp binary not found. This should have been caught earlier. ' +
834
- 'Ensure vendor/seccomp/{x64,arm64}/apply-seccomp binaries are included in the package.');
835
- }
836
- const applySeccompCmd = shellquote.quote([
837
- applySeccompBinary,
838
- seccompFilterPath,
839
- shell,
840
- '-c',
841
- command,
842
- ]);
920
+ else if (applySeccompPrefix) {
921
+ const applySeccompCmd = applySeccompPrefix + shellquote.quote([shell, '-c', command]);
843
922
  bwrapArgs.push(applySeccompCmd);
844
923
  }
845
924
  else {
846
925
  bwrapArgs.push(command);
847
926
  }
848
- // Build the outer bwrap command
849
927
  const wrappedCommand = shellquote.quote(['bwrap', ...bwrapArgs]);
850
928
  const restrictions = [];
851
929
  if (needsNetworkRestriction)
852
930
  restrictions.push('network');
853
931
  if (hasReadRestrictions || hasWriteRestrictions)
854
932
  restrictions.push('filesystem');
855
- if (seccompFilterPath)
933
+ if (applySeccompPrefix)
856
934
  restrictions.push('seccomp(unix-block)');
857
935
  logForDebugging(`[Sandbox Linux] Wrapped command with bwrap (${restrictions.join(', ')} restrictions)`);
858
936
  return wrappedCommand;
859
937
  }
860
938
  catch (error) {
861
- // Clean up seccomp filter on error
862
- if (seccompFilterPath && !seccompFilterPath.includes('/vendor/seccomp/')) {
863
- generatedSeccompFilters.delete(seccompFilterPath);
864
- try {
865
- cleanupSeccompFilter(seccompFilterPath);
866
- }
867
- catch (cleanupError) {
868
- logForDebugging(`[Sandbox Linux] Failed to clean up seccomp filter on error: ${cleanupError}`, { level: 'error' });
869
- }
939
+ // Undo the activeSandboxCount increment the caller won't call
940
+ // cleanupBwrapMountPoints() for a wrap that threw.
941
+ if (activeSandboxCount > 0) {
942
+ activeSandboxCount--;
870
943
  }
871
- // Re-throw the original error
872
944
  throw error;
873
945
  }
874
946
  }
@@ -1 +1 @@
1
- {"version":3,"file":"linux-sandbox-utils.js","sourceRoot":"","sources":["../../src/sandbox/linux-sandbox-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"linux-sandbox-utils.js","sourceRoot":"","sources":["../../src/sandbox/linux-sandbox-utils.ts"],"names":[],"mappings":"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"}