CI/Lock (cilock) is presented as a way to produce signed, verifiable records of what a continuous integration (CI) build step actually does, addressing cases where attackers execute malicious code during builds and later make it hard to prove what ran. The article describes two recent supply-chain incidents: a force-push retagging in an action repository that caused many pipelines pinned to version tags to run credential-stealing code, and Python packages on PyPI that included a starter-time stealer via a .pth file. In both cases, inspecting workflow configuration alone was insufficient because the CI effectively executed untrusted or altered code, while there was no signed proof of the executed behavior.
cilock works by wrapping a CI command, tracing the processes and their behavior (using ptrace or an eBPF backend, Linux-only and opt-in), collecting evidence such as commands, environment, files read, and artifacts produced, and then signing this evidence as an in-toto/DSSE attestation. Release policies are signed by a human (or via GitHub Actions keyless signing using OIDC), and verification checks that the recorded behavior complies with the policy. The tool is described as forensic rather than an inline prevention mechanism, and it can also support an offline or bring-your-own-key setup.