@sysid/sandbox-runtime-improved 0.0.52-sysid.1 → 0.0.54-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.
- package/README.md +5 -2
- package/dist/cli.js +91 -7
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/sandbox/linux-sandbox-utils.d.ts.map +1 -1
- package/dist/sandbox/linux-sandbox-utils.js +17 -11
- package/dist/sandbox/linux-sandbox-utils.js.map +1 -1
- package/dist/sandbox/macos-sandbox-utils.d.ts +1 -0
- package/dist/sandbox/macos-sandbox-utils.d.ts.map +1 -1
- package/dist/sandbox/macos-sandbox-utils.js +16 -2
- package/dist/sandbox/macos-sandbox-utils.js.map +1 -1
- package/dist/sandbox/mitm-leaf.d.ts.map +1 -1
- package/dist/sandbox/mitm-leaf.js +18 -5
- package/dist/sandbox/mitm-leaf.js.map +1 -1
- package/dist/sandbox/sandbox-config.d.ts +53 -0
- package/dist/sandbox/sandbox-config.d.ts.map +1 -1
- package/dist/sandbox/sandbox-config.js +46 -0
- package/dist/sandbox/sandbox-config.js.map +1 -1
- package/dist/sandbox/sandbox-manager.d.ts +4 -0
- package/dist/sandbox/sandbox-manager.d.ts.map +1 -1
- package/dist/sandbox/sandbox-manager.js +172 -40
- package/dist/sandbox/sandbox-manager.js.map +1 -1
- package/dist/sandbox/sandbox-utils.d.ts.map +1 -1
- package/dist/sandbox/sandbox-utils.js +12 -3
- package/dist/sandbox/sandbox-utils.js.map +1 -1
- package/dist/sandbox/tls-terminate-proxy.js +18 -4
- package/dist/sandbox/tls-terminate-proxy.js.map +1 -1
- package/dist/sandbox/windows-sandbox-utils.d.ts +222 -0
- package/dist/sandbox/windows-sandbox-utils.d.ts.map +1 -0
- package/dist/sandbox/windows-sandbox-utils.js +433 -0
- package/dist/sandbox/windows-sandbox-utils.js.map +1 -0
- package/dist/vendor/srt-win/Cargo.lock +361 -0
- package/dist/vendor/srt-win/Cargo.toml +46 -0
- package/dist/vendor/srt-win/ci/cleanup.ps1 +49 -0
- package/dist/vendor/srt-win/ci/smoke-exec.ps1 +446 -0
- package/dist/vendor/srt-win/ci/smoke.ps1 +307 -0
- package/dist/vendor/srt-win/src/job.rs +102 -0
- package/dist/vendor/srt-win/src/launch.rs +732 -0
- package/dist/vendor/srt-win/src/lib.rs +20 -0
- package/dist/vendor/srt-win/src/main.rs +669 -0
- package/dist/vendor/srt-win/src/self_protect.rs +169 -0
- package/dist/vendor/srt-win/src/sid.rs +296 -0
- package/dist/vendor/srt-win/src/token.rs +341 -0
- package/dist/vendor/srt-win/src/util.rs +42 -0
- package/dist/vendor/srt-win/src/wfp.rs +992 -0
- package/dist/vendor/srt-win/src/winsta.rs +209 -0
- package/dist/vendor/srt-win/tests/sd_access_check_matrix.rs +259 -0
- package/package.json +2 -2
- package/vendor/srt-win/Cargo.lock +361 -0
- package/vendor/srt-win/Cargo.toml +46 -0
- package/vendor/srt-win/ci/cleanup.ps1 +49 -0
- package/vendor/srt-win/ci/smoke-exec.ps1 +446 -0
- package/vendor/srt-win/ci/smoke.ps1 +307 -0
- package/vendor/srt-win/src/job.rs +102 -0
- package/vendor/srt-win/src/launch.rs +732 -0
- package/vendor/srt-win/src/lib.rs +20 -0
- package/vendor/srt-win/src/main.rs +669 -0
- package/vendor/srt-win/src/self_protect.rs +169 -0
- package/vendor/srt-win/src/sid.rs +296 -0
- package/vendor/srt-win/src/token.rs +341 -0
- package/vendor/srt-win/src/util.rs +42 -0
- package/vendor/srt-win/src/wfp.rs +992 -0
- package/vendor/srt-win/src/winsta.rs +209 -0
- package/vendor/srt-win/tests/sd_access_check_matrix.rs +259 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mitm-leaf.js","sourceRoot":"","sources":["../../src/sandbox/mitm-leaf.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,MAAM,YAAY,CAAA;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,mBAAmB,EAAsB,MAAM,UAAU,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAGnD,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAA;AASvC;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,EAAU,EAAE,QAAgB;IACvD,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACzC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAA;IAEzB,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;IAC1C,MAAM,IAAI,GAAG,GAAG,CAAC,iBAAiB,EAAE,CAAA;IACpC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;IAC/B,IAAI,CAAC,YAAY,GAAG,YAAY,EAAE,CAAA;IAClC,
|
|
1
|
+
{"version":3,"file":"mitm-leaf.js","sourceRoot":"","sources":["../../src/sandbox/mitm-leaf.ts"],"names":[],"mappings":"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"}
|
|
@@ -178,6 +178,27 @@ export declare const RipgrepConfigSchema: z.ZodObject<{
|
|
|
178
178
|
args?: string[] | undefined;
|
|
179
179
|
argv0?: string | undefined;
|
|
180
180
|
}>;
|
|
181
|
+
/**
|
|
182
|
+
* Windows-specific configuration schema. See
|
|
183
|
+
* `windows-sandbox-utils.ts` for the install flow these settings
|
|
184
|
+
* must agree with.
|
|
185
|
+
*/
|
|
186
|
+
export declare const WindowsConfigSchema: z.ZodObject<{
|
|
187
|
+
groupName: z.ZodDefault<z.ZodString>;
|
|
188
|
+
groupSid: z.ZodOptional<z.ZodString>;
|
|
189
|
+
wfpSublayerGuid: z.ZodOptional<z.ZodString>;
|
|
190
|
+
proxyPortRange: z.ZodOptional<z.ZodEffects<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, [number, number], [number, number]>>;
|
|
191
|
+
}, "strip", z.ZodTypeAny, {
|
|
192
|
+
groupName: string;
|
|
193
|
+
groupSid?: string | undefined;
|
|
194
|
+
wfpSublayerGuid?: string | undefined;
|
|
195
|
+
proxyPortRange?: [number, number] | undefined;
|
|
196
|
+
}, {
|
|
197
|
+
groupName?: string | undefined;
|
|
198
|
+
groupSid?: string | undefined;
|
|
199
|
+
wfpSublayerGuid?: string | undefined;
|
|
200
|
+
proxyPortRange?: [number, number] | undefined;
|
|
201
|
+
}>;
|
|
181
202
|
/**
|
|
182
203
|
* Seccomp configuration schema (Linux only)
|
|
183
204
|
*/
|
|
@@ -313,6 +334,7 @@ export declare const SandboxRuntimeConfigSchema: z.ZodObject<{
|
|
|
313
334
|
ignoreViolations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString, "many">>>;
|
|
314
335
|
enableWeakerNestedSandbox: z.ZodOptional<z.ZodBoolean>;
|
|
315
336
|
enableWeakerNetworkIsolation: z.ZodOptional<z.ZodBoolean>;
|
|
337
|
+
allowAppleEvents: z.ZodOptional<z.ZodBoolean>;
|
|
316
338
|
ripgrep: z.ZodOptional<z.ZodObject<{
|
|
317
339
|
command: z.ZodString;
|
|
318
340
|
args: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
@@ -341,6 +363,22 @@ export declare const SandboxRuntimeConfigSchema: z.ZodObject<{
|
|
|
341
363
|
}>>;
|
|
342
364
|
bwrapPath: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
|
|
343
365
|
socatPath: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
|
|
366
|
+
windows: z.ZodOptional<z.ZodObject<{
|
|
367
|
+
groupName: z.ZodDefault<z.ZodString>;
|
|
368
|
+
groupSid: z.ZodOptional<z.ZodString>;
|
|
369
|
+
wfpSublayerGuid: z.ZodOptional<z.ZodString>;
|
|
370
|
+
proxyPortRange: z.ZodOptional<z.ZodEffects<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, [number, number], [number, number]>>;
|
|
371
|
+
}, "strip", z.ZodTypeAny, {
|
|
372
|
+
groupName: string;
|
|
373
|
+
groupSid?: string | undefined;
|
|
374
|
+
wfpSublayerGuid?: string | undefined;
|
|
375
|
+
proxyPortRange?: [number, number] | undefined;
|
|
376
|
+
}, {
|
|
377
|
+
groupName?: string | undefined;
|
|
378
|
+
groupSid?: string | undefined;
|
|
379
|
+
wfpSublayerGuid?: string | undefined;
|
|
380
|
+
proxyPortRange?: [number, number] | undefined;
|
|
381
|
+
}>>;
|
|
344
382
|
}, "strip", z.ZodTypeAny, {
|
|
345
383
|
network: {
|
|
346
384
|
allowedDomains: string[];
|
|
@@ -376,6 +414,7 @@ export declare const SandboxRuntimeConfigSchema: z.ZodObject<{
|
|
|
376
414
|
ignoreViolations?: Record<string, string[]> | undefined;
|
|
377
415
|
enableWeakerNestedSandbox?: boolean | undefined;
|
|
378
416
|
enableWeakerNetworkIsolation?: boolean | undefined;
|
|
417
|
+
allowAppleEvents?: boolean | undefined;
|
|
379
418
|
ripgrep?: {
|
|
380
419
|
command: string;
|
|
381
420
|
args?: string[] | undefined;
|
|
@@ -390,6 +429,12 @@ export declare const SandboxRuntimeConfigSchema: z.ZodObject<{
|
|
|
390
429
|
} | undefined;
|
|
391
430
|
bwrapPath?: string | undefined;
|
|
392
431
|
socatPath?: string | undefined;
|
|
432
|
+
windows?: {
|
|
433
|
+
groupName: string;
|
|
434
|
+
groupSid?: string | undefined;
|
|
435
|
+
wfpSublayerGuid?: string | undefined;
|
|
436
|
+
proxyPortRange?: [number, number] | undefined;
|
|
437
|
+
} | undefined;
|
|
393
438
|
}, {
|
|
394
439
|
network: {
|
|
395
440
|
allowedDomains: string[];
|
|
@@ -425,6 +470,7 @@ export declare const SandboxRuntimeConfigSchema: z.ZodObject<{
|
|
|
425
470
|
ignoreViolations?: Record<string, string[]> | undefined;
|
|
426
471
|
enableWeakerNestedSandbox?: boolean | undefined;
|
|
427
472
|
enableWeakerNetworkIsolation?: boolean | undefined;
|
|
473
|
+
allowAppleEvents?: boolean | undefined;
|
|
428
474
|
ripgrep?: {
|
|
429
475
|
command: string;
|
|
430
476
|
args?: string[] | undefined;
|
|
@@ -439,6 +485,12 @@ export declare const SandboxRuntimeConfigSchema: z.ZodObject<{
|
|
|
439
485
|
} | undefined;
|
|
440
486
|
bwrapPath?: string | undefined;
|
|
441
487
|
socatPath?: string | undefined;
|
|
488
|
+
windows?: {
|
|
489
|
+
groupName?: string | undefined;
|
|
490
|
+
groupSid?: string | undefined;
|
|
491
|
+
wfpSublayerGuid?: string | undefined;
|
|
492
|
+
proxyPortRange?: [number, number] | undefined;
|
|
493
|
+
} | undefined;
|
|
442
494
|
}>;
|
|
443
495
|
export type MitmProxyConfig = z.infer<typeof MitmProxyConfigSchema>;
|
|
444
496
|
export type ParentProxyConfig = z.infer<typeof ParentProxyConfigSchema>;
|
|
@@ -447,6 +499,7 @@ export type FilesystemConfig = z.infer<typeof FilesystemConfigSchema>;
|
|
|
447
499
|
export type IgnoreViolationsConfig = z.infer<typeof IgnoreViolationsConfigSchema>;
|
|
448
500
|
export type RipgrepConfig = z.infer<typeof RipgrepConfigSchema>;
|
|
449
501
|
export type SeccompConfig = z.infer<typeof SeccompConfigSchema>;
|
|
502
|
+
export type WindowsConfig = z.infer<typeof WindowsConfigSchema>;
|
|
450
503
|
export type SandboxRuntimeConfig = z.infer<typeof SandboxRuntimeConfigSchema>;
|
|
451
504
|
export {};
|
|
452
505
|
//# sourceMappingURL=sandbox-config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox-config.d.ts","sourceRoot":"","sources":["../../src/sandbox/sandbox-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAGhE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAgEvB;;;GAGG;AACH,QAAA,MAAM,qBAAqB;;;;;;;;;EAQzB,CAAA;AAEF;;;;GAIG;AACH,QAAA,MAAM,uBAAuB;;;;;;;;;;;;EAoB3B,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4G9B,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;EAqBjC,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,4BAA4B,2DAItC,CAAA;AAEH;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;EAY9B,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;EAa9B,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B
|
|
1
|
+
{"version":3,"file":"sandbox-config.d.ts","sourceRoot":"","sources":["../../src/sandbox/sandbox-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAGhE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAgEvB;;;GAGG;AACH,QAAA,MAAM,qBAAqB;;;;;;;;;EAQzB,CAAA;AAEF;;;;GAIG;AACH,QAAA,MAAM,uBAAuB;;;;;;;;;;;;EAoB3B,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4G9B,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;EAqBjC,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,4BAA4B,2DAItC,CAAA;AAEH;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;EAY9B,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;EAsC9B,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;EAa9B,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6ErC,CAAA;AAGF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AACnE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AACvE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAC/D,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA;AACrE,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAC1C,OAAO,4BAA4B,CACpC,CAAA;AACD,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAC/D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAC/D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAC/D,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAA"}
|
|
@@ -215,6 +215,42 @@ export const RipgrepConfigSchema = z.object({
|
|
|
215
215
|
.optional()
|
|
216
216
|
.describe('Override argv[0] when spawning (for multicall binaries that dispatch on argv[0])'),
|
|
217
217
|
});
|
|
218
|
+
/**
|
|
219
|
+
* Windows-specific configuration schema. See
|
|
220
|
+
* `windows-sandbox-utils.ts` for the install flow these settings
|
|
221
|
+
* must agree with.
|
|
222
|
+
*/
|
|
223
|
+
export const WindowsConfigSchema = z.object({
|
|
224
|
+
groupName: z
|
|
225
|
+
.string()
|
|
226
|
+
.min(1)
|
|
227
|
+
.default('sandbox-runtime-net')
|
|
228
|
+
.describe('Discriminator group name. Must match the group created at install ' +
|
|
229
|
+
'time. Ignored if groupSid is set.'),
|
|
230
|
+
groupSid: z
|
|
231
|
+
.string()
|
|
232
|
+
.regex(/^S-1-/, 'must be an S-1-… SID string')
|
|
233
|
+
.optional()
|
|
234
|
+
.describe('Discriminator group SID. Overrides groupName lookup — use for ' +
|
|
235
|
+
'domain groups or where name resolution is unreliable.'),
|
|
236
|
+
wfpSublayerGuid: z
|
|
237
|
+
.string()
|
|
238
|
+
.uuid()
|
|
239
|
+
.optional()
|
|
240
|
+
.describe('WFP sublayer GUID under which the filters were installed. Omit to ' +
|
|
241
|
+
'use the srt-win compile-time default. Set this when filters were ' +
|
|
242
|
+
'installed by enterprise tooling under a custom sublayer.'),
|
|
243
|
+
proxyPortRange: z
|
|
244
|
+
.tuple([z.number().int().min(1), z.number().int().max(65535)])
|
|
245
|
+
.refine(([lo, hi]) => lo <= hi && hi - lo <= 64, {
|
|
246
|
+
message: 'low must be ≤ high and range width ≤ 64',
|
|
247
|
+
})
|
|
248
|
+
.optional()
|
|
249
|
+
.describe('Inclusive [low, high] port range the JS http/socks proxies bind ' +
|
|
250
|
+
'inside. MUST match the range passed to `srt-win wfp install ' +
|
|
251
|
+
'--proxy-port-range` (default 60080–60089) — the WFP loopback ' +
|
|
252
|
+
'permit only covers ports in that range.'),
|
|
253
|
+
});
|
|
218
254
|
/**
|
|
219
255
|
* Seccomp configuration schema (Linux only)
|
|
220
256
|
*/
|
|
@@ -248,6 +284,15 @@ export const SandboxRuntimeConfigSchema = z.object({
|
|
|
248
284
|
'This is needed for Go programs (gh, gcloud, terraform, kubectl, etc.) to verify TLS certificates ' +
|
|
249
285
|
'when using httpProxyPort with a MITM proxy and custom CA. Enabling this opens a potential data ' +
|
|
250
286
|
'exfiltration vector through the trustd service. Only enable if you need Go TLS verification.'),
|
|
287
|
+
allowAppleEvents: z
|
|
288
|
+
.boolean()
|
|
289
|
+
.optional()
|
|
290
|
+
.describe('Allow sending Apple Events and Launch Services open requests from the sandbox (macOS only). ' +
|
|
291
|
+
'Needed for open, osascript, and anything that opens URLs or scripts other apps via AppleScript. ' +
|
|
292
|
+
'This removes code-execution isolation: sandboxed commands can launch other applications ' +
|
|
293
|
+
'unsandboxed with no user prompt (launched apps are not subject to the sandbox filesystem or ' +
|
|
294
|
+
'network restrictions), and can script running apps subject to TCC automation consent. ' +
|
|
295
|
+
'Default: false.'),
|
|
251
296
|
ripgrep: RipgrepConfigSchema.optional().describe('Custom ripgrep configuration (default: { command: "rg" })'),
|
|
252
297
|
mandatoryDenySearchDepth: z
|
|
253
298
|
.number()
|
|
@@ -278,5 +323,6 @@ export const SandboxRuntimeConfigSchema = z.object({
|
|
|
278
323
|
.optional()
|
|
279
324
|
.describe('Linux only: absolute path to the socat binary. ' +
|
|
280
325
|
'When set, this path is used directly instead of resolving "socat" via PATH.'),
|
|
326
|
+
windows: WindowsConfigSchema.optional().describe('Windows-specific settings (group, WFP sublayer, proxy port range).'),
|
|
281
327
|
});
|
|
282
328
|
//# sourceMappingURL=sandbox-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox-config.js","sourceRoot":"","sources":["../../src/sandbox/sandbox-config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sandbox-config.js","sourceRoot":"","sources":["../../src/sandbox/sandbox-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;;GAGG;AACH,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAC3C,GAAG,CAAC,EAAE;IACJ,uCAAuC;IACvC,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAClE,OAAO,KAAK,CAAA;IACd,CAAC;IAED,kBAAkB;IAClB,IAAI,GAAG,KAAK,WAAW;QAAE,OAAO,IAAI,CAAA;IAEpC,4CAA4C;IAC5C,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAC3B,uEAAuE;QACvE,yDAAyD;QACzD,IACE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;YACrB,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;YACtB,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EACpB,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC;QACD,iFAAiF;QACjF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC/B,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC5D,CAAC;IAED,wDAAwD;IACxD,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,uEAAuE;IACvE,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AACxE,CAAC,EACD;IACE,OAAO,EACL,2LAA2L;CAC9L,CACF,CAAA;AAED;;GAEG;AACH,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAA;AAEtE;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,CAAC;KACvB,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,EAAE,sBAAsB,CAAC;KAC9B,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;IAC9B,OAAO,EAAE,8BAA8B;CACxC,CAAC,CAAA;AAEJ;;;GAGG;AACH,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IAC5E,OAAO,EAAE,CAAC;SACP,KAAK,CAAC,mBAAmB,CAAC;SAC1B,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,uFAAuF,CACxF;CACJ,CAAC,CAAA;AAEF;;;;GAIG;AACH,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,QAAQ,CAAC,2CAA2C,CAAC;IACxD,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,QAAQ,CACP,4EAA4E,CAC7E;IACH,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,qEAAqE;QACnE,yEAAyE,CAC5E;CACJ,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,cAAc,EAAE,CAAC;SACd,KAAK,CAAC,mBAAmB,CAAC;SAC1B,QAAQ,CAAC,+DAA+D,CAAC;IAC5E,aAAa,EAAE,CAAC;SACb,KAAK,CAAC,mBAAmB,CAAC;SAC1B,QAAQ,CAAC,wBAAwB,CAAC;IACrC,gBAAgB,EAAE,CAAC;SAChB,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CACP,2FAA2F,CAC5F;IACH,mBAAmB,EAAE,CAAC;SACnB,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CACP,wEAAwE,CACzE;IACH,iBAAiB,EAAE,CAAC;SACjB,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,0DAA0D,CAAC;IACvE,eAAe,EAAE,CAAC;SACf,KAAK,CACJ,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CACf,GAAG,CAAC,EAAE;QACJ,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;QACzD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;IAC9B,CAAC,EACD;QACE,OAAO,EACL,sGAAsG;KACzG,CACF,CACF;SACA,QAAQ,EAAE;SACV,QAAQ,CACP,qPAAqP,CACtP;IACH,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,KAAK,CAAC;SACV,QAAQ,EAAE;SACV,QAAQ,CACP,6MAA6M,CAC9M;IACH,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,KAAK,CAAC;SACV,QAAQ,EAAE;SACV,QAAQ,CACP,+MAA+M,CAChN;IACH,SAAS,EAAE,qBAAqB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAClD,oJAAoJ,CACrJ;IACD,aAAa,EAAE,CAAC;SACb,MAAM,CAAwB,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,UAAU,EAAE;QAC3D,OAAO,EAAE,kCAAkC;KAC5C,CAAC;SACD,QAAQ,EAAE;SACV,QAAQ,CACP,gEAAgE;QAC9D,+DAA+D;QAC/D,kEAAkE;QAClE,kEAAkE;QAClE,qEAAqE;QACrE,4DAA4D,CAC/D;IACH,YAAY,EAAE,CAAC;SACZ,MAAM,CAAC;QACN,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,EAAE;aACV,QAAQ,CACP,+DAA+D;YAC7D,kEAAkE;YAClE,iEAAiE;YACjE,6DAA6D;YAC7D,UAAU,CACb;QACH,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,EAAE;aACV,QAAQ,CAAC,qDAAqD,CAAC;KACnE,CAAC;SACD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE;QAC3C,OAAO,EAAE,oDAAoD;KAC9D,CAAC;SACD,QAAQ,EAAE;SACV,QAAQ,CACP,4DAA4D;QAC1D,qEAAqE;QACrE,qDAAqD,CACxD;IACH,WAAW,EAAE,uBAAuB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACtD,sEAAsE;QACpE,+DAA+D;QAC/D,qEAAqE;QACrE,oBAAoB,CACvB;CACF,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IAC5E,SAAS,EAAE,CAAC;SACT,KAAK,CAAC,oBAAoB,CAAC;SAC3B,QAAQ,EAAE;SACV,QAAQ,CACP,oFAAoF;QAClF,mFAAmF,CACtF;IACH,UAAU,EAAE,CAAC;SACV,KAAK,CAAC,oBAAoB,CAAC;SAC3B,QAAQ,CAAC,2BAA2B,CAAC;IACxC,SAAS,EAAE,CAAC;SACT,KAAK,CAAC,oBAAoB,CAAC;SAC3B,QAAQ,CAAC,6DAA6D,CAAC;IAC1E,cAAc,EAAE,CAAC;SACd,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CACP,wHAAwH,CACzH;CACJ,CAAC,CAAA;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC;KAC1C,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;KACvC,QAAQ,CACP,qGAAqG,CACtG,CAAA;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAC9D,IAAI,EAAE,CAAC;SACJ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CAAC,kDAAkD,CAAC;IAC/D,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,kFAAkF,CACnF;CACJ,CAAC,CAAA;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,OAAO,CAAC,qBAAqB,CAAC;SAC9B,QAAQ,CACP,oEAAoE;QAClE,mCAAmC,CACtC;IACH,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,KAAK,CAAC,OAAO,EAAE,6BAA6B,CAAC;SAC7C,QAAQ,EAAE;SACV,QAAQ,CACP,gEAAgE;QAC9D,uDAAuD,CAC1D;IACH,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,IAAI,EAAE;SACN,QAAQ,EAAE;SACV,QAAQ,CACP,oEAAoE;QAClE,mEAAmE;QACnE,0DAA0D,CAC7D;IACH,cAAc,EAAE,CAAC;SACd,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;SAC7D,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC/C,OAAO,EAAE,yCAAyC;KACnD,CAAC;SACD,QAAQ,EAAE;SACV,QAAQ,CACP,kEAAkE;QAChE,8DAA8D;QAC9D,+DAA+D;QAC/D,yCAAyC,CAC5C;CACJ,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IAC7E,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,oEAAoE;QAClE,mEAAmE;QACnE,mEAAmE;QACnE,kEAAkE;QAClE,oEAAoE;QACpE,mEAAmE,CACtE;CACJ,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,OAAO,EAAE,mBAAmB,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IAC3E,UAAU,EAAE,sBAAsB,CAAC,QAAQ,CACzC,uCAAuC,CACxC;IACD,gBAAgB,EAAE,4BAA4B,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAChE,yDAAyD,CAC1D;IACD,yBAAyB,EAAE,CAAC;SACzB,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,6DAA6D,CAAC;IAC1E,4BAA4B,EAAE,CAAC;SAC5B,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CACP,0FAA0F;QACxF,mGAAmG;QACnG,iGAAiG;QACjG,8FAA8F,CACjG;IACH,gBAAgB,EAAE,CAAC;SAChB,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CACP,8FAA8F;QAC5F,kGAAkG;QAClG,0FAA0F;QAC1F,8FAA8F;QAC9F,wFAAwF;QACxF,iBAAiB,CACpB;IACH,OAAO,EAAE,mBAAmB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC9C,2DAA2D,CAC5D;IACD,wBAAwB,EAAE,CAAC;SACxB,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;SACP,QAAQ,EAAE;SACV,QAAQ,CACP,+EAA+E;QAC7E,+DAA+D,CAClE;IACH,QAAQ,EAAE,CAAC;SACR,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,qDAAqD,CAAC;IAClE,mBAAmB,EAAE,CAAC;SACnB,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CACP,iFAAiF;QAC/E,kFAAkF;QAClF,mFAAmF;QACnF,sFAAsF;QACtF,iEAAiE,CACpE;IACH,OAAO,EAAE,mBAAmB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC9C,2CAA2C,CAC5C;IACD,SAAS,EAAE,gBAAgB;SACxB,QAAQ,EAAE;SACV,QAAQ,CACP,8DAA8D;QAC5D,6EAA6E,CAChF;IACH,SAAS,EAAE,gBAAgB;SACxB,QAAQ,EAAE;SACV,QAAQ,CACP,iDAAiD;QAC/C,6EAA6E,CAChF;IACH,OAAO,EAAE,mBAAmB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC9C,oEAAoE,CACrE;CACF,CAAC,CAAA"}
|
|
@@ -28,6 +28,10 @@ export interface ISandboxManager {
|
|
|
28
28
|
getLinuxSocksSocketPath(): string | undefined;
|
|
29
29
|
waitForNetworkInitialization(): Promise<boolean>;
|
|
30
30
|
wrapWithSandbox(command: string, binShell?: string, customConfig?: Partial<SandboxRuntimeConfig>, abortSignal?: AbortSignal): Promise<string>;
|
|
31
|
+
wrapWithSandboxArgv(command: string, binShell?: string, customConfig?: Partial<SandboxRuntimeConfig>, abortSignal?: AbortSignal): Promise<{
|
|
32
|
+
argv: string[];
|
|
33
|
+
env: NodeJS.ProcessEnv;
|
|
34
|
+
}>;
|
|
31
35
|
getSandboxViolationStore(): SandboxViolationStore;
|
|
32
36
|
annotateStderrWithSandboxFailures(command: string, stderr: string): string;
|
|
33
37
|
getLinuxGlobPatternWarnings(): string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox-manager.d.ts","sourceRoot":"","sources":["../../src/sandbox/sandbox-manager.ts"],"names":[],"mappings":"AAGA,OAAO,EAA+B,KAAK,MAAM,EAAE,MAAM,cAAc,CAAA;AAKvE,OAAO,KAAK,EAAE,oBAAoB,EAAiB,MAAM,qBAAqB,CAAA;AAC9E,OAAO,KAAK,EACV,kBAAkB,EAClB,uBAAuB,EACvB,wBAAwB,EACxB,wBAAwB,EACzB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAKL,KAAK,sBAAsB,EAE5B,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"sandbox-manager.d.ts","sourceRoot":"","sources":["../../src/sandbox/sandbox-manager.ts"],"names":[],"mappings":"AAGA,OAAO,EAA+B,KAAK,MAAM,EAAE,MAAM,cAAc,CAAA;AAKvE,OAAO,KAAK,EAAE,oBAAoB,EAAiB,MAAM,qBAAqB,CAAA;AAC9E,OAAO,KAAK,EACV,kBAAkB,EAClB,uBAAuB,EACvB,wBAAwB,EACxB,wBAAwB,EACzB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAKL,KAAK,sBAAsB,EAE5B,MAAM,0BAA0B,CAAA;AAmBjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AA8rCpE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,UAAU,CACR,aAAa,EAAE,oBAAoB,EACnC,kBAAkB,CAAC,EAAE,kBAAkB,EACvC,gBAAgB,CAAC,EAAE,OAAO,GACzB,OAAO,CAAC,IAAI,CAAC,CAAA;IAChB,mBAAmB,IAAI,OAAO,CAAA;IAC9B,mBAAmB,IAAI,OAAO,CAAA;IAC9B,iBAAiB,CAAC,aAAa,CAAC,EAAE;QAChC,OAAO,EAAE,MAAM,CAAA;QACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KAChB,GAAG,sBAAsB,CAAA;IAC1B,eAAe,IAAI,uBAAuB,CAAA;IAC1C,gBAAgB,IAAI,wBAAwB,CAAA;IAC5C,2BAA2B,IAAI,wBAAwB,CAAA;IACvD,mBAAmB,IAAI,MAAM,EAAE,GAAG,SAAS,CAAA;IAC3C,oBAAoB,IAAI,OAAO,GAAG,SAAS,CAAA;IAC3C,kBAAkB,IAAI,MAAM,EAAE,GAAG,SAAS,CAAA;IAC1C,mBAAmB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,SAAS,CAAA;IAC3D,4BAA4B,IAAI,OAAO,GAAG,SAAS,CAAA;IACnD,YAAY,IAAI,MAAM,GAAG,SAAS,CAAA;IAClC,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAAA;IACvC,sBAAsB,IAAI,MAAM,GAAG,SAAS,CAAA;IAC5C,uBAAuB,IAAI,MAAM,GAAG,SAAS,CAAA;IAC7C,4BAA4B,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;IAChD,eAAe,CACb,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,EAC5C,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,MAAM,CAAC,CAAA;IAClB,mBAAmB,CACjB,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,EAC5C,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;KAAE,CAAC,CAAA;IACtD,wBAAwB,IAAI,qBAAqB,CAAA;IACjD,iCAAiC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;IAC1E,2BAA2B,IAAI,MAAM,EAAE,CAAA;IACvC,SAAS,IAAI,oBAAoB,GAAG,SAAS,CAAA;IAC7C,SAAS,IAAI,MAAM,GAAG,SAAS,CAAA;IAC/B,YAAY,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI,CAAA;IACnD,mBAAmB,IAAI,IAAI,CAAA;IAC3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AAMD;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,eA4BnB,CAAA"}
|
|
@@ -7,6 +7,7 @@ import { getPlatform, getWslVersion } from '../utils/platform.js';
|
|
|
7
7
|
import * as fs from 'fs';
|
|
8
8
|
import { wrapCommandWithSandboxLinux, initializeLinuxNetworkBridge, checkLinuxDependencies, cleanupBwrapMountPoints, } from './linux-sandbox-utils.js';
|
|
9
9
|
import { wrapCommandWithSandboxMacOS, startMacOSSandboxLogMonitor, } from './macos-sandbox-utils.js';
|
|
10
|
+
import { checkWindowsDependencies, wrapCommandWithSandboxWindows, DEFAULT_WINDOWS_GROUP_NAME, DEFAULT_WINDOWS_PROXY_PORT_RANGE, } from './windows-sandbox-utils.js';
|
|
10
11
|
import { getDefaultWritePaths, containsGlobChars, removeTrailingGlobSuffix, expandGlobPattern, ensureSandboxTmpdir, } from './sandbox-utils.js';
|
|
11
12
|
import { SandboxViolationStore } from './sandbox-violation-store.js';
|
|
12
13
|
import { canonicalizeHost, isValidHost, redactUrl, resolveParentProxy, stripBrackets, } from './parent-proxy.js';
|
|
@@ -135,7 +136,53 @@ function getMitmSocketPath(host) {
|
|
|
135
136
|
}
|
|
136
137
|
return undefined;
|
|
137
138
|
}
|
|
138
|
-
|
|
139
|
+
/**
|
|
140
|
+
* Bind `server.listen()` to the first free port in `[lo, hi]`,
|
|
141
|
+
* skipping `EADDRINUSE`. With `range` undefined, binds to ephemeral
|
|
142
|
+
* port 0 (the previous behaviour).
|
|
143
|
+
*
|
|
144
|
+
* Used on Windows: the WFP loopback permit only covers a fixed port
|
|
145
|
+
* range (default 60080–60089), so the JS proxies must bind inside it
|
|
146
|
+
* for the sandboxed child to reach them. On other platforms the
|
|
147
|
+
* sandbox layer (seatbelt rule, namespace+socat) targets whatever
|
|
148
|
+
* port we landed on, so ephemeral is fine.
|
|
149
|
+
*/
|
|
150
|
+
function listenInRange(server, doListen, range, exclude) {
|
|
151
|
+
return new Promise((resolve, reject) => {
|
|
152
|
+
const [lo, hi] = range ?? [0, 0];
|
|
153
|
+
let port = lo;
|
|
154
|
+
const tryNext = () => {
|
|
155
|
+
while (exclude.has(port) && port <= hi)
|
|
156
|
+
port++;
|
|
157
|
+
if (port > hi) {
|
|
158
|
+
reject(new Error(`No free port in range ${lo}-${hi} (excluding ${[...exclude].join(',')})`));
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
const onListening = () => {
|
|
162
|
+
server.removeListener('error', onError);
|
|
163
|
+
resolve();
|
|
164
|
+
};
|
|
165
|
+
const onError = (err) => {
|
|
166
|
+
// The paired 'listening' once-listener never fired; drop it
|
|
167
|
+
// so retries don't accumulate stale listeners.
|
|
168
|
+
server.removeListener('listening', onListening);
|
|
169
|
+
if (range &&
|
|
170
|
+
err?.code === 'EADDRINUSE' &&
|
|
171
|
+
port < hi) {
|
|
172
|
+
port++;
|
|
173
|
+
tryNext();
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
reject(err ?? new Error('listen error'));
|
|
177
|
+
};
|
|
178
|
+
server.once('error', onError);
|
|
179
|
+
server.once('listening', onListening);
|
|
180
|
+
doListen(range ? port : 0);
|
|
181
|
+
};
|
|
182
|
+
tryNext();
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
async function startHttpProxyServer(sandboxAskCallback, portRange, excludePorts) {
|
|
139
186
|
httpProxyServer = createHttpProxyServer({
|
|
140
187
|
filter: (port, host) => filterNetworkRequest(port, host, sandboxAskCallback),
|
|
141
188
|
getMitmSocketPath,
|
|
@@ -143,46 +190,46 @@ async function startHttpProxyServer(sandboxAskCallback) {
|
|
|
143
190
|
filterRequest: config?.network.filterRequest,
|
|
144
191
|
parentProxy,
|
|
145
192
|
});
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
if (address && typeof address === 'object') {
|
|
156
|
-
server.unref();
|
|
157
|
-
logForDebugging(`HTTP proxy listening on localhost:${address.port}`);
|
|
158
|
-
resolve(address.port);
|
|
159
|
-
}
|
|
160
|
-
else {
|
|
161
|
-
reject(new Error('Failed to get proxy server address'));
|
|
162
|
-
}
|
|
163
|
-
});
|
|
164
|
-
server.listen(0, '127.0.0.1');
|
|
165
|
-
});
|
|
193
|
+
const server = httpProxyServer;
|
|
194
|
+
await listenInRange(server, p => server.listen(p, '127.0.0.1'), portRange, excludePorts);
|
|
195
|
+
const address = server.address();
|
|
196
|
+
if (!address || typeof address !== 'object') {
|
|
197
|
+
throw new Error('Failed to get HTTP proxy server address');
|
|
198
|
+
}
|
|
199
|
+
server.unref();
|
|
200
|
+
logForDebugging(`HTTP proxy listening on localhost:${address.port}`);
|
|
201
|
+
return address.port;
|
|
166
202
|
}
|
|
167
|
-
async function startSocksProxyServer(sandboxAskCallback) {
|
|
203
|
+
async function startSocksProxyServer(sandboxAskCallback, portRange, excludePorts) {
|
|
168
204
|
socksProxyServer = createSocksProxyServer({
|
|
169
205
|
filter: (port, host) => filterNetworkRequest(port, host, sandboxAskCallback),
|
|
170
206
|
parentProxy,
|
|
171
207
|
});
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
208
|
+
const wrapper = socksProxyServer;
|
|
209
|
+
// SocksProxyWrapper.listen() resolves with the bound port; we
|
|
210
|
+
// adapt it to the listenInRange shape by retrying on EADDRINUSE
|
|
211
|
+
// here directly rather than via the once('error') path.
|
|
212
|
+
if (!portRange) {
|
|
213
|
+
const port = await wrapper.listen(0, '127.0.0.1');
|
|
214
|
+
wrapper.unref();
|
|
215
|
+
return port;
|
|
216
|
+
}
|
|
217
|
+
let lastErr;
|
|
218
|
+
for (let p = portRange[0]; p <= portRange[1]; p++) {
|
|
219
|
+
if (excludePorts.has(p))
|
|
220
|
+
continue;
|
|
221
|
+
try {
|
|
222
|
+
const port = await wrapper.listen(p, '127.0.0.1');
|
|
223
|
+
wrapper.unref();
|
|
224
|
+
return port;
|
|
177
225
|
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
});
|
|
226
|
+
catch (err) {
|
|
227
|
+
lastErr = err;
|
|
228
|
+
if (err?.code !== 'EADDRINUSE')
|
|
229
|
+
throw err;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
throw new Error(`No free SOCKS port in range ${portRange[0]}-${portRange[1]}: ${lastErr?.message ?? 'all in use'}`);
|
|
186
233
|
}
|
|
187
234
|
// ============================================================================
|
|
188
235
|
// Public Module Functions (will be exported via namespace)
|
|
@@ -229,6 +276,13 @@ async function initialize(runtimeConfig, sandboxAskCallback, enableLogMonitor =
|
|
|
229
276
|
// Initialize network infrastructure
|
|
230
277
|
initializationPromise = (async () => {
|
|
231
278
|
try {
|
|
279
|
+
// On Windows the WFP loopback permit covers a fixed port
|
|
280
|
+
// range, so the proxies must bind inside it. Other platforms
|
|
281
|
+
// bake the actual ephemeral port into the sandbox profile, so
|
|
282
|
+
// they keep using port 0.
|
|
283
|
+
const portRange = getPlatform() === 'windows'
|
|
284
|
+
? (config.windows?.proxyPortRange ?? DEFAULT_WINDOWS_PROXY_PORT_RANGE)
|
|
285
|
+
: undefined;
|
|
232
286
|
// Conditionally start proxy servers based on config
|
|
233
287
|
let httpProxyPort;
|
|
234
288
|
if (config.network.httpProxyPort !== undefined) {
|
|
@@ -238,7 +292,7 @@ async function initialize(runtimeConfig, sandboxAskCallback, enableLogMonitor =
|
|
|
238
292
|
}
|
|
239
293
|
else {
|
|
240
294
|
// Start local HTTP proxy
|
|
241
|
-
httpProxyPort = await startHttpProxyServer(sandboxAskCallback);
|
|
295
|
+
httpProxyPort = await startHttpProxyServer(sandboxAskCallback, portRange, new Set());
|
|
242
296
|
}
|
|
243
297
|
let socksProxyPort;
|
|
244
298
|
if (config.network.socksProxyPort !== undefined) {
|
|
@@ -247,8 +301,9 @@ async function initialize(runtimeConfig, sandboxAskCallback, enableLogMonitor =
|
|
|
247
301
|
logForDebugging(`Using external SOCKS proxy on port ${socksProxyPort}`);
|
|
248
302
|
}
|
|
249
303
|
else {
|
|
250
|
-
// Start local SOCKS proxy
|
|
251
|
-
|
|
304
|
+
// Start local SOCKS proxy. Skip the port the HTTP proxy
|
|
305
|
+
// already took.
|
|
306
|
+
socksProxyPort = await startSocksProxyServer(sandboxAskCallback, portRange, new Set([httpProxyPort]));
|
|
252
307
|
}
|
|
253
308
|
// Initialize platform-specific infrastructure
|
|
254
309
|
let linuxBridge;
|
|
@@ -284,7 +339,17 @@ function isSupportedPlatform() {
|
|
|
284
339
|
// WSL1 doesn't support bubblewrap
|
|
285
340
|
return getWslVersion() !== '1';
|
|
286
341
|
}
|
|
287
|
-
return platform === 'macos';
|
|
342
|
+
return platform === 'macos' || platform === 'windows';
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Resolve the Windows group reference from config. Used by both the
|
|
346
|
+
* dependency check and `wrapWithSandbox` so they agree.
|
|
347
|
+
*/
|
|
348
|
+
function getWindowsGroupRef() {
|
|
349
|
+
return {
|
|
350
|
+
groupName: config?.windows?.groupName ?? DEFAULT_WINDOWS_GROUP_NAME,
|
|
351
|
+
groupSid: config?.windows?.groupSid,
|
|
352
|
+
};
|
|
288
353
|
}
|
|
289
354
|
function isSandboxingEnabled() {
|
|
290
355
|
// Sandboxing is enabled if config has been set (via initialize())
|
|
@@ -318,6 +383,11 @@ function checkDependencies(ripgrepConfig) {
|
|
|
318
383
|
errors.push(...linuxDeps.errors);
|
|
319
384
|
warnings.push(...linuxDeps.warnings);
|
|
320
385
|
}
|
|
386
|
+
else if (platform === 'windows') {
|
|
387
|
+
const winDeps = checkWindowsDependencies(getWindowsGroupRef(), config?.windows?.wfpSublayerGuid);
|
|
388
|
+
errors.push(...winDeps.errors);
|
|
389
|
+
warnings.push(...winDeps.warnings);
|
|
390
|
+
}
|
|
321
391
|
return { errors, warnings };
|
|
322
392
|
}
|
|
323
393
|
function getFsReadConfig() {
|
|
@@ -418,6 +488,9 @@ function getEnableWeakerNestedSandbox() {
|
|
|
418
488
|
function getEnableWeakerNetworkIsolation() {
|
|
419
489
|
return config?.enableWeakerNetworkIsolation;
|
|
420
490
|
}
|
|
491
|
+
function getAllowAppleEvents() {
|
|
492
|
+
return config?.allowAppleEvents;
|
|
493
|
+
}
|
|
421
494
|
function getRipgrepConfig() {
|
|
422
495
|
return config?.ripgrep ?? { command: 'rg' };
|
|
423
496
|
}
|
|
@@ -560,6 +633,7 @@ async function wrapWithSandbox(command, binShell, customConfig, abortSignal) {
|
|
|
560
633
|
allowBrowserProcess,
|
|
561
634
|
allowGitConfig: getAllowGitConfig(),
|
|
562
635
|
enableWeakerNetworkIsolation: getEnableWeakerNetworkIsolation(),
|
|
636
|
+
allowAppleEvents: getAllowAppleEvents(),
|
|
563
637
|
binShell,
|
|
564
638
|
});
|
|
565
639
|
case 'linux':
|
|
@@ -593,11 +667,54 @@ async function wrapWithSandbox(command, binShell, customConfig, abortSignal) {
|
|
|
593
667
|
socatPath: config?.socatPath,
|
|
594
668
|
abortSignal,
|
|
595
669
|
});
|
|
670
|
+
case 'windows':
|
|
671
|
+
// Windows wraps to an argv array, not a shell string. Forcing
|
|
672
|
+
// callers through wrapWithSandboxArgv() means they spawn with
|
|
673
|
+
// {shell:false}, which is the security boundary that keeps the
|
|
674
|
+
// user's command bytes off the HOST shell.
|
|
675
|
+
throw new Error('wrapWithSandbox() returns a shell string and is not supported ' +
|
|
676
|
+
'on Windows. Use SandboxManager.wrapWithSandboxArgv() and ' +
|
|
677
|
+
'spawn the result with {shell: false}.');
|
|
596
678
|
default:
|
|
597
679
|
// Unsupported platform - this should not happen since isSandboxingEnabled() checks platform support
|
|
598
680
|
throw new Error(`Sandbox configuration is not supported on platform: ${platform}`);
|
|
599
681
|
}
|
|
600
682
|
}
|
|
683
|
+
/**
|
|
684
|
+
* Wrap `command` for the sandbox and return a spawn descriptor:
|
|
685
|
+
* `{ argv, env }`, suitable for
|
|
686
|
+
* `spawn(argv[0], argv.slice(1), {shell: false, env})`.
|
|
687
|
+
*
|
|
688
|
+
* On Windows this is the ONLY supported wrap method (see
|
|
689
|
+
* {@link wrapWithSandbox}); `env` carries the full proxy set that the
|
|
690
|
+
* sandboxed child inherits (`srt-win exec` forwards its environment
|
|
691
|
+
* verbatim — see {@link wrapCommandWithSandboxWindows}). On
|
|
692
|
+
* macOS/Linux `argv` is `[binShell, '-c', <wrapWithSandbox result>]`
|
|
693
|
+
* (proxy env is baked into that command) and `env` is the unchanged
|
|
694
|
+
* `process.env`, so callers can spawn uniformly across platforms.
|
|
695
|
+
*/
|
|
696
|
+
async function wrapWithSandboxArgv(command, binShell, customConfig, abortSignal) {
|
|
697
|
+
const platform = getPlatform();
|
|
698
|
+
if (platform === 'windows') {
|
|
699
|
+
const hasNetworkConfig = customConfig?.network?.allowedDomains !== undefined ||
|
|
700
|
+
config?.network?.allowedDomains !== undefined;
|
|
701
|
+
if (hasNetworkConfig) {
|
|
702
|
+
await waitForNetworkInitialization();
|
|
703
|
+
}
|
|
704
|
+
return wrapCommandWithSandboxWindows({
|
|
705
|
+
command,
|
|
706
|
+
group: getWindowsGroupRef(),
|
|
707
|
+
httpProxyPort: hasNetworkConfig ? getProxyPort() : undefined,
|
|
708
|
+
socksProxyPort: hasNetworkConfig ? getSocksProxyPort() : undefined,
|
|
709
|
+
binShell,
|
|
710
|
+
});
|
|
711
|
+
}
|
|
712
|
+
// macOS/Linux: delegate to the existing string wrapper, then put
|
|
713
|
+
// the result behind `<shell> -c` so the caller's argv-spawn works.
|
|
714
|
+
const wrapped = await wrapWithSandbox(command, binShell, customConfig, abortSignal);
|
|
715
|
+
const shell = binShell ?? '/bin/bash';
|
|
716
|
+
return { argv: [shell, '-c', wrapped], env: process.env };
|
|
717
|
+
}
|
|
601
718
|
/**
|
|
602
719
|
* Get the current sandbox configuration
|
|
603
720
|
* @returns The current configuration, or undefined if not initialized
|
|
@@ -606,7 +723,21 @@ function getConfig() {
|
|
|
606
723
|
return config;
|
|
607
724
|
}
|
|
608
725
|
/**
|
|
609
|
-
* Update the sandbox configuration
|
|
726
|
+
* Update the sandbox configuration in place.
|
|
727
|
+
*
|
|
728
|
+
* **Network/allowlist changes are a live swap**: the running
|
|
729
|
+
* http/socks proxies read `config.network.allowedDomains` /
|
|
730
|
+
* `deniedDomains` per-request (via `filterNetworkRequest`), so
|
|
731
|
+
* reassigning `config` here takes effect on the next connection
|
|
732
|
+
* with no proxy rebind and no port change — on every platform,
|
|
733
|
+
* including Windows. This is what lets a host enable/deny domains
|
|
734
|
+
* for already-running sandboxed children.
|
|
735
|
+
*
|
|
736
|
+
* Filesystem changes (denyRead/denyWrite) are NOT applied live:
|
|
737
|
+
* macOS bakes them into the seatbelt profile at wrap time, and
|
|
738
|
+
* Windows will need an explicit re-stamp. To change FS
|
|
739
|
+
* restrictions, reset() then initialize() with the new config.
|
|
740
|
+
*
|
|
610
741
|
* @param newConfig - The new configuration to use
|
|
611
742
|
*/
|
|
612
743
|
function updateConfig(newConfig) {
|
|
@@ -886,6 +1017,7 @@ export const SandboxManager = {
|
|
|
886
1017
|
getLinuxSocksSocketPath,
|
|
887
1018
|
waitForNetworkInitialization,
|
|
888
1019
|
wrapWithSandbox,
|
|
1020
|
+
wrapWithSandboxArgv,
|
|
889
1021
|
cleanupAfterCommand,
|
|
890
1022
|
reset,
|
|
891
1023
|
getMitmCA: () => mitmCA,
|