Securing CI/CD in Open Source Projects: Cilium’s Final Guide to Credentials, Verification, and Remaining Gaps
VK Cloud has released the concluding installment of its translated Cilium series on securing the software supply chain for open source projects. While Part 1 focused on access controls and Part 2 addressed dependency hardening, this final article examines how to isolate secrets between CI and production environments, sign every release without long-lived keys using Sigstore Cosign, and identify remaining security gaps. It also analyzes GitHub’s Actions security roadmap for 2026 and evaluates how upcoming platform changes complement the controls already implemented by the Cilium project.
Protecting Credentials
Cilium assumes that any single layer may eventually fail. Therefore, if a CI workflow is ever compromised, it must not grant attackers access to high-value assets. By default, GITHUB_TOKEN permissions are restricted to minimal read access for contents and packages. Workflows requiring elevated rights must explicitly declare them, preventing forgotten permission blocks from granting broad write access across the organization.
The project maintains two distinct sets of registry credentials behind separate protected GitHub environments. CI credentials can only push development images to quay.io/cilium/*-ci and are available to CI builds. Even if a workflow is compromised, these credentials cannot be used to push production-tagged images. Production credentials reside behind the “release” environment and require explicit maintainer approval before a workflow can access them. Neither forks, feature branches, nor regular CI builds can reach these secrets.
Every actions/checkout call also sets persist-credentials: false, ensuring the GITHUB_TOKEN never appears in the runner’s git configuration where later steps could intercept it.
Signing and Attestation
Every released container image (cilium, operator-*, hubble-relay, clustermesh-apiserver) is signed using Sigstore Cosign with keyless OIDC signatures. No long-lived signing keys exist that could be stolen. The signing pipeline is implemented as a reusable composite action that installs Cosign, generates SPDX SBOMs via anchore/sbom-action, signs the image, and attaches the SBOM attestation. The same process applies to Helm chart OCI artifacts. Release builds execute inside protected environments, ensuring production registry credentials remain gated by environment protection rules.
Additional Hardening Measures
Cilium enforces several supplementary controls: release tags and assets become immutable after publication, every commit must carry a Signed-off-by line enforced by the maintainers-little-helper bot, and the project has undergone third-party security audits by ADA Logics that include a published threat model.
Identified Gaps and Future Work
An internal audit against OpenSSF Scorecard, SLSA, and StepSecurity recommendations revealed several shortcomings. The project currently disables provenance in docker/build-push-action, lacks dependency review during pull requests, does not run govulncheck in CI, and still references 68 internal actions at @main instead of pinned SHAs. Additional missing items include continuous Scorecard monitoring, an updated SECURITY-INSIGHTS.yml file, and a go mod verify step. The team plans to address these issues and welcomes community contributions.
GitHub’s 2026 Actions Security Roadmap
The article also reviews GitHub’s April 2026 roadmap, which introduces platform-level changes across the ecosystem, attack surface, and infrastructure layers. Planned features such as native dependency blocking at the YAML level, centralized workflow execution policies via rulesets, scoped secrets, and a native L7 egress firewall would directly address several gaps Cilium currently mitigates manually. The project views these upcoming capabilities as validation of the defense-in-depth approach it has already adopted.
The authors conclude that supply-chain security requires repeatedly asking what happens if a trusted component is compromised and then adding layers that limit blast radius. Cilium’s strategy combines access controls, pinned digests, least privilege, credential isolation, and signatures. While no combination guarantees invulnerability, openly sharing both successes and remaining weaknesses raises the baseline for the entire open source ecosystem.
Related articles
Passwordless Kubernetes Image Pulling with Artifact Keeper via ServiceAccount Tokens
Kubernetes 1.34 and later enables kubelet to forward a pod's ServiceAccount token to an external image credential provider plugin, allowing the plugin to exchange it for short-lived read-only credentials from a compatible registry. Artifact Keeper, an open-source Rust-based OCI and package registry, implements an OIDC provider that validates these tokens and issues temporary credentials without requiring imagePullSecrets in manifests. The approach follows zero-trust principles by eliminating long-lived secrets that can leak across namespaces or clusters. A custom credential provider binary handles the token exchange, enforces audience restrictions, and redacts sensitive data from logs. The solution requires specific ClusterRole permissions for nodes, kubelet flags, and registry-side OIDC mappings that bind Kubernetes namespaces to read-only groups. Testing on kind 1.34.3 confirmed successful pulls for authorized ServiceAccounts and clear 401 errors for unauthorized ones when imagePullPolicy is set to Always.
Malicious Code Injected into LiteLLM Open Source AI Package via Supply Chain Attack
The open-source generative AI tool LiteLLM had malicious code inserted into its official distribution packages, enabling credential theft and remote code execution. The compromise affected version 1.107.0 released on October 21, 2026, and was delivered through legitimate channels in a classic software supply chain attack. Seven malicious wheel files were uploaded to PyPI, while official container images on Docker Hub and GitHub Container Registry were also tainted. Security firm JFrog discovered that the malware steals a wide range of secrets including cloud credentials, SSH private keys, browser-stored passwords, development tokens, and AI service API keys from LiteLLM's database. The code also supports execution of externally fetched payloads and abuses Python's startup mechanisms to run even when the application itself is not loaded. This marks the second supply chain incident involving the project in 2026, following a separate event in March.
GhostAction Campaign Compromises 790 GitHub Repositories via Malicious Workflows
Researchers from OpenSourceMalware have identified 790 publicly accessible GitHub repositories containing malicious workflows planted by the GhostAction campaign as of October 9. The campaign abuses trusted maintainer accounts to inject workflows that automatically exfiltrate secrets including AWS access keys and tokens for GitHub, GitLab, Google, Slack, SendGrid, OpenAI, Anthropic, and OpenRouter. Earlier counts by GitGuardian recorded 772 repositories between August 31 and September 30, though the datasets differ and are not cumulative. A separate wave on October 8 impacted 346 repositories linked to two maintainer accounts, including a project belonging to Uber. The malicious workflow runs on code pushes or manual triggers, scans repository files and full Git history for credentials, and sends findings in plaintext to attacker infrastructure. Removing the workflow file does not mitigate exposure, as successful executions already leak credentials and old commits may still contain secrets.
SberTech Launches Platform V Orchestrator for Security Services to Scan Software Before Corporate Deployment
SberTech has announced the launch of a new direction focused on analyzing the security of software prior to its integration into corporate infrastructures. The initiative is built around the company's own Laboratory for Software Verification and the technological platform Platform V Orchestrator for Security Services. This platform combines components for working with both built-in and external analysis tools, enabling checks of digital artifacts, control over software composition and changes, and detection of vulnerabilities, hidden threats, and defects in source code and repositories. SberTech aims to replace fragmented checks and manual result processing with a single managed process, allowing scaled verification without proportional team growth. The move responds to the adoption of hundreds of products from various vendors, widespread use of open-source components, and rising attacks on software supply chains. Primary customers include banks, industrial enterprises, telecom operators, energy companies, and the public sector. The solution is offered as a standalone product that supports on-premises deployment and operation in isolated environments such as private clouds and dedicated data processing contours.