@overkill-dev/run 0.0.16 → 0.0.18
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/engine/case-execution.d.ts +22 -0
- package/engine/case-execution.d.ts.map +1 -0
- package/engine/case-execution.js +10 -1
- package/engine/case-execution.js.map +1 -1
- package/engine/execution-result.js +4 -0
- package/engine/execution-result.js.map +1 -1
- package/engine/execution-supervision.d.ts +2 -0
- package/engine/execution-supervision.d.ts.map +1 -1
- package/engine/execution-supervision.js +27 -10
- package/engine/execution-supervision.js.map +1 -1
- package/engine/execution.d.ts +4 -1
- package/engine/execution.d.ts.map +1 -1
- package/engine/execution.js +9 -1
- package/engine/execution.js.map +1 -1
- package/engine/run-result.d.ts +3 -1
- package/engine/run-result.d.ts.map +1 -1
- package/engine/run-result.js.map +1 -1
- package/package.json +6 -3
- package/packages/run/run.entry-point.d.ts +1 -1
- package/packages/run/run.entry-point.d.ts.map +1 -1
- package/packages/run/run.entry-point.js +1 -1
- package/packages/run/run.entry-point.js.map +1 -1
- package/readme.md +38 -0
- package/run/capability-policy.d.ts +47 -0
- package/run/capability-policy.d.ts.map +1 -0
- package/run/capability-policy.js +395 -0
- package/run/capability-policy.js.map +1 -0
- package/run/command-line-runner.d.ts.map +1 -1
- package/run/command-line-runner.js +5 -2
- package/run/command-line-runner.js.map +1 -1
- package/run/node-host-readers.js +13 -0
- package/run/node-host-readers.js.map +1 -0
- package/run/node-process-capability-restrictions.js +92 -0
- package/run/node-process-capability-restrictions.js.map +1 -0
- package/run/run-config-schema.d.ts +174 -0
- package/run/run-config-schema.d.ts.map +1 -0
- package/run/run-config-schema.js +78 -0
- package/run/run-config-schema.js.map +1 -0
- package/run/run-config.d.ts +13 -173
- package/run/run-config.d.ts.map +1 -1
- package/run/run-config.js +2 -77
- package/run/run-config.js.map +1 -1
- package/run/run-orchestrator.entry-point.d.ts +2 -0
- package/run/run-orchestrator.entry-point.d.ts.map +1 -0
- package/run/run-orchestrator.entry-point.js +31 -0
- package/run/run-orchestrator.entry-point.js.map +1 -0
- package/run/run-orchestrator.js +27 -33
- package/run/run-orchestrator.js.map +1 -1
- package/run/run-support.js +101 -0
- package/run/run-support.js.map +1 -0
- package/run/run-types.d.ts +6 -1
- package/run/run-types.d.ts.map +1 -1
- package/run/run-types.js.map +1 -1
- package/run/run.js +76 -116
- package/run/run.js.map +1 -1
- package/run/supervised-child-process.js +127 -0
- package/run/supervised-child-process.js.map +1 -0
- package/run/supervised-run-state.js +109 -0
- package/run/supervised-run-state.js.map +1 -0
- package/run/supervised-run.js +17 -67
- package/run/supervised-run.js.map +1 -1
- package/sbom.cdx.json +4 -4
- package/run/run-orchestrator.d.ts +0 -3
- package/run/run-orchestrator.d.ts.map +0 -1
|
@@ -0,0 +1,395 @@
|
|
|
1
|
+
import asyncHooks, { AsyncLocalStorage } from 'node:async_hooks';
|
|
2
|
+
import diagnosticsChannel from 'node:diagnostics_channel';
|
|
3
|
+
import { caseIdentityKey } from "../engine/identity.js";
|
|
4
|
+
const runtimePolicyCapabilities = {
|
|
5
|
+
childProcess: 'child-process',
|
|
6
|
+
console: 'console',
|
|
7
|
+
cryptoRandom: 'crypto-random',
|
|
8
|
+
dynamicModuleLoad: 'dynamic-module-load',
|
|
9
|
+
fileRead: 'fs-read',
|
|
10
|
+
fileWrite: 'fs-write',
|
|
11
|
+
inspector: 'inspector',
|
|
12
|
+
network: 'net',
|
|
13
|
+
openSslStore: 'openssl-store',
|
|
14
|
+
processEnvironment: 'process-env',
|
|
15
|
+
processExecute: 'process-execute',
|
|
16
|
+
rawStderr: 'raw-stderr',
|
|
17
|
+
rawStdout: 'raw-stdout',
|
|
18
|
+
timer: 'timer',
|
|
19
|
+
wasi: 'wasi',
|
|
20
|
+
webLocks: 'web-locks',
|
|
21
|
+
worker: 'worker'
|
|
22
|
+
};
|
|
23
|
+
const asyncFileResourceTypes = new Set([
|
|
24
|
+
'FILEHANDLE',
|
|
25
|
+
'FILEHANDLECLOSEREQ',
|
|
26
|
+
`${['FS', 'REQ'].join('')}CALLBACK`,
|
|
27
|
+
`${['FS', 'REQ'].join('')}PROMISE`
|
|
28
|
+
]);
|
|
29
|
+
const processExecuteChannel = ['process.', 'exec', 've'].join('');
|
|
30
|
+
const randomResourceReport = {
|
|
31
|
+
capability: runtimePolicyCapabilities.cryptoRandom,
|
|
32
|
+
message: 'Runtime policy violation: asynchronous random resource.',
|
|
33
|
+
strictness: 'observed'
|
|
34
|
+
};
|
|
35
|
+
const staticAsyncResourceReports = {
|
|
36
|
+
RANDOMBYTESREQUEST: randomResourceReport,
|
|
37
|
+
RANDOMPRIMEREQUEST: randomResourceReport,
|
|
38
|
+
WORKER: {
|
|
39
|
+
capability: runtimePolicyCapabilities.worker,
|
|
40
|
+
message: 'Runtime policy violation: worker resource created.',
|
|
41
|
+
strictness: 'observed'
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
const diagnosticsCapabilities = {
|
|
45
|
+
'console.debug': runtimePolicyCapabilities.console,
|
|
46
|
+
'console.error': runtimePolicyCapabilities.console,
|
|
47
|
+
'console.info': runtimePolicyCapabilities.console,
|
|
48
|
+
'console.log': runtimePolicyCapabilities.console,
|
|
49
|
+
'console.warn': runtimePolicyCapabilities.console,
|
|
50
|
+
'http.client.request.created': runtimePolicyCapabilities.network,
|
|
51
|
+
'http.client.request.error': runtimePolicyCapabilities.network,
|
|
52
|
+
'http.client.request.start': runtimePolicyCapabilities.network,
|
|
53
|
+
'locks.request.end': runtimePolicyCapabilities.webLocks,
|
|
54
|
+
'locks.request.grant': runtimePolicyCapabilities.webLocks,
|
|
55
|
+
'locks.request.miss': runtimePolicyCapabilities.webLocks,
|
|
56
|
+
'locks.request.start': runtimePolicyCapabilities.webLocks,
|
|
57
|
+
'net.client.socket': runtimePolicyCapabilities.network,
|
|
58
|
+
'node:permission-model:child': runtimePolicyCapabilities.childProcess,
|
|
59
|
+
'node:permission-model:ffi': runtimePolicyCapabilities.worker,
|
|
60
|
+
'node:permission-model:fs': runtimePolicyCapabilities.fileRead,
|
|
61
|
+
'node:permission-model:inspector': runtimePolicyCapabilities.inspector,
|
|
62
|
+
'node:permission-model:net': runtimePolicyCapabilities.network,
|
|
63
|
+
'node:permission-model:openssl-store': runtimePolicyCapabilities.openSslStore,
|
|
64
|
+
'node:permission-model:wasi': runtimePolicyCapabilities.wasi,
|
|
65
|
+
'node:permission-model:worker': runtimePolicyCapabilities.worker,
|
|
66
|
+
[processExecuteChannel]: runtimePolicyCapabilities.processExecute,
|
|
67
|
+
'tracing:module.import:asyncStart': runtimePolicyCapabilities.dynamicModuleLoad,
|
|
68
|
+
'tracing:module.import:start': runtimePolicyCapabilities.dynamicModuleLoad,
|
|
69
|
+
'tracing:module.require:start': runtimePolicyCapabilities.dynamicModuleLoad,
|
|
70
|
+
'udp.socket': runtimePolicyCapabilities.network,
|
|
71
|
+
worker_threads: runtimePolicyCapabilities.worker
|
|
72
|
+
};
|
|
73
|
+
function sortedEnvironmentEntries(environment) {
|
|
74
|
+
return Object
|
|
75
|
+
.entries(environment)
|
|
76
|
+
.filter(function hasValue(entry) {
|
|
77
|
+
return entry[1] !== undefined;
|
|
78
|
+
})
|
|
79
|
+
.toSorted(function compareEnvironmentEntries(first, second) {
|
|
80
|
+
return first[0].localeCompare(second[0]);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
function environmentSnapshot(dependencies) {
|
|
84
|
+
const environment = dependencies.readEnvironment();
|
|
85
|
+
return {
|
|
86
|
+
entries: sortedEnvironmentEntries(environment),
|
|
87
|
+
object: environment
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
export function isRuntimeCapabilityPolicyEnvironment(value) {
|
|
91
|
+
return typeof value === 'object' &&
|
|
92
|
+
value !== null &&
|
|
93
|
+
Object.values(value).every(function validEnvironmentValue(entry) {
|
|
94
|
+
return typeof entry === 'string' || entry === undefined;
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
export function isWebStorageLike(value) {
|
|
98
|
+
if (typeof value !== 'object' || value === null) {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
const length = Reflect.get(value, 'length');
|
|
102
|
+
const getItem = Reflect.get(value, 'getItem');
|
|
103
|
+
const key = Reflect.get(value, 'key');
|
|
104
|
+
return typeof length === 'number' &&
|
|
105
|
+
typeof getItem === 'function' &&
|
|
106
|
+
typeof key === 'function';
|
|
107
|
+
}
|
|
108
|
+
function storageSnapshot(dependencies, name) {
|
|
109
|
+
const storage = dependencies.readStorage(name);
|
|
110
|
+
if (!isWebStorageLike(storage)) {
|
|
111
|
+
return {
|
|
112
|
+
entries: [],
|
|
113
|
+
object: null
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
const entries = Array
|
|
117
|
+
.from({ length: storage.length }, function toStorageEntry(_unusedValue, index) {
|
|
118
|
+
const key = storage.key(index);
|
|
119
|
+
return key === null ? null : [key, storage.getItem(key) ?? ''];
|
|
120
|
+
})
|
|
121
|
+
.filter(function isEntry(entry) {
|
|
122
|
+
return entry !== null;
|
|
123
|
+
})
|
|
124
|
+
.toSorted(function compareStorageEntries(first, second) {
|
|
125
|
+
return first[0].localeCompare(second[0]);
|
|
126
|
+
});
|
|
127
|
+
return {
|
|
128
|
+
entries,
|
|
129
|
+
object: storage
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
function entriesChanged(before, after) {
|
|
133
|
+
if (before.length !== after.length) {
|
|
134
|
+
return true;
|
|
135
|
+
}
|
|
136
|
+
return before.some(function changed(entry, index) {
|
|
137
|
+
const afterEntry = after[index];
|
|
138
|
+
return afterEntry?.[0] !== entry[0] || afterEntry[1] !== entry[1];
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
function permissionCapability(message, fallback) {
|
|
142
|
+
if (typeof message !== 'object' || message === null) {
|
|
143
|
+
return fallback;
|
|
144
|
+
}
|
|
145
|
+
const permission = String(Reflect.get(message, 'permission'));
|
|
146
|
+
if (permission === 'FileSystemWrite') {
|
|
147
|
+
return runtimePolicyCapabilities.fileWrite;
|
|
148
|
+
}
|
|
149
|
+
if (permission === 'FileSystemRead') {
|
|
150
|
+
return runtimePolicyCapabilities.fileRead;
|
|
151
|
+
}
|
|
152
|
+
return fallback;
|
|
153
|
+
}
|
|
154
|
+
function asyncResourceReport(type, hasActiveCase) {
|
|
155
|
+
if (type === 'Timeout' && hasActiveCase) {
|
|
156
|
+
return {
|
|
157
|
+
capability: runtimePolicyCapabilities.timer,
|
|
158
|
+
message: 'Runtime policy violation: setTimeout/setInterval created a timer.',
|
|
159
|
+
strictness: 'observed'
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
if (asyncFileResourceTypes.has(type)) {
|
|
163
|
+
return {
|
|
164
|
+
capability: runtimePolicyCapabilities.fileRead,
|
|
165
|
+
message: `Runtime policy violation: asynchronous file resource ${type}.`,
|
|
166
|
+
strictness: 'observed'
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
return staticAsyncResourceReports[type] ?? null;
|
|
170
|
+
}
|
|
171
|
+
function createAsyncResourceHook(activeCaseStorage, recordViolation) {
|
|
172
|
+
const createHookKey = 'createHook';
|
|
173
|
+
const createHook = asyncHooks[createHookKey];
|
|
174
|
+
return createHook({
|
|
175
|
+
init(_asyncId, type) {
|
|
176
|
+
const report = asyncResourceReport(type, activeCaseStorage.getStore() !== undefined);
|
|
177
|
+
if (report !== null) {
|
|
178
|
+
recordViolation(report);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
function runtimePolicyError(violation) {
|
|
184
|
+
return {
|
|
185
|
+
attributedTo: violation.caseId,
|
|
186
|
+
cause: violation,
|
|
187
|
+
message: violation.message,
|
|
188
|
+
subtype: 'runtime-policy'
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
function ignoredLoadCapability(capability) {
|
|
192
|
+
return capability === runtimePolicyCapabilities.dynamicModuleLoad ||
|
|
193
|
+
capability === runtimePolicyCapabilities.fileRead;
|
|
194
|
+
}
|
|
195
|
+
function ignoredViolation(violation, activeCase, loadComplete) {
|
|
196
|
+
return activeCase === undefined &&
|
|
197
|
+
(violation.capability === runtimePolicyCapabilities.fileRead ||
|
|
198
|
+
!loadComplete && ignoredLoadCapability(violation.capability));
|
|
199
|
+
}
|
|
200
|
+
function violationPhase(activeCase, loadComplete) {
|
|
201
|
+
if (activeCase !== undefined) {
|
|
202
|
+
return 'body';
|
|
203
|
+
}
|
|
204
|
+
return loadComplete ? 'out-of-test' : 'load';
|
|
205
|
+
}
|
|
206
|
+
function createDiagnosticsSubscriptions(recordViolation) {
|
|
207
|
+
return Object.entries(diagnosticsCapabilities).map(function subscribeToChannel([name, capability]) {
|
|
208
|
+
const channel = diagnosticsChannel.channel(name);
|
|
209
|
+
const listener = function recordDiagnostic(message) {
|
|
210
|
+
const resolvedCapability = name.startsWith('node:permission-model:')
|
|
211
|
+
? permissionCapability(message, capability)
|
|
212
|
+
: capability;
|
|
213
|
+
recordViolation({
|
|
214
|
+
capability: resolvedCapability,
|
|
215
|
+
message: `Runtime policy violation: ${resolvedCapability}.`,
|
|
216
|
+
strictness: name.startsWith('node:permission-model:') ? 'blocked' : 'observed'
|
|
217
|
+
});
|
|
218
|
+
};
|
|
219
|
+
channel.subscribe(listener);
|
|
220
|
+
return {
|
|
221
|
+
unsubscribe() {
|
|
222
|
+
channel.unsubscribe(listener);
|
|
223
|
+
}
|
|
224
|
+
};
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
function environmentChanged(before, after) {
|
|
228
|
+
return before.environment.object !== after.object ||
|
|
229
|
+
entriesChanged(before.environment.entries, after.entries);
|
|
230
|
+
}
|
|
231
|
+
function storageChanged(before, after) {
|
|
232
|
+
return before.object !== after.object || entriesChanged(before.entries, after.entries);
|
|
233
|
+
}
|
|
234
|
+
function takeSnapshots(dependencies) {
|
|
235
|
+
return {
|
|
236
|
+
environment: environmentSnapshot(dependencies),
|
|
237
|
+
localStorage: storageSnapshot(dependencies, 'localStorage'),
|
|
238
|
+
sessionStorage: storageSnapshot(dependencies, 'sessionStorage')
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
function recordSnapshotChanges(before, dependencies, record) {
|
|
242
|
+
const afterEnvironment = environmentSnapshot(dependencies);
|
|
243
|
+
const afterSessionStorage = storageSnapshot(dependencies, 'sessionStorage');
|
|
244
|
+
const afterLocalStorage = storageSnapshot(dependencies, 'localStorage');
|
|
245
|
+
if (environmentChanged(before, afterEnvironment)) {
|
|
246
|
+
record({
|
|
247
|
+
capability: runtimePolicyCapabilities.processEnvironment,
|
|
248
|
+
message: 'Runtime policy violation: process.env changed.',
|
|
249
|
+
strictness: 'observed'
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
if (storageChanged(before.sessionStorage, afterSessionStorage)) {
|
|
253
|
+
record({
|
|
254
|
+
capability: runtimePolicyCapabilities.fileWrite,
|
|
255
|
+
message: 'Runtime policy violation: sessionStorage changed.',
|
|
256
|
+
strictness: 'observed'
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
if (storageChanged(before.localStorage, afterLocalStorage)) {
|
|
260
|
+
record({
|
|
261
|
+
capability: runtimePolicyCapabilities.fileWrite,
|
|
262
|
+
message: 'Runtime policy violation: localStorage changed.',
|
|
263
|
+
strictness: 'observed'
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
function installRuntimePolicyRestrictions(dependencies, record) {
|
|
268
|
+
const restoreProcessExecution = dependencies.installProcessExecutionRestriction(function recordProcessExecutionViolation(message) {
|
|
269
|
+
record({
|
|
270
|
+
capability: runtimePolicyCapabilities.processExecute,
|
|
271
|
+
message,
|
|
272
|
+
strictness: 'blocked'
|
|
273
|
+
});
|
|
274
|
+
});
|
|
275
|
+
const restoreIpc = dependencies.installIpcRestriction(function recordIpcViolation(message) {
|
|
276
|
+
record({
|
|
277
|
+
capability: runtimePolicyCapabilities.childProcess,
|
|
278
|
+
message,
|
|
279
|
+
strictness: 'blocked'
|
|
280
|
+
});
|
|
281
|
+
});
|
|
282
|
+
return function restoreRuntimePolicyRestrictions() {
|
|
283
|
+
restoreIpc();
|
|
284
|
+
restoreProcessExecution();
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
function startRuntimePolicyMonitoring(activeCaseStorage, record, dependencies) {
|
|
288
|
+
const subscriptions = createDiagnosticsSubscriptions(record);
|
|
289
|
+
const hook = createAsyncResourceHook(activeCaseStorage, record);
|
|
290
|
+
const restoreRestrictions = installRuntimePolicyRestrictions(dependencies, record);
|
|
291
|
+
hook.enable();
|
|
292
|
+
return { hook, restoreRestrictions, subscriptions };
|
|
293
|
+
}
|
|
294
|
+
function stopRuntimePolicyMonitoring(monitoring) {
|
|
295
|
+
monitoring.hook.disable();
|
|
296
|
+
monitoring.restoreRestrictions();
|
|
297
|
+
for (const subscription of monitoring.subscriptions) {
|
|
298
|
+
subscription.unsubscribe();
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
function rawOutputPolicyError(capability, message) {
|
|
302
|
+
return runtimePolicyError({
|
|
303
|
+
capability,
|
|
304
|
+
caseId: null,
|
|
305
|
+
message,
|
|
306
|
+
phase: 'out-of-test',
|
|
307
|
+
strictness: 'observed'
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
function rawOutputPolicyErrors(options) {
|
|
311
|
+
const errors = [];
|
|
312
|
+
if (options.observedStdout) {
|
|
313
|
+
errors.push(rawOutputPolicyError('raw-stdout', 'Runtime policy violation: unexpected stdout output.'));
|
|
314
|
+
}
|
|
315
|
+
if (options.observedStderr) {
|
|
316
|
+
errors.push(rawOutputPolicyError('raw-stderr', 'Runtime policy violation: unexpected stderr output.'));
|
|
317
|
+
}
|
|
318
|
+
return errors;
|
|
319
|
+
}
|
|
320
|
+
export function createRuntimeCapabilityPolicy(options) {
|
|
321
|
+
const activeCaseStorage = new AsyncLocalStorage();
|
|
322
|
+
const caseErrors = new Map();
|
|
323
|
+
const runErrors = [];
|
|
324
|
+
let loadComplete = false;
|
|
325
|
+
function record(violation) {
|
|
326
|
+
const activeCase = activeCaseStorage.getStore();
|
|
327
|
+
if (ignoredViolation(violation, activeCase, loadComplete)) {
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
const completedViolation = {
|
|
331
|
+
...violation,
|
|
332
|
+
caseId: activeCase?.id ?? null,
|
|
333
|
+
phase: violationPhase(activeCase, loadComplete)
|
|
334
|
+
};
|
|
335
|
+
const error = runtimePolicyError(completedViolation);
|
|
336
|
+
if (activeCase === undefined) {
|
|
337
|
+
runErrors.push(error);
|
|
338
|
+
return;
|
|
339
|
+
}
|
|
340
|
+
caseErrors.set(activeCase.key, [...caseErrors.get(activeCase.key) ?? [], error]);
|
|
341
|
+
}
|
|
342
|
+
function tryRecord(violation) {
|
|
343
|
+
try {
|
|
344
|
+
record(violation);
|
|
345
|
+
}
|
|
346
|
+
catch {
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
const monitoring = startRuntimePolicyMonitoring(activeCaseStorage, tryRecord, options.dependencies);
|
|
350
|
+
return {
|
|
351
|
+
recordViolation(capability, message, strictness) {
|
|
352
|
+
record({ capability, message, strictness });
|
|
353
|
+
},
|
|
354
|
+
async runCase(testCase, run) {
|
|
355
|
+
loadComplete = true;
|
|
356
|
+
const activeCase = {
|
|
357
|
+
id: testCase.id,
|
|
358
|
+
key: caseIdentityKey(testCase.id)
|
|
359
|
+
};
|
|
360
|
+
const before = takeSnapshots(options.dependencies);
|
|
361
|
+
try {
|
|
362
|
+
return await activeCaseStorage.run(activeCase, run);
|
|
363
|
+
}
|
|
364
|
+
finally {
|
|
365
|
+
activeCaseStorage.run(activeCase, function recordCaseSnapshotChanges() {
|
|
366
|
+
recordSnapshotChanges(before, options.dependencies, record);
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
},
|
|
370
|
+
async runLoad(run) {
|
|
371
|
+
const before = takeSnapshots(options.dependencies);
|
|
372
|
+
try {
|
|
373
|
+
return await run();
|
|
374
|
+
}
|
|
375
|
+
finally {
|
|
376
|
+
recordSnapshotChanges(before, options.dependencies, record);
|
|
377
|
+
loadComplete = true;
|
|
378
|
+
}
|
|
379
|
+
},
|
|
380
|
+
takeCaseErrors(testCase) {
|
|
381
|
+
const key = caseIdentityKey(testCase.id);
|
|
382
|
+
const errors = caseErrors.get(key) ?? [];
|
|
383
|
+
caseErrors.delete(key);
|
|
384
|
+
return errors;
|
|
385
|
+
},
|
|
386
|
+
takeRunErrors() {
|
|
387
|
+
stopRuntimePolicyMonitoring(monitoring);
|
|
388
|
+
runErrors.push(...rawOutputPolicyErrors(options));
|
|
389
|
+
const errors = Array.from(runErrors);
|
|
390
|
+
runErrors.length = 0;
|
|
391
|
+
return errors;
|
|
392
|
+
}
|
|
393
|
+
};
|
|
394
|
+
}
|
|
395
|
+
//# sourceMappingURL=capability-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capability-policy.js","sourceRoot":"","sources":["../../../../source/run/capability-policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-line-runner.d.ts","sourceRoot":"","sources":["../../../../source/run/command-line-runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAmB,MAAM,uBAAuB,CAAC;AAEvE,OAAO,KAAK,EAAyB,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAE7E,OAAO,EAEH,KAAK,eAAe,EACpB,KAAK,oBAAoB,EAC5B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAIH,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EACjC,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,IAAI,4BAA4B,EAC/D,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAEH,KAAK,yBAAyB,EACjC,MAAM,qCAAqC,CAAC;AAO7C,MAAM,MAAM,iBAAiB,GAAG;IAC5B,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,CAAC;IAC/C,QAAQ,CAAC,KAAK,EAAE,4BAA4B,CAAC;IAC7C,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,aAAa,EAAE,kBAAkB,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,0BAA0B,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAC;CAChG,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,4BAA4B,CAAC;AAEnE,MAAM,MAAM,6BAA6B,GAAG,yBAAyB,GAAG;IACpE,QAAQ,CAAC,qBAAqB,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxD,QAAQ,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IACpF,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC;CAC1C,CAAC;
|
|
1
|
+
{"version":3,"file":"command-line-runner.d.ts","sourceRoot":"","sources":["../../../../source/run/command-line-runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAmB,MAAM,uBAAuB,CAAC;AAEvE,OAAO,KAAK,EAAyB,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAE7E,OAAO,EAEH,KAAK,eAAe,EACpB,KAAK,oBAAoB,EAC5B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAIH,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EACjC,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,IAAI,4BAA4B,EAC/D,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAEH,KAAK,yBAAyB,EACjC,MAAM,qCAAqC,CAAC;AAO7C,MAAM,MAAM,iBAAiB,GAAG;IAC5B,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,CAAC;IAC/C,QAAQ,CAAC,KAAK,EAAE,4BAA4B,CAAC;IAC7C,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,aAAa,EAAE,kBAAkB,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,0BAA0B,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAC;CAChG,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,4BAA4B,CAAC;AAEnE,MAAM,MAAM,6BAA6B,GAAG,yBAAyB,GAAG;IACpE,QAAQ,CAAC,qBAAqB,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxD,QAAQ,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IACpF,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC;CAC1C,CAAC;AA4EF,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,6BAA6B,GAAG,iBAAiB,CAkBtG;AAQD,eAAO,MAAM,iBAAiB,EAAE,iBAM9B,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { orchestrator } from "./run-orchestrator.js";
|
|
1
|
+
import { orchestrator } from "./run-orchestrator.entry-point.js";
|
|
2
2
|
import { loadRunConfig } from "./run-config.js";
|
|
3
3
|
import { createCommandLineErrorResultFromUnknown, formatFallbackDiagnostics, readExitCodeFromRunResult } from "./command-line-command.js";
|
|
4
4
|
import { createCommandLineCommandNamespace } from "./command-line-command-namespace.js";
|
|
@@ -37,7 +37,10 @@ async function createCommandFromRequest(request, loadedConfig, dependencies) {
|
|
|
37
37
|
config: await createCommandLineConfig(loadedConfig, request, dependencies),
|
|
38
38
|
cwd: request.cwd,
|
|
39
39
|
engine: null,
|
|
40
|
-
request:
|
|
40
|
+
request: {
|
|
41
|
+
...request.request,
|
|
42
|
+
capabilityRestrictions: { mode: 'enabled' }
|
|
43
|
+
}
|
|
41
44
|
};
|
|
42
45
|
}
|
|
43
46
|
async function runTestsWithLoadedConfig(request, dependencies, loadedConfig) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-line-runner.js","sourceRoot":"","sources":["../../../../source/run/command-line-runner.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"command-line-runner.js","sourceRoot":"","sources":["../../../../source/run/command-line-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { isRuntimeCapabilityPolicyEnvironment, isWebStorageLike } from "./capability-policy.js";
|
|
2
|
+
export function readProcessEnvironment(processObject) {
|
|
3
|
+
const environment = Reflect.get(processObject, 'env');
|
|
4
|
+
return isRuntimeCapabilityPolicyEnvironment(environment) ? environment : {};
|
|
5
|
+
}
|
|
6
|
+
export function readWebStorage(host, name) {
|
|
7
|
+
if (name === 'localStorage') {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
const storage = Reflect.get(host, name);
|
|
11
|
+
return isWebStorageLike(storage) ? storage : null;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=node-host-readers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-host-readers.js","sourceRoot":"","sources":["../../../../source/run/node-host-readers.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,oCAAoC,EACpC,gBAAgB,EAGnB,MAAM,wBAAwB,CAAC;AAWhC,MAAM,UAAU,sBAAsB,CAAC,aAAqC;IACxE,MAAM,WAAW,GAAY,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAE/D,OAAO,oCAAoC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,cAAc,CAC1B,IAAoB,EACpB,IAAuC;IAEvC,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,OAAO,GAAY,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAEjD,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACtD,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
const processExecuteFunctionName = ['exec', 've'].join('');
|
|
2
|
+
function readProcessExecutionMethods(processObject) {
|
|
3
|
+
return {
|
|
4
|
+
abort: processObject.abort,
|
|
5
|
+
execute: Reflect.get(processObject, processExecuteFunctionName),
|
|
6
|
+
exit: processObject.exit,
|
|
7
|
+
kill: processObject.kill
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
function restoreProcessExecutionMethods(processObject, originals) {
|
|
11
|
+
Reflect.set(processObject, 'abort', originals.abort);
|
|
12
|
+
Reflect.set(processObject, processExecuteFunctionName, originals.execute);
|
|
13
|
+
Reflect.set(processObject, 'exit', originals.exit);
|
|
14
|
+
Reflect.set(processObject, 'kill', originals.kill);
|
|
15
|
+
}
|
|
16
|
+
function replaceProcessExecutionMethods(processObject, originals, record) {
|
|
17
|
+
const blocked = new Error('Runtime policy violation: process execution is restricted.');
|
|
18
|
+
Reflect.set(processObject, 'abort', function restrictedProcessAbort() {
|
|
19
|
+
record('Runtime policy violation: process.abort() was called.');
|
|
20
|
+
throw blocked;
|
|
21
|
+
});
|
|
22
|
+
Reflect.set(processObject, 'exit', function restrictedProcessExit(code) {
|
|
23
|
+
record(`Runtime policy violation: process.exit(${String(code ?? '')}) was called.`);
|
|
24
|
+
throw blocked;
|
|
25
|
+
});
|
|
26
|
+
Reflect.set(processObject, 'kill', function restrictedProcessKill(pid, signal) {
|
|
27
|
+
record(`Runtime policy violation: process.kill(${String(pid)}, ${String(signal ?? '')}) was called.`);
|
|
28
|
+
return false;
|
|
29
|
+
});
|
|
30
|
+
if (typeof originals.execute === 'function') {
|
|
31
|
+
Reflect.set(processObject, processExecuteFunctionName, function restrictedProcessExecute() {
|
|
32
|
+
record(`Runtime policy violation: process.${processExecuteFunctionName}() was called.`);
|
|
33
|
+
throw blocked;
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export function installProcessExecutionRestriction(processObject, record) {
|
|
38
|
+
const originals = readProcessExecutionMethods(processObject);
|
|
39
|
+
replaceProcessExecutionMethods(processObject, originals, record);
|
|
40
|
+
return function restoreProcessExecutionRestriction() {
|
|
41
|
+
restoreProcessExecutionMethods(processObject, originals);
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function readProcessIpcMethods(processObject) {
|
|
45
|
+
return {
|
|
46
|
+
addListener: processObject.addListener,
|
|
47
|
+
on: processObject.on,
|
|
48
|
+
once: processObject.once,
|
|
49
|
+
prependListener: processObject.prependListener,
|
|
50
|
+
prependOnceListener: processObject.prependOnceListener,
|
|
51
|
+
send: processObject.send
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
function restoreProcessIpcMethods(processObject, originals) {
|
|
55
|
+
Reflect.set(processObject, 'addListener', originals.addListener);
|
|
56
|
+
Reflect.set(processObject, 'on', originals.on);
|
|
57
|
+
Reflect.set(processObject, 'once', originals.once);
|
|
58
|
+
Reflect.set(processObject, 'prependListener', originals.prependListener);
|
|
59
|
+
Reflect.set(processObject, 'prependOnceListener', originals.prependOnceListener);
|
|
60
|
+
Reflect.set(processObject, 'send', originals.send);
|
|
61
|
+
}
|
|
62
|
+
function restrictedMessageListener(processObject, original, record) {
|
|
63
|
+
return function restrictedListener(eventName, ...listenerArguments) {
|
|
64
|
+
if (eventName === 'message') {
|
|
65
|
+
record('Runtime policy violation: process message listener registration was blocked.');
|
|
66
|
+
return processObject;
|
|
67
|
+
}
|
|
68
|
+
if (typeof original === 'function') {
|
|
69
|
+
Reflect.apply(original, processObject, [eventName, ...listenerArguments]);
|
|
70
|
+
}
|
|
71
|
+
return processObject;
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
function replaceProcessIpcMethods(processObject, originals, record) {
|
|
75
|
+
Reflect.set(processObject, 'addListener', restrictedMessageListener(processObject, originals.addListener, record));
|
|
76
|
+
Reflect.set(processObject, 'on', restrictedMessageListener(processObject, originals.on, record));
|
|
77
|
+
Reflect.set(processObject, 'once', restrictedMessageListener(processObject, originals.once, record));
|
|
78
|
+
Reflect.set(processObject, 'prependListener', restrictedMessageListener(processObject, originals.prependListener, record));
|
|
79
|
+
Reflect.set(processObject, 'prependOnceListener', restrictedMessageListener(processObject, originals.prependOnceListener, record));
|
|
80
|
+
Reflect.set(processObject, 'send', function restrictedProcessSend() {
|
|
81
|
+
record('Runtime policy violation: process.send() was blocked.');
|
|
82
|
+
return false;
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
export function installIpcRestriction(processObject, record) {
|
|
86
|
+
const originals = readProcessIpcMethods(processObject);
|
|
87
|
+
replaceProcessIpcMethods(processObject, originals, record);
|
|
88
|
+
return function restoreIpcRestriction() {
|
|
89
|
+
restoreProcessIpcMethods(processObject, originals);
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=node-process-capability-restrictions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-process-capability-restrictions.js","sourceRoot":"","sources":["../../../../source/run/node-process-capability-restrictions.ts"],"names":[],"mappings":"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"}
|