xDuct: CI/CD Pipeline Secret Security
Split pipeline secrets across stages and runners using XorIDA threshold sharing. No single runner holds complete credentials. Supply chain compromises yield only cryptographic noise.
The Problem
CI/CD runners are the #1 attack surface for supply chain compromise. The CircleCI breach in 2023 exposed all customer secrets. The CodeCov breach modified a bash uploader to exfiltrate credentials. Runners have full, unguarded access to every secret they need.
Every CI/CD pipeline stage — build, test, deploy — receives complete secrets as environment variables. A compromised build runner can read the deploy key. A tampered test container can harvest database credentials. The blast radius of any single runner compromise is total.
OIDC federation and short-lived tokens reduce exposure windows but do not solve the fundamental problem: at execution time, the secret exists complete and in cleartext in the runner's memory. Memory-scraping attacks, process injection, and compromised base images all bypass token scoping.
The Old Way
The PRIVATE.ME Solution
xDuct splits each pipeline secret into K-of-N shares distributed across stages and runners. The build stage receives Share 1. The deploy stage receives Share 2. Reconstruction happens only at the step that needs the complete secret, and only for the duration of that step.
Secrets are split before they enter the pipeline. Each runner receives shares, not secrets. A compromised build runner captures a share that reveals zero information about the deploy key. Even if an attacker controls K-1 runners, they learn nothing about any secret.
The New Way
Architecture
xDuct integrates with GitHub Actions, GitLab CI, and any CI system that supports custom secret injection. Secrets are split at configuration time and reconstructed at execution time.
Use Cases
Distribute shares across GitHub Actions jobs. No single job file exposes a complete credential.
GitHubSplit code signing keys so no single runner can sign unauthorized releases. Threshold reconstruction at the signing step only.
SigningEach pipeline stage holds a different share. Compromising the test environment never exposes production deploy keys.
IsolationEven if a malicious dependency exfiltrates environment variables, it captures only shares — not secrets.
DefenseIntegration
import { splitSecret, reconstructForStep } from '@private.me/xduct'; // Split deploy key across 3 pipeline stages const shares = await splitSecret('DEPLOY_KEY', { k: 2, n: 3, stages: ['build', 'test', 'deploy'] }); // At deploy step: reconstruct from available shares const key = await reconstructForStep(shares, 'deploy', { available: ['build', 'deploy'], threshold: 2 }); // key available in memory for this step only
Security Properties
| Property | Mechanism | Guarantee |
|---|---|---|
| Runner Isolation | Per-stage shares | ✓ No single runner has complete secret |
| Integrity | HMAC-SHA256 per share | ✓ Tamper-evident |
| Supply Chain | Information-theoretic split | ✓ Exfiltration yields noise |
| Rotation | Atomic share replacement | ✓ Zero-downtime |
| Quantum Resistance | GF(2) operations | ✓ Unconditional security |
Verifiable Data Protection
Every operation in this ACI produces a verifiable audit trail via xProve. HMAC-chained integrity proofs let auditors confirm that data was split, stored, and reconstructed correctly — without accessing the data itself.
Read the xProve white paper →
Ready to deploy xDuct?
Talk to Ren, our AI sales engineer, or book a live demo with our team.
Ship Proofs, Not Source
xDuct generates cryptographic proofs of correct execution without exposing proprietary algorithms. Verify integrity using zero-knowledge proofs — no source code required.
- Tier 1 HMAC (~0.7KB)
- Tier 2 Commit-Reveal (~0.5KB)
- Tier 3 IT-MAC (~0.3KB)
- Tier 4 KKW ZK (~0.4KB)
Use Cases
Deployment Options
SaaS Recommended
Fully managed infrastructure. Call our REST API, we handle scaling, updates, and operations.
- Zero infrastructure setup
- Automatic updates
- 99.9% uptime SLA
- Enterprise SLA available
SDK Integration
Embed directly in your application. Runs in your codebase with full programmatic control.
npm install @private.me/xduct- TypeScript/JavaScript SDK
- Full source access
- Enterprise support available
On-Premise Upon Request
Enterprise CLI for compliance, air-gap, or data residency requirements.
- Complete data sovereignty
- Air-gap capable deployment
- Custom SLA + dedicated support
- Professional services included
Enterprise On-Premise Deployment
While xDuct is primarily delivered as SaaS or SDK, we build dedicated on-premise infrastructure for customers with:
- Regulatory mandates — HIPAA, SOX, FedRAMP, CMMC requiring self-hosted processing
- Air-gapped environments — SCIF, classified networks, offline operations
- Data residency requirements — EU GDPR, China data laws, government mandates
- Custom integration needs — Embed in proprietary platforms, specialized workflows
Includes: Enterprise CLI, Docker/Kubernetes orchestration, RBAC, audit logging, and dedicated support.