Audit of 25 Package Managers Shows Only Two Verify Every Package's Integrity Against Compromised Repositories
Trail of Bits tested 25 of the most widely used package managers to see whether they would notice a compromised repository serving malicious code instead of the legitimate package. Cryptographic hashes or signatures can protect code integrity, yet many managers remain vulnerable due to design choices, resource constraints, or usability trade-offs.
Lockfile Integrity Checks
Placing a cryptographic hash of package contents in a lockfile and verifying it after download is the most straightforward defense. Roughly half of the tested managers enable this check by default. The rest require extra configuration, use hashes in a cryptographically unsafe manner, or omit them entirely.
Go and vcpkg verify integrity on every download. Bun, Bundler, Cargo, npm, pnpm, Poetry, SwiftPM, uv, and Yarn perform checks when a lockfile is present. Conda, Gradle, Pip, NuGet, and Pub require additional steps beyond a standard lockfile. CocoaPods, Composer, Conan, cpanminus, Gem, Maven, PowerShellGet, PSResourceGet, and R do not verify integrity even with lockfiles or lack lockfile support altogether.
Signature Verification
Only Go verifies signatures by default. Bundler, Gem, Gradle, Maven, npm, and NuGet support signatures after manual configuration. The remaining managers either lack verification code or do not support signatures at all.
Experimental Setup
The researcher built a test environment using Docker containers and mitmproxy to dynamically intercept and modify responses from simulated malicious repositories. A WireGuard tunnel routed traffic so the proxy could fully control plaintext responses while the root certificate remained trusted inside the containers. Tests used latest versions, default flags, and popular packages from public repositories.
Almost every manager uses HTTPS and validates certificates. The notable exception is cpanminus, which still defaults to unencrypted HTTP. Several managers store hashes in lockfiles yet fail to enforce them strictly. Pub warns about hash mismatches but still installs the package unless the non-default --enforce-lockfile flag is used. Older versions of pnpm exhibited similar behavior. Conan relies on MD5-based recipe revisions that are not intended for cryptographic integrity. CocoaPods and Composer protect Git references or commit hashes but cannot detect malicious content served under the same tag or archive URL.
The study concludes that lockfiles serve multiple purposes beyond supply-chain security, and current hash-based approaches sometimes conflict with the desire for rapid security updates. Several communities are actively working on improved schemes.
Related articles
Polymarket Suffers Supply Chain Attack via Compromised DebugBear Monitoring Script
Attackers compromised DNS records of DebugBear, a real user monitoring provider, to inject malicious JavaScript into Polymarket pages. The script extracted wallet data and trading credentials from browser storage, then used the platform's official relayer to execute unauthorized withdrawals totaling approximately $2.7 million across 737 wallets. No smart contract vulnerabilities were exploited; all 985 unauthorized transactions carried valid user signatures. The incident occurred on October 29 and was resolved within an hour after trading was halted, with Polymarket returning $3.9 million including compensation. This attack class matches the 2023 Ledger Connect Kit compromise, highlighting risks from third-party scripts in browser sessions. Polymarket has since committed to stricter CSP policies, script pinning, and sandboxing. The case underscores that browser-based sessions with full API privileges remain a critical trust boundary in crypto platforms.
Approved Stamp: How Container Images Pass Rigorous Security Checks Before Reaching Production
DevSecOps engineer Vitaly Matveev from ecom.tech describes a comprehensive lifecycle process for securing Docker images from build to deployment. The approach combines base image validation through a centralized manifest, Dockerfile checks via Infra Gate, Security Quality Gate results stored as attestations in Harbor, and cryptographic signing only after all checks pass. Kyverno policies in production Kubernetes clusters enforce signature verification and block unsigned or unapproved images. Daily automated scans of base images using EPSS scoring detect new vulnerabilities and notify responsible platform teams. The system ensures traceability from pipeline ID to running pod while maintaining a developer-centric workflow with clear remediation guidance.
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.