@mossbear/eval-core 0.1.0-alpha.70 → 0.1.0-alpha.71
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/dist/credential-patterns.d.ts +1 -1
- package/dist/credential-patterns.d.ts.map +1 -1
- package/dist/credential-patterns.js +2 -2
- package/dist/credential-patterns.js.map +1 -1
- package/dist/redact-prose.d.ts.map +1 -1
- package/dist/redact-prose.js +97 -5
- package/dist/redact-prose.js.map +1 -1
- package/dist/redact-prose.test.js +119 -0
- package/dist/redact-prose.test.js.map +1 -1
- package/dist/sanitize-command.d.ts +4 -4
- package/dist/sanitize-command.d.ts.map +1 -1
- package/dist/sanitize-command.js +644 -23
- package/dist/sanitize-command.js.map +1 -1
- package/dist/sanitize-command.test.js +489 -0
- package/dist/sanitize-command.test.js.map +1 -1
- package/dist/strip-code-blocks.d.ts.map +1 -1
- package/dist/strip-code-blocks.js +62 -27
- package/dist/strip-code-blocks.js.map +1 -1
- package/dist/strip-code-blocks.test.js +58 -0
- package/dist/strip-code-blocks.test.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitize-command.js","sourceRoot":"","sources":["../src/sanitize-command.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sanitize-command.js","sourceRoot":"","sources":["../src/sanitize-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -268,4 +268,493 @@ describe('HTTPie authentication evidence', () => {
|
|
|
268
268
|
expect(output).toContain('-A bearer');
|
|
269
269
|
});
|
|
270
270
|
});
|
|
271
|
+
describe('credential syntax at the command upload boundary', () => {
|
|
272
|
+
it.each([
|
|
273
|
+
"bash -c 'API_TOKEN=x curl -x reader:fixture-value@proxy.test:3128 https://example.test'",
|
|
274
|
+
"bash -c 'password=x; https_proxy=reader:fixture-value@proxy.test:3128 curl https://example.test'",
|
|
275
|
+
"su -c 'API_TOKEN=x curl -x reader:fixture-value@proxy.test:3128 https://example.test'",
|
|
276
|
+
"env 'PASSWORD=fixture value' curl https://example.test",
|
|
277
|
+
"bash -c '{ curl -x reader:fixture-value@proxy.test:3128 https://example.test; }'",
|
|
278
|
+
"echo 'proxy = reader:fixture-value@proxy.test:3128' | curl -K - https://example.test",
|
|
279
|
+
"curl -K <(echo 'proxy = reader:fixture-value@proxy.test:3128') https://example.test",
|
|
280
|
+
"printf '%s\\n' 'proxy=reader:fixture-value@proxy.test:3128' | curl --config - https://example.test",
|
|
281
|
+
])('redacts assignment-led scripts and inline proxy configuration: %s', (command) => {
|
|
282
|
+
expect(sanitizeCommand(command)).not.toContain('fixture');
|
|
283
|
+
});
|
|
284
|
+
it.each([
|
|
285
|
+
'echo \'proxy-user = "reader:fixture-password"\' | curl -K - https://example.test',
|
|
286
|
+
'echo \'user = "reader:fixture-password"\' | curl -K - https://example.test',
|
|
287
|
+
'echo \'proxy-user = "reader:fixture-password"\' > cfg && curl -K cfg https://example.test',
|
|
288
|
+
'curl -K <(echo \'user = "reader:fixture-password"\') https://example.test',
|
|
289
|
+
"printf '%s\\n' 'user: reader:fixture-password' | curl -K - https://example.test",
|
|
290
|
+
'echo \'cookie = "SID=fixture-password"\' | curl -K - https://example.test',
|
|
291
|
+
'echo \'cert = "client.pem:fixture-password"\' | curl -K - https://example.test',
|
|
292
|
+
"echo 'proxy-cert = client.pem:fixture-password' | curl -K - https://example.test",
|
|
293
|
+
])('redacts credential fields in inline curl configuration: %s', (command) => {
|
|
294
|
+
const output = sanitizeCommand(command);
|
|
295
|
+
expect(output).not.toContain('fixture');
|
|
296
|
+
expect(output).toContain('[redacted]');
|
|
297
|
+
});
|
|
298
|
+
it.each([
|
|
299
|
+
'echo \'user = "reader"\' | curl -K - https://example.test',
|
|
300
|
+
'echo \'cert = "client.pem"\' | curl -K - https://example.test',
|
|
301
|
+
])('keeps curl configuration without a password: %s', (command) => {
|
|
302
|
+
expect(sanitizeCommand(command)).toBe(command);
|
|
303
|
+
});
|
|
304
|
+
it.each([
|
|
305
|
+
'sudo -E curl -x reader:fixture-password@proxy.test:3128 https://example.test',
|
|
306
|
+
'sudo -u deploy curl -x reader:fixture-password@proxy.test:3128 https://example.test',
|
|
307
|
+
'timeout --preserve-status 10 curl -x reader:fixture-password@proxy.test:3128 https://example.test',
|
|
308
|
+
'nice -n 10 curl -x reader:fixture-password@proxy.test:3128 https://example.test',
|
|
309
|
+
'stdbuf -oL curl -x reader:fixture-password@proxy.test:3128 https://example.test',
|
|
310
|
+
'xargs curl -x reader:fixture-password@proxy.test:3128 https://example.test',
|
|
311
|
+
'env -S "curl -x reader:fixture-password@proxy.test:3128 https://example.test"',
|
|
312
|
+
"su -c 'curl -x reader:fixture-password@proxy.test:3128 https://example.test'",
|
|
313
|
+
'sudo -s "curl -x reader:fixture-password@proxy.test:3128 https://example.test"',
|
|
314
|
+
String.raw `env -S "sh -c 'curl -x reader:fixture-password@proxy.test:3128 https://example.test'"`,
|
|
315
|
+
'bash -c "$(echo curl -x reader:fixture-password@proxy.test:3128 https://example.test)"',
|
|
316
|
+
"bash -c $'curl -x reader:fixture-password@proxy.test:3128 https://example.test'",
|
|
317
|
+
String.raw `bash -c $'true\ncurl -x reader:fixture-password@proxy.test:3128 https://example.test'`,
|
|
318
|
+
String.raw `bash -c $'\x63url -x reader:fixture-password@proxy.test:3128 https://example.test'`,
|
|
319
|
+
String.raw `bash -c $'echo \'ready\'; \x63url -x reader:fixture-password@proxy.test:3128 https://example.test'`,
|
|
320
|
+
])('redacts wrapper and encoded-script credentials: %s', (command) => {
|
|
321
|
+
const output = sanitizeCommand(command);
|
|
322
|
+
expect(output).not.toContain('fixture-password');
|
|
323
|
+
expect(output).toContain('proxy.test:3128');
|
|
324
|
+
expect(output).toContain('example.test');
|
|
325
|
+
});
|
|
326
|
+
it.each([
|
|
327
|
+
"sh -c 'export https_proxy=reader:fixture-password@proxy.test:3128; curl https://example.test'",
|
|
328
|
+
"sh -c 'cd /tmp; https_proxy=reader:fixture-password@proxy.test:3128 curl https://example.test'",
|
|
329
|
+
"eval 'export https_proxy=reader:fixture-password@proxy.test:3128' ; curl https://example.test",
|
|
330
|
+
"bash -c 'curl -x reader:fixture-password@proxy.test:3128 https://example.test'",
|
|
331
|
+
'bash -lc "curl -sSx reader:fixture-password@proxy.test:3128 https://example.test"',
|
|
332
|
+
'sudo bash -c "curl -x reader:fixture-password@proxy.test:3128 https://example.test"',
|
|
333
|
+
String.raw `bash -c 'sh -c "curl -x reader:fixture-password@proxy.test:3128 https://example.test"'`,
|
|
334
|
+
"bash -c 'https_proxy=reader:fixture-password@proxy.test:3128 curl -U reader:fixture-other https://example.test'",
|
|
335
|
+
'eval curl -x reader:fixture-password@proxy.test:3128 https://example.test',
|
|
336
|
+
])('redacts credentials inside quoted scripts: %s', (command) => {
|
|
337
|
+
const output = sanitizeCommand(command);
|
|
338
|
+
expect(output).not.toContain('fixture-password');
|
|
339
|
+
expect(output).not.toContain('fixture-other');
|
|
340
|
+
expect(output).toContain('proxy.test:3128');
|
|
341
|
+
expect(output).toContain('example.test');
|
|
342
|
+
});
|
|
343
|
+
it('bounds deeply nested interpreter scripts without retaining credentials', () => {
|
|
344
|
+
let command = 'curl -x reader:fixture-password@proxy.test:3128 https://example.test';
|
|
345
|
+
for (let depth = 0; depth < 12; depth += 1)
|
|
346
|
+
command = `bash -c ${JSON.stringify(command)}`;
|
|
347
|
+
const start = performance.now();
|
|
348
|
+
expect(sanitizeCommand(command)).not.toContain('fixture-password');
|
|
349
|
+
expect(performance.now() - start).toBeLessThan(2000);
|
|
350
|
+
});
|
|
351
|
+
it.each(['--pass ', '--pass=', '--proxy-pass ', '--proxy-pass='])('redacts separate private-key passphrases via %s', (flag) => {
|
|
352
|
+
expect(sanitizeCommand(`curl ${flag}'fixture-secret' https://example.test`)).not.toContain('fixture-secret');
|
|
353
|
+
});
|
|
354
|
+
it.each([
|
|
355
|
+
'curl reader:fixture-password@internal.test/api',
|
|
356
|
+
'curl -osx reader:fixture-password@internal.test/api',
|
|
357
|
+
'curl -- reader:fixture-password@internal.test/api',
|
|
358
|
+
"curl 'reader:fixture-password@internal.test/api'",
|
|
359
|
+
"bash -c 'curl reader:fixture-password@internal.test/api'",
|
|
360
|
+
])('redacts HTTP-client scheme-less URL credentials: %s', (command) => {
|
|
361
|
+
const output = sanitizeCommand(command);
|
|
362
|
+
expect(output).not.toContain('fixture-password');
|
|
363
|
+
expect(output).toContain('internal.test/api');
|
|
364
|
+
});
|
|
365
|
+
it('preserves benign quoted scripts and unrelated userinfo-shaped arguments', () => {
|
|
366
|
+
for (const command of [
|
|
367
|
+
"bash -c 'sort -u input.txt; curl -sS https://example.test'",
|
|
368
|
+
"docker pull 'image:tag@sha256:abc123'",
|
|
369
|
+
"git clone 'git@github.test:org/repo'",
|
|
370
|
+
])
|
|
371
|
+
expect(sanitizeCommand(command)).toBe(command);
|
|
372
|
+
});
|
|
373
|
+
it.each([
|
|
374
|
+
['x', 'reader:fixture-password@proxy.test:3128'],
|
|
375
|
+
['u', 'reader:fixture-password'],
|
|
376
|
+
['U', 'reader:fixture-password'],
|
|
377
|
+
['b', 'session=fixture-cookie'],
|
|
378
|
+
['E', 'client.pem:fixture-passphrase'],
|
|
379
|
+
['H', 'X-Api-Key: fixture-header'],
|
|
380
|
+
['d', '%70assword=fixture-form'],
|
|
381
|
+
['F', '%70assword=fixture-form'],
|
|
382
|
+
])('redacts curl clustered argument flag %s', (flag, value) => {
|
|
383
|
+
for (const prefix of ['s', 'sS', 'qkLf']) {
|
|
384
|
+
for (const space of ['', ' ']) {
|
|
385
|
+
const output = sanitizeCommand(`curl -${prefix}${flag}${space}'${value}' https://example.test`);
|
|
386
|
+
expect(output).not.toContain('fixture');
|
|
387
|
+
expect(output).toContain(`-${prefix}${flag}`);
|
|
388
|
+
expect(output).toContain('https://example.test');
|
|
389
|
+
if (flag === 'x')
|
|
390
|
+
expect(output).toContain('proxy.test:3128');
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
});
|
|
394
|
+
it('does not interpret an argument-taking flag value as more curl flags', () => {
|
|
395
|
+
const command = "curl -osxreport.txt -sH'Accept: application/json' https://example.test";
|
|
396
|
+
expect(sanitizeCommand(command)).toBe(command);
|
|
397
|
+
const proxy = 'curl -sSxproxy.test:3128 https://example.test';
|
|
398
|
+
expect(sanitizeCommand(proxy)).toBe(proxy);
|
|
399
|
+
});
|
|
400
|
+
it.each(['-U ', '-U', '--proxy-user='])('redacts curl proxy credentials via %s', (flag) => {
|
|
401
|
+
expect(sanitizeCommand(`curl ${flag}'user:fixture proxy password' https://example.test`)).not.toContain('fixture');
|
|
402
|
+
});
|
|
403
|
+
it.each(['--oauth2-bearer ', '--oauth2-bearer='])('redacts curl OAuth bearer credentials via %s', (flag) => {
|
|
404
|
+
expect(sanitizeCommand(`curl ${flag}fixture-bearer https://example.test`)).not.toContain('fixture');
|
|
405
|
+
});
|
|
406
|
+
it.each(['-E ', '-E', '--cert ', '--cert=', '--proxy-cert='])('redacts certificate passphrases via %s', (flag) => {
|
|
407
|
+
expect(sanitizeCommand(`curl ${flag}'client.pem:fixture passphrase' https://example.test`)).not.toContain('fixture');
|
|
408
|
+
});
|
|
409
|
+
it.each(['-H ', '-H', '--header ', '--header=', '--proxy-header='])('redacts custom credential headers via %s', (flag) => {
|
|
410
|
+
expect(sanitizeCommand(`curl ${flag}'X-Api-Key: fixture-header-secret' https://example.test`)).not.toContain('fixture');
|
|
411
|
+
expect(sanitizeCommand(`curl ${flag}'Accept: application/json' https://example.test`)).toContain('Accept: application/json');
|
|
412
|
+
});
|
|
413
|
+
it.each(['-d ', '-d', '--data=', '--data-urlencode ', '-F ', '--form-string='])('redacts credential form bodies via %s', (flag) => {
|
|
414
|
+
expect(sanitizeCommand(`curl ${flag}'password=fixture%20password&name=reader' https://example.test`)).not.toContain('fixture');
|
|
415
|
+
expect(sanitizeCommand(`curl ${flag}'%70assword=fixture-password' https://example.test`)).not.toContain('fixture');
|
|
416
|
+
expect(sanitizeCommand(`curl ${flag}'view=summary' https://example.test`)).toContain('view=summary');
|
|
417
|
+
});
|
|
418
|
+
it.each([
|
|
419
|
+
"'--password'",
|
|
420
|
+
'"--password"',
|
|
421
|
+
String.raw `--pass\word`,
|
|
422
|
+
"'--password=fixture password'",
|
|
423
|
+
])('redacts shell-encoded credential flags %s', (flag) => {
|
|
424
|
+
const command = flag.includes('=')
|
|
425
|
+
? `tool ${flag}`
|
|
426
|
+
: `tool ${flag} 'fixture password' --verbose`;
|
|
427
|
+
expect(sanitizeCommand(command)).not.toContain('fixture');
|
|
428
|
+
});
|
|
429
|
+
it('redacts OAuth fragment credentials while retaining the address', () => {
|
|
430
|
+
const output = sanitizeCommand('curl "https://example.test/#access_token=fixture-fragment&view=summary"');
|
|
431
|
+
expect(output).not.toContain('fixture');
|
|
432
|
+
expect(output).toContain('https://example.test/');
|
|
433
|
+
expect(output).toContain('view=summary');
|
|
434
|
+
});
|
|
435
|
+
it.each(['-x ', '-x', '--proxy ', '--proxy=', '--proxy1.0 '])('redacts scheme-less proxy userinfo via %s', (flag) => {
|
|
436
|
+
const output = sanitizeCommand(`curl ${flag}'reader:fixture-password@proxy.test:3128' https://example.test`);
|
|
437
|
+
expect(output).not.toContain('fixture-password');
|
|
438
|
+
expect(output).toContain('proxy.test:3128');
|
|
439
|
+
expect(sanitizeCommand(`curl ${flag}proxy.test:3128 https://example.test`)).toContain('proxy.test:3128');
|
|
440
|
+
expect(sanitizeCommand(`curl ${flag}'http://reader:fixture-password@proxy.test:3128' https://example.test`)).not.toContain('fixture-password');
|
|
441
|
+
});
|
|
442
|
+
describe('proxy environment assignments', () => {
|
|
443
|
+
it.each([
|
|
444
|
+
"env 'https_proxy=reader:fixture-password@proxy.test:3128' curl https://example.test",
|
|
445
|
+
'env "ALL_PROXY=reader:fixture-password@proxy.test:3128" curl https://example.test',
|
|
446
|
+
String.raw `env https_pr\oxy=reader:fixture-password@proxy.test:3128 curl https://example.test`,
|
|
447
|
+
])('redacts shell-encoded complete proxy assignments: %s', (command) => {
|
|
448
|
+
const output = sanitizeCommand(command);
|
|
449
|
+
expect(output).not.toContain('fixture-password');
|
|
450
|
+
expect(output).toContain('proxy.test:3128');
|
|
451
|
+
});
|
|
452
|
+
const names = ['https_proxy', 'http_proxy', 'HTTPS_PROXY', 'ALL_PROXY', 'all_proxy'];
|
|
453
|
+
const values = [
|
|
454
|
+
'reader:fixture-password@proxy.test:3128',
|
|
455
|
+
"'reader:fixture-password@proxy.test:3128'",
|
|
456
|
+
'"reader:fixture-password@proxy.test:3128"',
|
|
457
|
+
"'reader:fixture password@proxy.test:3128'",
|
|
458
|
+
];
|
|
459
|
+
for (const name of names) {
|
|
460
|
+
it.each(values)(`redacts scheme-less userinfo in ${name}=%s`, (value) => {
|
|
461
|
+
for (const prefix of ['', 'export ', 'sudo -E ', 'env ']) {
|
|
462
|
+
const output = sanitizeCommand(`${prefix}${name}=${value} curl https://example.test`);
|
|
463
|
+
expect(output).not.toContain('fixture');
|
|
464
|
+
expect(output).toContain('reader:');
|
|
465
|
+
expect(output).toContain('proxy.test:3128');
|
|
466
|
+
expect(output).toContain('curl https://example.test');
|
|
467
|
+
}
|
|
468
|
+
});
|
|
469
|
+
}
|
|
470
|
+
it('keeps a proxy value without credentials intact', () => {
|
|
471
|
+
for (const command of [
|
|
472
|
+
'https_proxy=proxy.test:3128 curl https://example.test',
|
|
473
|
+
"ALL_PROXY='socks5://proxy.test:1080' curl https://example.test",
|
|
474
|
+
'no_proxy=localhost,127.0.0.1 curl https://example.test',
|
|
475
|
+
])
|
|
476
|
+
expect(sanitizeCommand(command)).toBe(command);
|
|
477
|
+
});
|
|
478
|
+
it('leaves unrelated scheme-less @ text alone', () => {
|
|
479
|
+
for (const command of [
|
|
480
|
+
'docker pull nginx:1.25@sha256:0123456789abcdef',
|
|
481
|
+
'git clone git@github.com:org/repo.git',
|
|
482
|
+
])
|
|
483
|
+
expect(sanitizeCommand(command)).toBe(command);
|
|
484
|
+
});
|
|
485
|
+
});
|
|
486
|
+
describe('OpenSSL and sshpass credential arguments', () => {
|
|
487
|
+
it.each([
|
|
488
|
+
'openssl enc -d -aes-256-cbc -pass pass:fixture-password -in f.enc',
|
|
489
|
+
"openssl rsa -passin 'pass:fixture password' -in key.pem",
|
|
490
|
+
'openssl pkcs12 -passout pass:fixture-password -out key.p12',
|
|
491
|
+
'openssl enc -aes-256-cbc -k fixture-password',
|
|
492
|
+
'openssl enc -aes-256-cbc -pass=pass:fixture-password',
|
|
493
|
+
'openssl enc -aes-256-cbc --pass pass:fixture-password',
|
|
494
|
+
'openssl enc -aes-256-cbc --pass=pass:fixture-password',
|
|
495
|
+
'openssl rsa --passin pass:fixture-password -in key.pem',
|
|
496
|
+
'openssl pkcs12 --passout pass:fixture-password -out key.p12',
|
|
497
|
+
'openssl enc -aes-256-cbc --k fixture-password',
|
|
498
|
+
'openssl pkcs12 -password pass:fixture-password',
|
|
499
|
+
"env 'SSHPASS=fixture password' sshpass -e ssh deploy@host",
|
|
500
|
+
"sudo -u root /usr/bin/openssl enc '-pass' pass:fixture-password",
|
|
501
|
+
"bash -c 'openssl enc -pass pass:fixture-password'",
|
|
502
|
+
'sshpass -p fixture-password ssh deploy@host git pull',
|
|
503
|
+
'sshpass -pfixture-password ssh deploy@host git pull',
|
|
504
|
+
"sshpass -vp'fixture password' ssh deploy@host",
|
|
505
|
+
'timeout 10 /usr/bin/sshpass -4vpfixture-password ssh deploy@host',
|
|
506
|
+
String.raw `sshpass -\p $'fixture\x20password' ssh deploy@host`,
|
|
507
|
+
"openssl passwd -1 'fixture-password'",
|
|
508
|
+
'openssl passwd -6 fixture-password',
|
|
509
|
+
'openssl passwd -salt pepper fixture-password',
|
|
510
|
+
'sudo openssl passwd -apr1 -salt x fixture-password fixture-second',
|
|
511
|
+
'openssl enc -aes-256-cbc -K 00fixture1122 -iv 00 -in f -out g',
|
|
512
|
+
'openssl enc -aes-256-cbc -K=00fixture1122 -in f -out g',
|
|
513
|
+
])('redacts direct passwords: %s', (command) => {
|
|
514
|
+
expect(sanitizeCommand(command)).not.toContain('fixture');
|
|
515
|
+
expect(sanitizeCommand(command)).toContain('[redacted]');
|
|
516
|
+
});
|
|
517
|
+
it.each([
|
|
518
|
+
'openssl enc -pass env:KEY_PASSWORD -in f.enc',
|
|
519
|
+
'openssl enc --pass env:KEY_PASSWORD -in f.enc',
|
|
520
|
+
'openssl rsa -passin file:password-source -in key.pem',
|
|
521
|
+
'openssl pkcs12 -passout fd:3',
|
|
522
|
+
'openssl enc -pass stdin',
|
|
523
|
+
'openssl enc -kfile password-source -in f.enc',
|
|
524
|
+
'sshpass -e ssh deploy@host',
|
|
525
|
+
'sshpass -f password-source ssh deploy@host',
|
|
526
|
+
'sshpass -d 3 ssh deploy@host',
|
|
527
|
+
'printf -p fixture-public',
|
|
528
|
+
'tool -pass pass:fixture-public',
|
|
529
|
+
'openssl passwd -stdin',
|
|
530
|
+
'openssl passwd -in password-source',
|
|
531
|
+
'openssl x509 -in cert.pem -noout -text',
|
|
532
|
+
])('preserves nonliteral sources and unrelated arguments: %s', (command) => {
|
|
533
|
+
expect(sanitizeCommand(command)).toBe(command);
|
|
534
|
+
});
|
|
535
|
+
});
|
|
536
|
+
describe('inline curl configuration credentials', () => {
|
|
537
|
+
it.each([
|
|
538
|
+
`echo 'us''er = "reader:fixture-password"' | curl -K - file:///dev/null`,
|
|
539
|
+
String.raw `echo us\er=reader:fixture-password | curl -K - file:///dev/null`,
|
|
540
|
+
String.raw `echo $'u\x73er = "reader:fixture-password"' | curl -K - file:///dev/null`,
|
|
541
|
+
])('decodes shell-encoded config names: %s', (command) => {
|
|
542
|
+
expect(sanitizeCommand(command)).not.toContain('fixture');
|
|
543
|
+
});
|
|
544
|
+
it.each([
|
|
545
|
+
`printf 'user = "reader:%s"\\n' fixture-password | curl -K - file:///dev/null`,
|
|
546
|
+
`printf 'cookie = "%s"\\n' SID=fixture-password | curl -K - file:///dev/null`,
|
|
547
|
+
`printf '%s = %s\\n' user reader:fixture-password | curl -K - file:///dev/null`,
|
|
548
|
+
])('redacts printf credential substitutions: %s', (command) => {
|
|
549
|
+
expect(sanitizeCommand(command)).not.toContain('fixture');
|
|
550
|
+
});
|
|
551
|
+
it.each([
|
|
552
|
+
`bash -c 'echo "user = reader:fixture-password"' | curl -K - file:///dev/null`,
|
|
553
|
+
`env -S 'printf "user = reader:fixture-password"' | curl -K - file:///dev/null`,
|
|
554
|
+
])('redacts wrapped config producers: %s', (command) => {
|
|
555
|
+
expect(sanitizeCommand(command)).not.toContain('fixture');
|
|
556
|
+
});
|
|
557
|
+
it.each([
|
|
558
|
+
`echo 'user "reader:fixture-password"' | curl -K - file:///dev/null`,
|
|
559
|
+
`echo 'user: "reader:fixture-password"' | curl -K - file:///dev/null`,
|
|
560
|
+
`echo '--user = "reader:fixture-password"' | curl -K - file:///dev/null`,
|
|
561
|
+
`echo '-u "reader:fixture-password"' | curl -K - file:///dev/null`,
|
|
562
|
+
])('redacts alternate curl config separators: %s', (command) => {
|
|
563
|
+
expect(sanitizeCommand(command)).not.toContain('fixture');
|
|
564
|
+
});
|
|
565
|
+
it.each([
|
|
566
|
+
`echo 'proxy-user = "reader:fixture-password"' | curl -K - https://example.test`,
|
|
567
|
+
`echo 'user = "reader:fixture password"' | curl -K - https://example.test`,
|
|
568
|
+
`echo 'proxy-user="reader:fixture-password"' > cfg && curl -K cfg https://example.test`,
|
|
569
|
+
`curl -K <(echo 'user = "reader:fixture-password"') https://example.test`,
|
|
570
|
+
`echo 'cookie = "SID=fixture-password"' | curl -K - https://example.test`,
|
|
571
|
+
`echo 'cert = "client.pem:fixture-password"' | curl -K - https://example.test`,
|
|
572
|
+
`echo 'proxy-cert = "client.pem:fixture-password"' | curl -K - https://example.test`,
|
|
573
|
+
`printf '%s\\n' 'oauth2-bearer = "fixture-password"' | curl -K - https://example.test`,
|
|
574
|
+
`printf '%s\\n' 'pass = "fixture-password"' | curl -K - https://example.test`,
|
|
575
|
+
`echo 'proxy-pass = "fixture-password"' | curl -K - https://example.test`,
|
|
576
|
+
])('redacts credential field literals: %s', (command) => {
|
|
577
|
+
expect(sanitizeCommand(command)).not.toContain('fixture');
|
|
578
|
+
});
|
|
579
|
+
it('keeps unrelated flags before a config producer', () => {
|
|
580
|
+
expect(sanitizeCommand(`sort -u public-file && echo 'user = reader:fixture-password' | curl -K - file:///dev/null`)).toContain('sort -u public-file');
|
|
581
|
+
});
|
|
582
|
+
it('retains noncredential curl configuration', () => {
|
|
583
|
+
const command = `echo 'proxy = proxy.test:3128' | curl -K - https://example.test`;
|
|
584
|
+
expect(sanitizeCommand(command)).toBe(command);
|
|
585
|
+
});
|
|
586
|
+
});
|
|
587
|
+
describe('OpenSSL positional passwords and raw keys', () => {
|
|
588
|
+
it('redacts a valid raw AES key while retaining the IV', () => {
|
|
589
|
+
const key = '00112233445566778899aabbccddeeff';
|
|
590
|
+
const iv = 'ffeeddccbbaa99887766554433221100';
|
|
591
|
+
const output = sanitizeCommand(`openssl enc -aes-128-cbc -K ${key} -iv ${iv} -in public-file`);
|
|
592
|
+
expect(output).not.toContain(key);
|
|
593
|
+
expect(output).toContain(iv);
|
|
594
|
+
});
|
|
595
|
+
it.each(['curl', 'openssl', 'sshpass'])('redacts a password named %s', (password) => {
|
|
596
|
+
expect(sanitizeCommand(`openssl passwd -1 '${password}'`)).toBe('openssl passwd -1 [redacted]');
|
|
597
|
+
});
|
|
598
|
+
it.each([
|
|
599
|
+
`openssl passwd -1 'fixture-password'`,
|
|
600
|
+
`openssl passwd -6 'fixture password'`,
|
|
601
|
+
`openssl passwd -salt public-salt fixture-password`,
|
|
602
|
+
`openssl passwd -5 fixture-password fixture-other-password`,
|
|
603
|
+
`openssl passwd -- fixture-password`,
|
|
604
|
+
`openssl enc -aes-256-cbc -K fixture-key -in public-file`,
|
|
605
|
+
`openssl enc -aes-256-cbc --K=fixture-key -in public-file`,
|
|
606
|
+
])('redacts key material: %s', (command) => {
|
|
607
|
+
expect(sanitizeCommand(command)).not.toContain('fixture');
|
|
608
|
+
});
|
|
609
|
+
it.each([
|
|
610
|
+
'openssl passwd -1 -salt public-salt -in password-source',
|
|
611
|
+
'openssl passwd -6 -stdin',
|
|
612
|
+
'openssl passwd -rand entropy-source -writerand entropy-out -stdin',
|
|
613
|
+
])('preserves password sources and salt: %s', (command) => {
|
|
614
|
+
expect(sanitizeCommand(command)).toBe(command);
|
|
615
|
+
});
|
|
616
|
+
});
|
|
617
|
+
describe('Codex command-redaction findings', () => {
|
|
618
|
+
it.each([
|
|
619
|
+
`printf 'variable = cred=reader:fixture-password\nexpand-user = {{cred}}\nurl = file:///dev/null\n' | curl -K -`,
|
|
620
|
+
`echo 'variable = cred=fixture-password\nexpand-oauth2-bearer = {{cred}}' | curl -K -`,
|
|
621
|
+
`printf '%s\\n' 'variable = cred=fixture-password' 'expand-header = "X-Api-Key: {{cred}}"' | curl -K -`,
|
|
622
|
+
`export CRED=fixture-password; printf 'variable = %%CRED\nexpand-user = {{CRED}}' | curl -K -`,
|
|
623
|
+
])('redacts expanded credentials in curl config inputs: %s', (command) => {
|
|
624
|
+
expect(sanitizeCommand(command)).not.toContain('fixture');
|
|
625
|
+
});
|
|
626
|
+
it.each([
|
|
627
|
+
"env 'P.W=fixture-password' openssl enc -pass env:P.W",
|
|
628
|
+
"env 'P-W=fixture-password' openssl enc -pass env:P-W",
|
|
629
|
+
"env 'P W=fixture-password' openssl enc -pass 'env:P W'",
|
|
630
|
+
])('redacts non-shell environment names: %s', (command) => {
|
|
631
|
+
expect(sanitizeCommand(command)).not.toContain('fixture');
|
|
632
|
+
});
|
|
633
|
+
it.each([
|
|
634
|
+
'openssl s_client -srppass fixture-password -connect example.test:443',
|
|
635
|
+
'openssl s_client -srppass=fixture-password -connect example.test:443',
|
|
636
|
+
'openssl cms -pwri_password fixture-password -encrypt -in /dev/null',
|
|
637
|
+
'openssl dgst -hmac fixture-password /dev/null',
|
|
638
|
+
])('redacts other OpenSSL password/key flags: %s', (command) => {
|
|
639
|
+
expect(sanitizeCommand(command)).not.toContain('fixture');
|
|
640
|
+
});
|
|
641
|
+
it('redacts CMS key bytes while keeping their public identifier', () => {
|
|
642
|
+
const key = '0'.repeat(32);
|
|
643
|
+
expect(sanitizeCommand(`openssl cms -secretkey ${key} -secretkeyid public-id`)).toBe('openssl cms -secretkey [redacted] -secretkeyid public-id');
|
|
644
|
+
});
|
|
645
|
+
it.each([
|
|
646
|
+
'curl -u reader:$(printf fixture-password) https://example.test',
|
|
647
|
+
'sshpass -p$(printf fixture-password) ssh deploy@host',
|
|
648
|
+
'openssl enc -pass pass:$(printf fixture-password)',
|
|
649
|
+
'curl -u reader:`printf fixture-password` https://example.test',
|
|
650
|
+
'sshpass -p`printf fixture-password` ssh deploy@host',
|
|
651
|
+
'curl -u reader:$(printf "%s" "$(printf fixture-password)") https://example.test',
|
|
652
|
+
"curl -u reader:$(printf ')%s' fixture-password) https://example.test",
|
|
653
|
+
'curl -u "reader:$(printf fixture-password)" https://example.test',
|
|
654
|
+
"bash -c 'curl -u reader:$(printf fixture-password) https://example.test'",
|
|
655
|
+
'curl -u reader:$(printf fixture-password',
|
|
656
|
+
])('redacts command-substitution bodies in credential words: %s', (command) => {
|
|
657
|
+
expect(sanitizeCommand(command)).not.toContain('fixture');
|
|
658
|
+
});
|
|
659
|
+
it.each([
|
|
660
|
+
'openssl rand -out passwd 16',
|
|
661
|
+
'openssl x509 -in passwd -noout -text',
|
|
662
|
+
'openssl cms -secretkeyid public-key-id -help',
|
|
663
|
+
`echo 'variable = host=example.test\nexpand-url = https://{{host}}' | curl -K -`,
|
|
664
|
+
])('preserves subcommand arguments and public config expansions: %s', (command) => {
|
|
665
|
+
expect(sanitizeCommand(command)).toBe(command);
|
|
666
|
+
});
|
|
667
|
+
it.each([
|
|
668
|
+
'curl --variable cred=reader:fixture-password --expand-user {{cred}} file:///dev/null',
|
|
669
|
+
'curl --variable=cred=reader:fixture-password --expand-proxy-user={{cred}} https://example.test',
|
|
670
|
+
"curl --variable 'cred=fixture password' --expand-oauth2-bearer '{{cred:trim}}' https://example.test",
|
|
671
|
+
'curl --variable cred=fixture-password --expand-header "X-Api-Key: {{cred}}" https://example.test',
|
|
672
|
+
'curl --variable cred=fixture-password --expand-data "password={{cred}}" https://example.test',
|
|
673
|
+
'curl --variable cred=fixture-password --expand-url "https://reader:{{cred}}@example.test"',
|
|
674
|
+
'curl --variable cred=fixture-password --expand-url "https://example.test/#access_token={{cred}}"',
|
|
675
|
+
'curl --variable cred=fixture-password --expand-variable login=reader:{{cred}} --expand-user {{login}} file:///dev/null',
|
|
676
|
+
'curl --variable raw=reader:fixture-password@example.test --expand-variable alias={{raw}} --expand-url {{alias}}',
|
|
677
|
+
'curl --variable raw=reader:fixture-password@example.test --expand-url {{raw}} --variable raw=example.test',
|
|
678
|
+
'CRED=fixture-password curl --variable %CRED --expand-oauth2-bearer {{CRED}} https://example.test',
|
|
679
|
+
'curl --variable %CRED=fixture-password --expand-oauth2-bearer {{CRED}} https://example.test',
|
|
680
|
+
'curl --variable cred[0-99]=fixture-password --expand-oauth2-bearer {{cred}} https://example.test',
|
|
681
|
+
])('redacts expanded curl credentials at their source: %s', (command) => {
|
|
682
|
+
expect(sanitizeCommand(command)).not.toContain('fixture');
|
|
683
|
+
});
|
|
684
|
+
it.each([
|
|
685
|
+
'P=fixture-password openssl enc -aes-256-cbc -pass env:P -in /dev/null -out /dev/null',
|
|
686
|
+
"env 'P=fixture password' openssl enc -pass env:P",
|
|
687
|
+
'P+=fixture-password openssl enc -pass env:P',
|
|
688
|
+
'printf fixture-password | openssl enc -pass stdin',
|
|
689
|
+
'printf "%s\\n" fixture-password | openssl enc -pass stdin',
|
|
690
|
+
"printf fixture-password | sh -c 'openssl enc -pass stdin'",
|
|
691
|
+
'printf fixture-password > pass-source; openssl enc -pass file:pass-source',
|
|
692
|
+
'openssl enc -pass fd:3 3< <(printf fixture-password)',
|
|
693
|
+
'openssl enc -pass file:<(printf fixture-password)',
|
|
694
|
+
'openssl enc -pass stdin <<< fixture-password',
|
|
695
|
+
'printf fixture-password > pass-source; openssl enc -kfile pass-source',
|
|
696
|
+
'printf fixture-password | openssl passwd -stdin',
|
|
697
|
+
'printf fixture-password > pass-source; openssl passwd -in pass-source',
|
|
698
|
+
'P=$(printf fixture-password) openssl enc -pass env:P',
|
|
699
|
+
])('redacts literal OpenSSL passphrase producers: %s', (command) => {
|
|
700
|
+
expect(sanitizeCommand(command)).not.toContain('fixture');
|
|
701
|
+
});
|
|
702
|
+
it.each([
|
|
703
|
+
'HTTPS_PROXY+=reader:fixture-password@proxy.test:3128 curl https://example.test',
|
|
704
|
+
"ALL_PROXY+='reader:fixture password@proxy.test:3128' curl https://example.test",
|
|
705
|
+
])('redacts appended proxy assignments: %s', (command) => {
|
|
706
|
+
expect(sanitizeCommand(command)).not.toContain('fixture');
|
|
707
|
+
expect(sanitizeCommand(command)).toContain('proxy.test:3128');
|
|
708
|
+
});
|
|
709
|
+
it.each([
|
|
710
|
+
'openssl passwd -provider default -stdin',
|
|
711
|
+
'openssl passwd -provider-path /public/providers -provider default -stdin',
|
|
712
|
+
'openssl passwd -propquery provider=default -stdin',
|
|
713
|
+
'openssl passwd -provparam public=value -stdin',
|
|
714
|
+
'echo "user = reader:public-value"; ssh -K host; curl https://example.test',
|
|
715
|
+
'curl https://example.test; ssh -K host; echo "user = reader:public-value"',
|
|
716
|
+
'echo "user = reader:public-value"; curl -o -K https://example.test',
|
|
717
|
+
'curl --variable host=example.test --expand-url "https://{{host}}/public"',
|
|
718
|
+
'curl --variable name=public --expand-output {{name}} https://example.test',
|
|
719
|
+
'echo public-value; openssl enc -pass stdin',
|
|
720
|
+
'echo public-value; openssl enc -pass env:P',
|
|
721
|
+
])('preserves public option values and unrelated commands: %s', (command) => {
|
|
722
|
+
expect(sanitizeCommand(command)).toBe(command);
|
|
723
|
+
});
|
|
724
|
+
it.each([
|
|
725
|
+
'TOOL=/usr/bin/openssl curl -u reader:fixture-password https://example.test',
|
|
726
|
+
'sudo -u openssl curl -u reader:fixture-password https://example.test',
|
|
727
|
+
'env -u openssl curl -u reader:fixture-password https://example.test',
|
|
728
|
+
'/usr/bin/time -o openssl curl -u reader:fixture-password https://example.test',
|
|
729
|
+
'xargs -a openssl curl -u reader:fixture-password https://example.test',
|
|
730
|
+
])('does not select a client from wrapper option values: %s', (command) => {
|
|
731
|
+
expect(sanitizeCommand(command)).not.toContain('fixture');
|
|
732
|
+
});
|
|
733
|
+
it.each([
|
|
734
|
+
'curl https://example.test/openssl -u reader:fixture-password',
|
|
735
|
+
'curl -o openssl -u reader:fixture-password https://example.test',
|
|
736
|
+
'http example.test/sshpass --auth reader:fixture-password',
|
|
737
|
+
'curl --output sshpass --proxy-user reader:fixture-password https://example.test',
|
|
738
|
+
'sshpass -p fixture-first curl -u reader:fixture-password https://example.test',
|
|
739
|
+
])('keeps client identity across argument names: %s', (command) => {
|
|
740
|
+
expect(sanitizeCommand(command)).not.toContain('fixture');
|
|
741
|
+
});
|
|
742
|
+
it.each(['url', 'preproxy', 'socks4', 'socks4a', 'socks5', 'socks5-hostname'])('redacts userinfo in the %s config field and flag', (key) => {
|
|
743
|
+
for (const command of [
|
|
744
|
+
`echo '${key} = reader:fixture-password@proxy.test:3128' | curl -K -`,
|
|
745
|
+
`curl --${key} reader:fixture-password@proxy.test:3128 https://example.test`,
|
|
746
|
+
]) {
|
|
747
|
+
expect(sanitizeCommand(command)).not.toContain('fixture');
|
|
748
|
+
expect(sanitizeCommand(command)).toContain('proxy.test:3128');
|
|
749
|
+
}
|
|
750
|
+
});
|
|
751
|
+
it.each([
|
|
752
|
+
`echo 'user = reader:fixture-password' | bash -c 'curl -K - https://example.test'`,
|
|
753
|
+
`printf 'cookie = "%s"' SID=fixture-password | env -S 'curl -K - https://example.test'`,
|
|
754
|
+
`echo 'user = reader:fixture-password' | sh -c "bash -c 'curl -K - https://example.test'"`,
|
|
755
|
+
])('detects nested config consumers from outer producers: %s', (command) => {
|
|
756
|
+
expect(sanitizeCommand(command)).not.toContain('fixture');
|
|
757
|
+
});
|
|
758
|
+
});
|
|
759
|
+
});
|
|
271
760
|
//# sourceMappingURL=sanitize-command.test.js.map
|