Skip to content

Security audit fixes + CI supply-chain guards#31

Closed
electricapp wants to merge 3 commits into
mainfrom
ci/workflow-standards
Closed

Security audit fixes + CI supply-chain guards#31
electricapp wants to merge 3 commits into
mainfrom
ci/workflow-standards

Conversation

@electricapp

Copy link
Copy Markdown
Owner

Batch of security/correctness fixes from a deep audit, plus CI supply-chain hardening.

Security:

  • sandbox: fix /proc/<ppid>/environ secret leak (PR_SET_DUMPABLE), close the pre-cgroup egress window (join cgroup in pre_exec), cgroup.kill teardown, PID-reuse-safe stop
  • crypto: SLSA/DSSE verification now fails closed on unsigned attestations (was accepting them as verified); bind cert SAN identity to owner/repo
  • scanner: close rule evasions — download-artifact pattern globs, per-line external-artifact exemptions (no decoy bypass), injection context normalization (case/index), case-insensitive actions/checkout, local composite-action audit, conclusion-gate || bypass, extra permission scopes
  • oidc/cli/proxy: flag wildcard aud, degrade GCP || conditions to wildcard, guard --diff-base against git arg-injection, connection rate window (no mid-build kill), streamed request bodies

CI: cargo-deny + deny.toml, actionlint, cargo-machete, scheduled audit, repo settings.

Tests + clippy pass on macOS and the linux target.

sandbox: PR_SET_DUMPABLE(0) on orchestrator+proxies; join egress cgroup in
  pre_exec (close exec->migrate window); cgroup.kill teardown; WNOWAIT stop;
  F_DUPFD_CLOEXEC; helper read timeouts; unique cgroup suffix
crypto: DSSE/chain fail-closed (unsigned attestation != verified); cert SAN
  identity binding to owner/repo; single /commits fetch; cap error bodies
scanner: download-artifact pattern globs; per-line external-artifact
  exemptions (no decoy bypass); normalize injection contexts (case/index);
  case-insensitive actions/checkout; audit local composite actions;
  conclusion-gate || bypass; id-token/security-events/deployments scopes;
  case-insensitive secret extraction
oidc: flag wildcard aud; degrade GCP || attribute conditions to wildcard
cli/proxy: guard --diff-base ref before git show; block signals on signal
  worker thread; replay distinguishes git error from missing file;
  case-insensitive forbidden-method block; connection rate window (no
  mid-build kill); stream request body
misc: alias-bomb guard on manifest/oidc parse; reject path traversal in ipc
@electricapp

Copy link
Copy Markdown
Owner Author

Superseded by #32 — rebased on current main with just the security commit (the CI commits here are covered by #27). Closing as stale.

@electricapp electricapp closed this Jul 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant