Subtitle: Secure Continuous Delivery for Agent Code
Track: Supply-chain / platform eng · Format: 30 min
Deck: ../talk-5/
Agents get updated constantly, new skills, new versions, often pushed via Git
webhooks from sources you don't fully control. That's a supply-chain attack surface
hiding inside your deploy pipeline. We walk our hardened deploy path: HMAC-SHA256
verification of GitHub/GitLab/generic webhooks (with a 5-minute replay-dedup window
and optional IP allowlist), archive extraction that rejects path traversal and
symlinks/hardlinks, strips setuid/setgid bits (mode & 0755) so no planted
binary can escalate, enforces size/file-count limits against zip-bombs, and performs
an atomic versioned symlink swap so a deploy either fully lands or doesn't, with
instant rollback. The theme: treat every incoming deploy as hostile until proven
otherwise.
Platform/release engineers; anyone building plugin/skill marketplaces or webhook-driven deploys.
- Webhook auth done right (HMAC + replay protection).
- Safe archive extraction (traversal, symlink, setuid, zip-bomb defenses).
- Atomic symlink deploys for all-or-nothing + instant rollback.
- A checklist for any "deploy code from outside" path.
- Where it sits in zero trust: config integrity + recovery (signed configs / attestation are the Advanced next rung).
- Your deploy pipeline is an attack surface (engineer9 skills ship via git).
- The threat: spoofed webhook, traversal, symlink escape, setuid binary, zip-bomb.
- HMAC-SHA256 verification per provider.
- Replay-dedup window + optional IP allowlist.
- Extraction: strip-root + per-path containment check.
- Reject symlinks/hardlinks.
& 0755setuid/setgid strip.- Size / file-count limits.
- Atomic versioned symlink swap + instant rollback.
- Demo: bad HMAC → 401;
../tar → rejected; setuid bit gone after deploy. - Takeaways.
Source: internal/gitdeploy/, internal/api/deploy.go.
"Every webhook-driven deploy is a door. I'll try five different ways to sneak malicious code through ours, bad signature, path traversal, symlink, setuid bit, zip-bomb, and show you the check that stops each."