Container Image Risks: Why Skipping Verification Today Breaks Your Service Tomorrow
Nikita, technical leader of the Evolution Container Security and Addons team at Cloud.ru, outlines four common container security pitfalls that repeatedly appear in client Kubernetes environments. The post covers vulnerable dependencies, supply-chain attacks on image registries, secret leakage in layers, and CI/CD exposure points, supported by concrete incidents from production clusters.
Thin spot 1. Untracked vulnerabilities in dependencies
The most frequent issue is outdated software carrying known CVE entries combined with overly permissive configurations. Small teams often stay current because their infrastructure is simple, while large enterprises remain on old versions due to extensive custom integrations but compensate with strict access policies. Mid-sized organizations face the worst position: custom wrappers already hinder updates, yet they lack dedicated security staff or tooling to offset the risk.
A 2025 vulnerability in nvidia-container-toolkit (CVE-2025-23266) illustrates the danger. The flaw resided in OCI hooks that execute with host privileges. An attacker could embed a malicious library inside a minimal Dockerfile; after escaping the container, the attacker enumerated pods, located a service account with nodes/proxy rights, and used the kubelet port 10250 to execute commands on another node, ultimately accessing mounted secrets. The incident combined the NVIDIA component vulnerability with excessive service-account privileges. A second high-severity flaw appeared in the same component shortly afterward, reinforcing that privileged add-ons such as GPU operators and CNI plugins require patching within days rather than weeks.
Thin spot 2. Supply chain attacks: even pinned tags are not safe
The classic advice to avoid the latest tag proved insufficient when attackers compromised Aqua Security developer accounts in early 2026. They performed force pushes that reassigned more than seventy Trivy tags to malicious commits containing secret-exfiltration logic. Later, using a remaining compromised service account, they published tainted images directly to Docker Hub. Organizations pulling fresh images without cache or additional verification could have deployed the malicious versions.
Cloud.ru avoided impact through a private registry with caching and mandatory manual review plus secondary scanning before promotion. The incident demonstrated that a tag can be silently rebound to different content; the only reliable reference is the full SHA256 digest of the image manifest. Additional protection comes from Cosign signatures verified inside the cluster by Connaisseur, Kyverno, or Image Validating Admission Policies. The article also notes the gh0stEdit class of attacks that can alter unpacked layer contents while preserving manifest hashes.
Thin spot 3. Secret leakage: regex-based detection still works
Developers continue to commit private keys and hardcoded credentials that end up baked into container layers. Two real cases involved a DevOps engineer who left an SSH key in a working directory before pushing, and a tester who hardcoded credentials that survived the build pipeline. Simply overwriting the file or rebuilding a new image does not remove the secret from Git history or from previously pushed image layers; rotation of the secret itself remains the only reliable remediation.
Effective controls begin with pre-commit hooks that block commits containing obvious secret patterns locally. Subsequent layers include CI/CD scanning with tools such as Trivy and Checkov, followed by registry-level scanning provided by Evolution Container Security.
Thin spot 4. CI/CD as an attack vector
The article concludes by noting that supply-chain and secret issues ultimately converge in CI/CD pipelines. Automated verification of image signatures, continuous vulnerability monitoring, and strict service-account hygiene are required to prevent a single compromised upstream image or leaked credential from granting cluster-wide access.
Related articles
CrowdSec Confirms Theft of Source Code from Roughly 300 GitHub Repositories via TanStack Supply Chain Attack
French cybersecurity firm CrowdSec has confirmed that attackers stole source code from approximately 300 GitHub repositories, including around 170 private ones. The breach occurred in May 2026 through a compromised TanStack component that exfiltrated an API key with read access to the private codebase. The stolen material included code for the company's SaaS console, AWS procedures, connectors, and automation tools, while the remaining repositories contained already-public open source code. No customer data, passwords, organization details, tokens, or other secrets were included in the leak, and all potentially affected credentials were immediately rotated. CrowdSec stated that the code is tightly integrated with internal systems and has largely changed over the past four months, reducing its usefulness outside the company's environment. The SaaS service code undergoes regular audits, and the company sees no immediate threat from the exposure while the investigation continues.
Dependency Confusion Attacks Let Attackers Hijack Internal Library Names in Corporate Builds
A widespread supply chain risk allows attackers to publish packages with internal company names on public registries such as npm and PyPI, causing build systems to pull malicious versions instead of internal ones. The attack works because package managers treat multiple registries as a single list and select the highest version number, with no inherent priority for internal sources. Researcher Alex Birsan demonstrated the technique in February 2021 by registering names harvested from open repositories and error messages, successfully injecting packages into builds at Microsoft, Apple, PayPal, Shopify, Netflix, Tesla and Uber. The malicious code executes during installation because setup scripts and lifecycle hooks run with the privileges of the build agent, exposing environment variables, tokens and internal network access. Mitigation requires a single internal proxy repository that never mixes public responses for internal package names, scoped namespaces bound to private registries, lock files with content hashes, and disabling install scripts where possible. The technique remains effective against any organization that lists both internal and public registries in its build configuration.
NEOMSA ESB Release Strengthens Supply Chain Security Through SBOM and Dependency Hardening
Neoflex has released a new version of its NEOMSA ESB integration platform with a primary focus on cleaning up the software bill of materials and eliminating critical and high-severity vulnerabilities. The team automated SBOM generation using CycloneDX, ran SCA scans with Grype and OWASP Dependency-Check, and performed SAST and secret scanning across all build pipelines. Instead of blindly updating to the latest versions, engineers applied minimal fixed versions for each advisory while handling complex cases involving transitive dependencies, locked files, and deprecated build tools. The effort reduced the total package count from 5,872 to 1,683 after migrating the frontend build to Vite in Camel Karavan 4.18. Remaining medium and low findings were tracked in DefectDojo with clear remediation timelines. The changes deliver measurable risk reduction for on-premise deployments in critical infrastructure and financial organizations.
CodeScoring Launches CodeScoring.Save Artifact Repository for Secure Enterprise Development
CodeScoring has introduced its own artifact storage solution called CodeScoring.Save, designed to handle packages, libraries, container images, and other software components used in development. The product targets corporate users of any size seeking a predictable and resilient repository that integrates security checks directly into storage and distribution workflows. Built in Go for modern Kubernetes environments, Save supports multiple package formats including Maven, npm, NuGet, PyPI, Go Modules, Docker/OCI, DEB, and RPM while providing proxy access to external repositories. It features role-based access, auditing, independent scaling of compute and storage layers, and native integration with CodeScoring.OSA to surface vulnerability data inside the repository itself. The company positions Save as a standalone local deployment option that can operate independently or alongside its existing OSA Proxy module to block malicious components at the repository level. Future plans include support for AI models as artifacts, starting with storage and distribution for ecosystems such as Hugging Face, along with certification for Russian secure development requirements.