@sysid/sandbox-runtime-improved 0.0.49-sysid.2 → 0.0.51-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 +4 -4
- package/dist/cli.js +10 -4
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/sandbox/http-proxy.d.ts +21 -1
- package/dist/sandbox/http-proxy.d.ts.map +1 -1
- package/dist/sandbox/http-proxy.js +27 -2
- package/dist/sandbox/http-proxy.js.map +1 -1
- package/dist/sandbox/linux-sandbox-utils.d.ts +18 -3
- package/dist/sandbox/linux-sandbox-utils.d.ts.map +1 -1
- package/dist/sandbox/linux-sandbox-utils.js +49 -18
- package/dist/sandbox/linux-sandbox-utils.js.map +1 -1
- package/dist/sandbox/macos-sandbox-utils.d.ts +2 -0
- package/dist/sandbox/macos-sandbox-utils.d.ts.map +1 -1
- package/dist/sandbox/macos-sandbox-utils.js +37 -20
- package/dist/sandbox/macos-sandbox-utils.js.map +1 -1
- package/dist/sandbox/mitm-ca.d.ts +47 -0
- package/dist/sandbox/mitm-ca.d.ts.map +1 -0
- package/dist/sandbox/mitm-ca.js +153 -0
- package/dist/sandbox/mitm-ca.js.map +1 -0
- package/dist/sandbox/mitm-leaf.d.ts +28 -0
- package/dist/sandbox/mitm-leaf.d.ts.map +1 -0
- package/dist/sandbox/mitm-leaf.js +94 -0
- package/dist/sandbox/mitm-leaf.js.map +1 -0
- package/dist/sandbox/request-filter.d.ts +46 -0
- package/dist/sandbox/request-filter.d.ts.map +1 -0
- package/dist/sandbox/request-filter.js +106 -0
- package/dist/sandbox/request-filter.js.map +1 -0
- package/dist/sandbox/sandbox-config.d.ts +71 -0
- package/dist/sandbox/sandbox-config.d.ts.map +1 -1
- package/dist/sandbox/sandbox-config.js +55 -0
- package/dist/sandbox/sandbox-config.js.map +1 -1
- package/dist/sandbox/sandbox-manager.d.ts +2 -0
- package/dist/sandbox/sandbox-manager.d.ts.map +1 -1
- package/dist/sandbox/sandbox-manager.js +161 -101
- package/dist/sandbox/sandbox-manager.js.map +1 -1
- package/dist/sandbox/sandbox-utils.d.ts +6 -1
- package/dist/sandbox/sandbox-utils.d.ts.map +1 -1
- package/dist/sandbox/sandbox-utils.js +34 -6
- package/dist/sandbox/sandbox-utils.js.map +1 -1
- package/dist/sandbox/socks-proxy.d.ts.map +1 -1
- package/dist/sandbox/socks-proxy.js +26 -9
- package/dist/sandbox/socks-proxy.js.map +1 -1
- package/dist/sandbox/tls-terminate-proxy.d.ts +41 -0
- package/dist/sandbox/tls-terminate-proxy.d.ts.map +1 -0
- package/dist/sandbox/tls-terminate-proxy.js +167 -0
- package/dist/sandbox/tls-terminate-proxy.js.map +1 -0
- package/package.json +7 -5
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Request-level filter hook for the forward proxy.
|
|
3
|
+
*
|
|
4
|
+
* Library consumers supply a `filterRequest` callback via
|
|
5
|
+
* `network.filterRequest`. It receives the parsed HTTP request (web-standard
|
|
6
|
+
* `Request`) and returns a decision. Applies to plain HTTP through the proxy
|
|
7
|
+
* and, when `tlsTerminate` is configured, to terminated HTTPS. The proxy
|
|
8
|
+
* enforces the decision; the library does not bless any matching DSL.
|
|
9
|
+
*/
|
|
10
|
+
import { Readable } from 'node:stream';
|
|
11
|
+
import { logForDebugging } from '../utils/debug.js';
|
|
12
|
+
const BODYLESS_METHODS = new Set(['GET', 'HEAD', 'OPTIONS']);
|
|
13
|
+
/**
|
|
14
|
+
* Build a `Request`, run the callback, and if denied write the 403 response
|
|
15
|
+
* and return `null`. On allow, returns the body stream the caller must pipe
|
|
16
|
+
* upstream — this is the original `IncomingMessage` when no tee was needed
|
|
17
|
+
* (GET/HEAD/OPTIONS), or the upstream-side branch of the tee otherwise.
|
|
18
|
+
* Callers must pipe the returned stream (not `req`) to the outbound request.
|
|
19
|
+
*
|
|
20
|
+
* For methods that carry a body, `req` is converted to a web stream and
|
|
21
|
+
* `tee()`'d: one branch goes to the callback's `Request.body`, the other is
|
|
22
|
+
* returned for the caller to forward. If the callback never reads its
|
|
23
|
+
* branch, we cancel it after the decision so the tee does not buffer the
|
|
24
|
+
* entire upload.
|
|
25
|
+
*/
|
|
26
|
+
export async function decideAndRespond(filterRequest, req, res, url, signal) {
|
|
27
|
+
let forCallback;
|
|
28
|
+
let forUpstream = req;
|
|
29
|
+
if (!BODYLESS_METHODS.has(req.method ?? 'GET')) {
|
|
30
|
+
const web = Readable.toWeb(req);
|
|
31
|
+
const [a, b] = web.tee();
|
|
32
|
+
forCallback = a;
|
|
33
|
+
forUpstream = Readable.fromWeb(b);
|
|
34
|
+
}
|
|
35
|
+
let webReq;
|
|
36
|
+
try {
|
|
37
|
+
webReq = new Request(url, {
|
|
38
|
+
method: req.method,
|
|
39
|
+
headers: incomingHeaders(req),
|
|
40
|
+
signal,
|
|
41
|
+
...(forCallback ? { body: forCallback, duplex: 'half' } : {}),
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
// Malformed URL/headers from the client — deny rather than crash.
|
|
46
|
+
deny(res, {
|
|
47
|
+
action: 'deny',
|
|
48
|
+
reason: `malformed request: ${err.message}`,
|
|
49
|
+
});
|
|
50
|
+
void forCallback?.cancel();
|
|
51
|
+
forUpstream.destroy();
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
let decision;
|
|
55
|
+
try {
|
|
56
|
+
decision = await filterRequest(webReq);
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
decision = {
|
|
60
|
+
action: 'deny',
|
|
61
|
+
reason: `filterRequest threw: ${err.message}`,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
// If the callback didn't read its branch, cancel it so tee() stops
|
|
65
|
+
// buffering bytes nobody will consume. If it did, the tee already buffered
|
|
66
|
+
// whatever was read; the upstream branch sees the same bytes.
|
|
67
|
+
if (forCallback && !webReq.bodyUsed) {
|
|
68
|
+
void forCallback.cancel();
|
|
69
|
+
}
|
|
70
|
+
if (decision.action === 'allow') {
|
|
71
|
+
logForDebugging(`[request-filter] allow ${req.method} ${url}`);
|
|
72
|
+
return forUpstream;
|
|
73
|
+
}
|
|
74
|
+
deny(res, decision);
|
|
75
|
+
forUpstream.destroy();
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
function deny(res, decision) {
|
|
79
|
+
const reason = decision.reason ?? 'denied by filterRequest';
|
|
80
|
+
logForDebugging(`[request-filter] deny: ${reason}`);
|
|
81
|
+
if (res.headersSent) {
|
|
82
|
+
res.destroy();
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
res.writeHead(403, {
|
|
86
|
+
'Content-Type': 'text/plain',
|
|
87
|
+
'X-Proxy-Error': 'blocked-by-sandbox-runtime',
|
|
88
|
+
});
|
|
89
|
+
res.end(reason + '\n');
|
|
90
|
+
}
|
|
91
|
+
function incomingHeaders(req) {
|
|
92
|
+
const h = new Headers();
|
|
93
|
+
for (const [k, v] of Object.entries(req.headers)) {
|
|
94
|
+
if (v === undefined)
|
|
95
|
+
continue;
|
|
96
|
+
if (Array.isArray(v)) {
|
|
97
|
+
for (const vv of v)
|
|
98
|
+
h.append(k, vv);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
h.append(k, v);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return h;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=request-filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-filter.js","sourceRoot":"","sources":["../../src/sandbox/request-filter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AA0BnD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;AAE5D;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,aAAoC,EACpC,GAAoB,EACpB,GAAmB,EACnB,GAAW,EACX,MAAmB;IAEnB,IAAI,WAAmD,CAAA;IACvD,IAAI,WAAW,GAAa,GAAG,CAAA;IAC/B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC;QAC/C,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAA+B,CAAA;QAC7D,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,CAAA;QACxB,WAAW,GAAG,CAAC,CAAA;QACf,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IACnC,CAAC;IAED,IAAI,MAAe,CAAA;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;YACxB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC;YAC7B,MAAM;YACN,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACvE,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,kEAAkE;QAClE,IAAI,CAAC,GAAG,EAAE;YACR,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,sBAAuB,GAAa,CAAC,OAAO,EAAE;SACvD,CAAC,CAAA;QACF,KAAK,WAAW,EAAE,MAAM,EAAE,CAAA;QAC1B,WAAW,CAAC,OAAO,EAAE,CAAA;QACrB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,QAAyB,CAAA;IAC7B,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,CAAA;IACxC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,QAAQ,GAAG;YACT,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,wBAAyB,GAAa,CAAC,OAAO,EAAE;SACzD,CAAA;IACH,CAAC;IAED,mEAAmE;IACnE,2EAA2E;IAC3E,8DAA8D;IAC9D,IAAI,WAAW,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpC,KAAK,WAAW,CAAC,MAAM,EAAE,CAAA;IAC3B,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAChC,eAAe,CAAC,0BAA0B,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC,CAAA;QAC9D,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IACnB,WAAW,CAAC,OAAO,EAAE,CAAA;IACrB,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,IAAI,CAAC,GAAmB,EAAE,QAAyB;IAC1D,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,yBAAyB,CAAA;IAC3D,eAAe,CAAC,0BAA0B,MAAM,EAAE,CAAC,CAAA;IACnD,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QACpB,GAAG,CAAC,OAAO,EAAE,CAAA;QACb,OAAM;IACR,CAAC;IACD,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,cAAc,EAAE,YAAY;QAC5B,eAAe,EAAE,4BAA4B;KAC9C,CAAC,CAAA;IACF,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;AACxB,CAAC;AAED,SAAS,eAAe,CAAC,GAAoB;IAC3C,MAAM,CAAC,GAAG,IAAI,OAAO,EAAE,CAAA;IACvB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,IAAI,CAAC,KAAK,SAAS;YAAE,SAAQ;QAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,KAAK,MAAM,EAAE,IAAI,CAAC;gBAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QACrC,CAAC;aAAM,CAAC;YACN,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAChB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Configuration for Sandbox Runtime
|
|
3
3
|
* This is the main configuration interface that consumers pass to SandboxManager.initialize()
|
|
4
4
|
*/
|
|
5
|
+
import type { FilterRequestCallback } from './request-filter.js';
|
|
5
6
|
import { z } from 'zod';
|
|
6
7
|
/**
|
|
7
8
|
* Schema for MITM proxy configuration
|
|
@@ -57,6 +58,23 @@ export declare const NetworkConfigSchema: z.ZodObject<{
|
|
|
57
58
|
socketPath: string;
|
|
58
59
|
domains: string[];
|
|
59
60
|
}>>;
|
|
61
|
+
filterRequest: z.ZodOptional<z.ZodType<FilterRequestCallback, z.ZodTypeDef, FilterRequestCallback>>;
|
|
62
|
+
tlsTerminate: z.ZodOptional<z.ZodEffects<z.ZodObject<{
|
|
63
|
+
caCertPath: z.ZodOptional<z.ZodString>;
|
|
64
|
+
caKeyPath: z.ZodOptional<z.ZodString>;
|
|
65
|
+
}, "strip", z.ZodTypeAny, {
|
|
66
|
+
caCertPath?: string | undefined;
|
|
67
|
+
caKeyPath?: string | undefined;
|
|
68
|
+
}, {
|
|
69
|
+
caCertPath?: string | undefined;
|
|
70
|
+
caKeyPath?: string | undefined;
|
|
71
|
+
}>, {
|
|
72
|
+
caCertPath?: string | undefined;
|
|
73
|
+
caKeyPath?: string | undefined;
|
|
74
|
+
}, {
|
|
75
|
+
caCertPath?: string | undefined;
|
|
76
|
+
caKeyPath?: string | undefined;
|
|
77
|
+
}>>;
|
|
60
78
|
parentProxy: z.ZodOptional<z.ZodObject<{
|
|
61
79
|
http: z.ZodOptional<z.ZodString>;
|
|
62
80
|
https: z.ZodOptional<z.ZodString>;
|
|
@@ -83,6 +101,11 @@ export declare const NetworkConfigSchema: z.ZodObject<{
|
|
|
83
101
|
socketPath: string;
|
|
84
102
|
domains: string[];
|
|
85
103
|
} | undefined;
|
|
104
|
+
filterRequest?: FilterRequestCallback | undefined;
|
|
105
|
+
tlsTerminate?: {
|
|
106
|
+
caCertPath?: string | undefined;
|
|
107
|
+
caKeyPath?: string | undefined;
|
|
108
|
+
} | undefined;
|
|
86
109
|
parentProxy?: {
|
|
87
110
|
http?: string | undefined;
|
|
88
111
|
https?: string | undefined;
|
|
@@ -101,6 +124,11 @@ export declare const NetworkConfigSchema: z.ZodObject<{
|
|
|
101
124
|
socketPath: string;
|
|
102
125
|
domains: string[];
|
|
103
126
|
} | undefined;
|
|
127
|
+
filterRequest?: FilterRequestCallback | undefined;
|
|
128
|
+
tlsTerminate?: {
|
|
129
|
+
caCertPath?: string | undefined;
|
|
130
|
+
caKeyPath?: string | undefined;
|
|
131
|
+
} | undefined;
|
|
104
132
|
parentProxy?: {
|
|
105
133
|
http?: string | undefined;
|
|
106
134
|
https?: string | undefined;
|
|
@@ -186,6 +214,23 @@ export declare const SandboxRuntimeConfigSchema: z.ZodObject<{
|
|
|
186
214
|
socketPath: string;
|
|
187
215
|
domains: string[];
|
|
188
216
|
}>>;
|
|
217
|
+
filterRequest: z.ZodOptional<z.ZodType<FilterRequestCallback, z.ZodTypeDef, FilterRequestCallback>>;
|
|
218
|
+
tlsTerminate: z.ZodOptional<z.ZodEffects<z.ZodObject<{
|
|
219
|
+
caCertPath: z.ZodOptional<z.ZodString>;
|
|
220
|
+
caKeyPath: z.ZodOptional<z.ZodString>;
|
|
221
|
+
}, "strip", z.ZodTypeAny, {
|
|
222
|
+
caCertPath?: string | undefined;
|
|
223
|
+
caKeyPath?: string | undefined;
|
|
224
|
+
}, {
|
|
225
|
+
caCertPath?: string | undefined;
|
|
226
|
+
caKeyPath?: string | undefined;
|
|
227
|
+
}>, {
|
|
228
|
+
caCertPath?: string | undefined;
|
|
229
|
+
caKeyPath?: string | undefined;
|
|
230
|
+
}, {
|
|
231
|
+
caCertPath?: string | undefined;
|
|
232
|
+
caKeyPath?: string | undefined;
|
|
233
|
+
}>>;
|
|
189
234
|
parentProxy: z.ZodOptional<z.ZodObject<{
|
|
190
235
|
http: z.ZodOptional<z.ZodString>;
|
|
191
236
|
https: z.ZodOptional<z.ZodString>;
|
|
@@ -212,6 +257,11 @@ export declare const SandboxRuntimeConfigSchema: z.ZodObject<{
|
|
|
212
257
|
socketPath: string;
|
|
213
258
|
domains: string[];
|
|
214
259
|
} | undefined;
|
|
260
|
+
filterRequest?: FilterRequestCallback | undefined;
|
|
261
|
+
tlsTerminate?: {
|
|
262
|
+
caCertPath?: string | undefined;
|
|
263
|
+
caKeyPath?: string | undefined;
|
|
264
|
+
} | undefined;
|
|
215
265
|
parentProxy?: {
|
|
216
266
|
http?: string | undefined;
|
|
217
267
|
https?: string | undefined;
|
|
@@ -230,6 +280,11 @@ export declare const SandboxRuntimeConfigSchema: z.ZodObject<{
|
|
|
230
280
|
socketPath: string;
|
|
231
281
|
domains: string[];
|
|
232
282
|
} | undefined;
|
|
283
|
+
filterRequest?: FilterRequestCallback | undefined;
|
|
284
|
+
tlsTerminate?: {
|
|
285
|
+
caCertPath?: string | undefined;
|
|
286
|
+
caKeyPath?: string | undefined;
|
|
287
|
+
} | undefined;
|
|
233
288
|
parentProxy?: {
|
|
234
289
|
http?: string | undefined;
|
|
235
290
|
https?: string | undefined;
|
|
@@ -284,6 +339,8 @@ export declare const SandboxRuntimeConfigSchema: z.ZodObject<{
|
|
|
284
339
|
argv0?: string | undefined;
|
|
285
340
|
applyPath?: string | undefined;
|
|
286
341
|
}>>;
|
|
342
|
+
bwrapPath: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
|
|
343
|
+
socatPath: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
|
|
287
344
|
}, "strip", z.ZodTypeAny, {
|
|
288
345
|
network: {
|
|
289
346
|
allowedDomains: string[];
|
|
@@ -298,6 +355,11 @@ export declare const SandboxRuntimeConfigSchema: z.ZodObject<{
|
|
|
298
355
|
socketPath: string;
|
|
299
356
|
domains: string[];
|
|
300
357
|
} | undefined;
|
|
358
|
+
filterRequest?: FilterRequestCallback | undefined;
|
|
359
|
+
tlsTerminate?: {
|
|
360
|
+
caCertPath?: string | undefined;
|
|
361
|
+
caKeyPath?: string | undefined;
|
|
362
|
+
} | undefined;
|
|
301
363
|
parentProxy?: {
|
|
302
364
|
http?: string | undefined;
|
|
303
365
|
https?: string | undefined;
|
|
@@ -326,6 +388,8 @@ export declare const SandboxRuntimeConfigSchema: z.ZodObject<{
|
|
|
326
388
|
argv0?: string | undefined;
|
|
327
389
|
applyPath?: string | undefined;
|
|
328
390
|
} | undefined;
|
|
391
|
+
bwrapPath?: string | undefined;
|
|
392
|
+
socatPath?: string | undefined;
|
|
329
393
|
}, {
|
|
330
394
|
network: {
|
|
331
395
|
allowedDomains: string[];
|
|
@@ -340,6 +404,11 @@ export declare const SandboxRuntimeConfigSchema: z.ZodObject<{
|
|
|
340
404
|
socketPath: string;
|
|
341
405
|
domains: string[];
|
|
342
406
|
} | undefined;
|
|
407
|
+
filterRequest?: FilterRequestCallback | undefined;
|
|
408
|
+
tlsTerminate?: {
|
|
409
|
+
caCertPath?: string | undefined;
|
|
410
|
+
caKeyPath?: string | undefined;
|
|
411
|
+
} | undefined;
|
|
343
412
|
parentProxy?: {
|
|
344
413
|
http?: string | undefined;
|
|
345
414
|
https?: string | undefined;
|
|
@@ -368,6 +437,8 @@ export declare const SandboxRuntimeConfigSchema: z.ZodObject<{
|
|
|
368
437
|
argv0?: string | undefined;
|
|
369
438
|
applyPath?: string | undefined;
|
|
370
439
|
} | undefined;
|
|
440
|
+
bwrapPath?: string | undefined;
|
|
441
|
+
socatPath?: string | undefined;
|
|
371
442
|
}>;
|
|
372
443
|
export type MitmProxyConfig = z.infer<typeof MitmProxyConfigSchema>;
|
|
373
444
|
export type ParentProxyConfig = z.infer<typeof ParentProxyConfigSchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox-config.d.ts","sourceRoot":"","sources":["../../src/sandbox/sandbox-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+DrC,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,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAA"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Configuration for Sandbox Runtime
|
|
3
3
|
* This is the main configuration interface that consumers pass to SandboxManager.initialize()
|
|
4
4
|
*/
|
|
5
|
+
import { isAbsolute } from 'node:path';
|
|
5
6
|
import { z } from 'zod';
|
|
6
7
|
/**
|
|
7
8
|
* Schema for domain patterns (e.g., "example.com", "*.npmjs.org")
|
|
@@ -42,6 +43,17 @@ const domainPatternSchema = z.string().refine(val => {
|
|
|
42
43
|
* Schema for filesystem paths
|
|
43
44
|
*/
|
|
44
45
|
const filesystemPathSchema = z.string().min(1, 'Path cannot be empty');
|
|
46
|
+
/**
|
|
47
|
+
* Schema for an absolute path to an external binary.
|
|
48
|
+
* Relative paths are rejected to prevent PATH/CWD-based hijacking — these
|
|
49
|
+
* overrides are intended for admin-managed installs at fixed locations.
|
|
50
|
+
*/
|
|
51
|
+
const binaryPathSchema = z
|
|
52
|
+
.string()
|
|
53
|
+
.min(1, 'Path cannot be empty')
|
|
54
|
+
.refine(val => isAbsolute(val), {
|
|
55
|
+
message: 'Binary path must be absolute',
|
|
56
|
+
});
|
|
45
57
|
/**
|
|
46
58
|
* Schema for MITM proxy configuration
|
|
47
59
|
* Allows routing specific domains through an upstream MITM proxy via Unix socket
|
|
@@ -121,6 +133,41 @@ export const NetworkConfigSchema = z.object({
|
|
|
121
133
|
.optional()
|
|
122
134
|
.describe('Port of an external SOCKS proxy to use instead of starting a local one. When provided, the library will skip starting its own SOCKS proxy and use this port. The external proxy must handle domain filtering.'),
|
|
123
135
|
mitmProxy: MitmProxyConfigSchema.optional().describe('Optional MITM proxy configuration. Routes matching domains through an upstream proxy via Unix socket while SRT still handles allow/deny filtering.'),
|
|
136
|
+
filterRequest: z
|
|
137
|
+
.custom(v => typeof v === 'function', {
|
|
138
|
+
message: 'filterRequest must be a function',
|
|
139
|
+
})
|
|
140
|
+
.optional()
|
|
141
|
+
.describe('Per-request filter callback. Receives the parsed HTTP request ' +
|
|
142
|
+
'(web-standard Request) and returns {action, reason?}. Denied ' +
|
|
143
|
+
'requests get a 403 with the reason. If the callback throws, the ' +
|
|
144
|
+
'request is denied. Applies to plain HTTP through the proxy and, ' +
|
|
145
|
+
'when tlsTerminate is configured, to terminated HTTPS. SRT does not ' +
|
|
146
|
+
'provide a policy language; library consumers own matching.'),
|
|
147
|
+
tlsTerminate: z
|
|
148
|
+
.object({
|
|
149
|
+
caCertPath: z
|
|
150
|
+
.string()
|
|
151
|
+
.min(1)
|
|
152
|
+
.optional()
|
|
153
|
+
.describe('Path to a PEM-encoded CA certificate. The sandboxed child is ' +
|
|
154
|
+
'configured to trust this CA, and the TLS-terminating proxy uses ' +
|
|
155
|
+
'it to sign per-host certificates. If omitted, SRT generates an ' +
|
|
156
|
+
'ephemeral CA into a temp directory for the lifetime of the ' +
|
|
157
|
+
'session.'),
|
|
158
|
+
caKeyPath: z
|
|
159
|
+
.string()
|
|
160
|
+
.min(1)
|
|
161
|
+
.optional()
|
|
162
|
+
.describe('Path to the PEM-encoded private key for caCertPath.'),
|
|
163
|
+
})
|
|
164
|
+
.refine(o => !o.caCertPath === !o.caKeyPath, {
|
|
165
|
+
message: 'caCertPath and caKeyPath must be provided together',
|
|
166
|
+
})
|
|
167
|
+
.optional()
|
|
168
|
+
.describe('[EXPERIMENTAL] Enable in-process TLS termination so HTTPS ' +
|
|
169
|
+
'request/response bodies are visible to SRT. Provide a CA cert+key, ' +
|
|
170
|
+
'or omit both to have SRT generate an ephemeral one.'),
|
|
124
171
|
parentProxy: ParentProxyConfigSchema.optional().describe("Upstream HTTP proxy for outbound connections. When set, SRT's proxy " +
|
|
125
172
|
'tunnels non-mitmProxy traffic through this parent instead of ' +
|
|
126
173
|
'connecting directly. Falls back to HTTP_PROXY/HTTPS_PROXY/NO_PROXY ' +
|
|
@@ -223,5 +270,13 @@ export const SandboxRuntimeConfigSchema = z.object({
|
|
|
223
270
|
'that spawn a Chrome/Chromium subprocess. Without this, Chrome will crash on startup ' +
|
|
224
271
|
'due to denied Mach service lookups and bootstrap registrations.'),
|
|
225
272
|
seccomp: SeccompConfigSchema.optional().describe('Custom seccomp binary paths (Linux only).'),
|
|
273
|
+
bwrapPath: binaryPathSchema
|
|
274
|
+
.optional()
|
|
275
|
+
.describe('Linux only: absolute path to the bwrap (bubblewrap) binary. ' +
|
|
276
|
+
'When set, this path is used directly instead of resolving "bwrap" via PATH.'),
|
|
277
|
+
socatPath: binaryPathSchema
|
|
278
|
+
.optional()
|
|
279
|
+
.describe('Linux only: absolute path to the socat binary. ' +
|
|
280
|
+
'When set, this path is used directly instead of resolving "socat" via PATH.'),
|
|
226
281
|
});
|
|
227
282
|
//# sourceMappingURL=sandbox-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox-config.js","sourceRoot":"","sources":["../../src/sandbox/sandbox-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"sandbox-config.js","sourceRoot":"","sources":["../../src/sandbox/sandbox-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type MitmCA } from './mitm-ca.js';
|
|
1
2
|
import type { SandboxRuntimeConfig } from './sandbox-config.js';
|
|
2
3
|
import type { SandboxAskCallback, FsReadRestrictionConfig, FsWriteRestrictionConfig, NetworkRestrictionConfig } from './sandbox-schemas.js';
|
|
3
4
|
import { type SandboxDependencyCheck } from './linux-sandbox-utils.js';
|
|
@@ -31,6 +32,7 @@ export interface ISandboxManager {
|
|
|
31
32
|
annotateStderrWithSandboxFailures(command: string, stderr: string): string;
|
|
32
33
|
getLinuxGlobPatternWarnings(): string[];
|
|
33
34
|
getConfig(): SandboxRuntimeConfig | undefined;
|
|
35
|
+
getMitmCA(): MitmCA | undefined;
|
|
34
36
|
updateConfig(newConfig: SandboxRuntimeConfig): void;
|
|
35
37
|
cleanupAfterCommand(): void;
|
|
36
38
|
reset(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox-manager.d.ts","sourceRoot":"","sources":["../../src/sandbox/sandbox-manager.ts"],"names":[],"mappings":"
|
|
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;AAYjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AAwgCpE;;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,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,eA2BnB,CAAA"}
|