@celilo/e2e
E2E test infrastructure for Celilo-deployed applications. Provides a simulated internet with DNS hierarchy, ACME server, firewalls, and target machines in Docker.
Supply chain provenance
Status for the latest visible version.
Without SLSA provenance there is no cryptographic link between this tarball and the public source — the axios compromise (March 2026) relied on exactly this gap.
Maintainers
Keywords
Accepted risks
Findings the reviewer chose to accept rather than block on.
| Source | Rule | Reason | Accepted by | When |
|---|---|---|---|---|
| semgrep | semgrep:env-spread | AI (semgrep): Passing process.env to a child process in a test runner is standard and expected for this package. | ai | |
| semgrep | semgrep:shady-links-raw-ip | AI (semgrep): RFC 6598 CGNAT address used as internal Docker network endpoint in E2E test infrastructure; not a malicious exfiltration target. | ai |
Versions (showing 12 of 12)
| Version | Deps | Published |
|---|---|---|
| 0.7.11 | 4 / 1 | |
| 0.7.8 | 4 / 1 | |
| 0.6.2 | 2 / 1 | |
| 0.6.1 | 2 / 1 | |
| 0.6.0 | 1 / 1 | |
| 0.5.1 | 1 / 1 | |
| 0.5.0 | 1 / 1 | |
| 0.4.0 | 1 / 1 | |
| 0.3.0 | 1 / 1 | |
| 0.2.1 | 1 / 1 | |
| 0.2.0 | 1 / 1 | |
| 0.1.0 | 1 / 1 |
v0.7.11
3 findingsSpreading entire process.env into an object — may capture all secrets 59 | const result = spawnSync(join(BIN_DIR, script), args, { 60 | stdio: 'inherit', > 61 | env: { ...process.env, ...env }, 62 | }); 63 | process.exit(result.status ?? 1);
Spreading entire process.env into an object — may capture all secrets 186 | return new Promise<TestResult>((resolveTest) => { 187 | // Env vars let the test detect --keep / --reuse / --live / --published modes > 188 | const testEnv: NodeJS.ProcessEnv = { ...process.env }; 189 | if (flagKeep) testEnv.CELILO_E2E_KEEP = '1'; 190 | if (flagLive) {
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.7.8
3 findingsSpreading entire process.env into an object — may capture all secrets 59 | const result = spawnSync(join(BIN_DIR, script), args, { 60 | stdio: 'inherit', > 61 | env: { ...process.env, ...env }, 62 | }); 63 | process.exit(result.status ?? 1);
Spreading entire process.env into an object — may capture all secrets 186 | return new Promise<TestResult>((resolveTest) => { 187 | // Env vars let the test detect --keep / --reuse / --live / --published modes > 188 | const testEnv: NodeJS.ProcessEnv = { ...process.env }; 189 | if (flagKeep) testEnv.CELILO_E2E_KEEP = '1'; 190 | if (flagLive) {
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.6.2
3 findingsSpreading entire process.env into an object — may capture all secrets 59 | const result = spawnSync(join(BIN_DIR, script), args, { 60 | stdio: 'inherit', > 61 | env: { ...process.env, ...env }, 62 | }); 63 | process.exit(result.status ?? 1);
Spreading entire process.env into an object — may capture all secrets 179 | return new Promise<TestResult>((resolveTest) => { 180 | // Env vars let the test detect --keep / --reuse / --live / --published modes > 181 | const testEnv: NodeJS.ProcessEnv = { ...process.env }; 182 | if (flagKeep) testEnv.CELILO_E2E_KEEP = '1'; 183 | if (flagLive) {
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.6.1
3 findingsSpreading entire process.env into an object — may capture all secrets 59 | const result = spawnSync(join(BIN_DIR, script), args, { 60 | stdio: 'inherit', > 61 | env: { ...process.env, ...env }, 62 | }); 63 | process.exit(result.status ?? 1);
Spreading entire process.env into an object — may capture all secrets 179 | return new Promise<TestResult>((resolveTest) => { 180 | // Env vars let the test detect --keep / --reuse / --live / --published modes > 181 | const testEnv: NodeJS.ProcessEnv = { ...process.env }; 182 | if (flagKeep) testEnv.CELILO_E2E_KEEP = '1'; 183 | if (flagLive) {
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.6.0
3 findingsSpreading entire process.env into an object — may capture all secrets Source: https://github.com/psbanka/infra/blob/41d11ae0df9efd048957f065b0a32f2f7f690c8e/src/cli/index.ts#L40 38 | const result = spawnSync(join(BIN_DIR, script), args, { 39 | stdio: 'inherit', > 40 | env: { ...process.env, ...env }, 41 | }); 42 | process.exit(result.status ?? 1);
Spreading entire process.env into an object — may capture all secrets Source: https://github.com/psbanka/infra/blob/41d11ae0df9efd048957f065b0a32f2f7f690c8e/src/runner.ts#L297 295 | return new Promise<TestResult>((resolveTest) => { 296 | // Env vars let the test detect --keep / --reuse / --live / --published modes > 297 | const testEnv: NodeJS.ProcessEnv = { ...process.env }; 298 | if (flagKeep) testEnv.CELILO_E2E_KEEP = '1'; 299 | if (flagLive) {
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.5.1
2 findingsSpreading entire process.env into an object — may capture all secrets 335 | return new Promise<TestResult>((resolveTest) => { 336 | // Env vars let the test detect --keep / --reuse modes > 337 | const testEnv: NodeJS.ProcessEnv = { ...process.env }; 338 | if (flagKeep) testEnv.CELILO_E2E_KEEP = '1'; 339 | if (flagReuse) {
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.5.0
2 findingsSpreading entire process.env into an object — may capture all secrets 335 | return new Promise<TestResult>((resolveTest) => { 336 | // Env vars let the test detect --keep / --reuse modes > 337 | const testEnv: NodeJS.ProcessEnv = { ...process.env }; 338 | if (flagKeep) testEnv.CELILO_E2E_KEEP = '1'; 339 | if (flagReuse) {
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.4.0
2 findingsSpreading entire process.env into an object — may capture all secrets Source: https://github.com/psbanka/infra/blob/ba237fd3b0bc5052622fe4b4b21cc384199f8497/src/runner.ts#L337 335 | return new Promise<TestResult>((resolveTest) => { 336 | // Env vars let the test detect --keep / --reuse modes > 337 | const testEnv: NodeJS.ProcessEnv = { ...process.env }; 338 | if (flagKeep) testEnv.CELILO_E2E_KEEP = '1'; 339 | if (flagReuse) {
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.3.0
2 findingsSpreading entire process.env into an object — may capture all secrets Source: https://github.com/psbanka/infra/blob/ba237fd3b0bc5052622fe4b4b21cc384199f8497/src/runner.ts#L332 330 | cwd: PKG_DIR, 331 | stdio: ['pipe', 'pipe', 'pipe'], > 332 | env: { ...process.env }, 333 | }); 334 |
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.2.1
2 findingsSpreading entire process.env into an object — may capture all secrets Source: https://github.com/psbanka/infra/blob/8dd48d933ef44c32589e64381bd31a37a21f05ce/src/runner.ts#L332 330 | cwd: PKG_DIR, 331 | stdio: ['pipe', 'pipe', 'pipe'], > 332 | env: { ...process.env }, 333 | }); 334 |
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.2.0
2 findingsSpreading entire process.env into an object — may capture all secrets Source: https://github.com/psbanka/infra/blob/8dd48d933ef44c32589e64381bd31a37a21f05ce/src/runner.ts#L332 330 | cwd: PKG_DIR, 331 | stdio: ['pipe', 'pipe', 'pipe'], > 332 | env: { ...process.env }, 333 | }); 334 |
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.1.0
1 findingPackage was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.