Poisoned Pipeline / Techniques / T0159
Malicious artifact execution
Artifact Security Open Source Security CI/CD Posture
Malicious artifact execution refers to an attack where an attacker injects or modifies a software component with malicious code that is executed when the component is used by a downstream system in the CI/CD process.
When a CI/CD process lacks sufficient mechanisms to validate the integrity of code and artifacts, attackers can insert malicious code that appears to be harmless.
This allows the malicious code to pass through the pipeline undetected, potentially causing harm in the CI/CD process or in production.
The malicious code can be executed in the CI/CD process or even in production.
Where this idea came from
Taken from a public incident, vendor advisory, or first-party write-up cited below.
- https://about.codecov.io/security-update/
- https://www.legitsecurity.com/blog/artifact-poisoning-vulnerability-discovered-in-rust
- https://owasp.org/www-project-top-10-ci-cd-security-risks/CICD-SEC-09-Improper-Artifact-Integrity-Validation
Mitigations
- M1590 Implement artifact signing and verification
- M1591 Validate dependencies
- M1660 Isolate pipeline for unreviewed code
- M1662 Evaluate pipeline execution permissions
Detections
- D1510 Implement Intrusion Detection System and anti-malware
- D1590 Implement continuous monitoring and logging of the CI/CD process
Observed in incidents (60)
- npm event-stream / flatmap-stream
- @velora-dex/sdk 9.4.1 build-pipeline backdoor
- WEL1DROPPER / NUL1DROPPER npm slopsquatting
- Operation ShadowHammer (ASUS Live Update)
- Forged and timestamp-cloned commits planted a preinstall dropper in hugo-paper and mevn-cli
- tensorlake 0.5.144 steals tokens, then wipes the home directory if they are revoked
- PolinRider poisons visanduma/nova-two-factor Packagist via Git
- actions-cool GitHub Action tags still serve Mini Shai-Hulud after re-enablement
- SleeperGem (git_credential_manager, Dendreo, fastlane plugin)
- @subql/common 5.8.3 published after a CI artifact swap
- llm-oracle malicious npm payload
- NotPetya via M.E.Doc accounting-software updates
- tw-pkgprobe-7731 npm campaign targeted Twilio developers
- TraderTraitor interview repos point Terraform at a lookalike provider registry
- @joyfill/components and @joyfill/layouts obfuscated RAT
- MacSync via signed fake Claude Desktop installers on a lookalike download site
- JuiceStealer PyPI phishing and typosquats
- Polyfill.io CDN takeover
- Apex Accelerator published a malicious npm coding agent and a fake audit MCP
- Protestware on npm targeting Russian-language users
- indexed-btree runtime npm loader
- SANDWORM_MODE (yarsg / format-defaults)
- DPRK Contagious Interview (BeaverTail / npm + git)
- art-template 4.13.3–4.13.7 ownership-transfer hijack
- Rank Math PRO 3.0.123 downloads carried malware that plants a recreating backdoor
- react-refresh-update Meta library impersonation
- mathmain / mathsbase encrypted npm RAT (equation trigger)
- @7nohe/openapi-react-query-codegen poisoned publish workflow
- GlassWorm-hijacked contributor replaced OVHcloud CLI release assets on five published versions
- DAEMON Tools signed installers backdoored (Apr–May 2026)
- DPRK VS Code dictionary and tasks.json droppers
- Baileys npm forks farming WhatsApp Channel follows
- Virtualizor panel update delivered via BGP hijack of Softaculous update/billing infrastructure
- Placeholder domain third-party.com turned live ClickFix server
- Eleven NuGet packages posing as game cheats
- Deep-Live-Cam malicious git dependency
- testmetest npm names ship a Miasma-family worm that wipes the home directory if a stolen GitHub token is revoked
- WeaselBiscuit npm import-time stealer
- axios npm remote-access trojan
- Codecov Breach
- Compromised Injective SDK on npm
- Dependency confusion (Alex Birsan)
- MALFEX npm campaign, including a native imgdecode loader with no install script
- crates.io arrayref / proc-macro1 build-time dropper
- Ultralytics PyPI compromise
- Miasma botnet loader in @asyncapi npm packages
- GHAPPIER loader via @dforge-core/dforge-mcp trusted publishing
- nodemon-sudo backdoor via tslint-conf (no install script)
- Graphalgo spreads to Terraform providers and Go modules
- Graphalgo spreads to Terraform providers and Go modules
- LiteLLM 1.107.0 built from a lookalike repository shipped a startup-hook stealer and hourly loader
- sckit worm in MemTensor npm plugin and PyPI MemoryOS
- sckit worm in MemTensor npm plugin and PyPI MemoryOS
- TanStack Mini Shai-Hulud (CVE-2026-45321)
- npm chalk / debug maintainer phishing (Qix)
- UNC7017 swapped AOMEI update config for minutes at a time
- Microsoft counterfeit-installer campaign — same-named archives regenerate server-side per download
- PolinRider (DPRK) Git-to-registry jump
- RevStealer trojanized Electron apps via fake Claude desktop and cheat sites
- Brevo Cloudflare Worker ClickFix