Los ataques a la cadena de suministro están en auge. Las detecciones de malware de código abierto aumentaron un 73% en 2025. El año pasado, los paquetes debug y chalk fueron comprometidos con puertas traseras, la GitHub Action tj-actions fue comprometida e introdujo código malicioso en miles de pipelines, y la cuenta del mantenedor de axios fue secuestrada y utilizada para distribuir un RAT. Los lanzamientos maliciosos también afectaron a Zapier, ENS Domains, PostHog y Bitwarden CLI.
Cada uno de estos ataques era prevenible con los controles disponibles en ese momento. Las técnicas de los atacantes funcionaron porque la mayoría de los equipos no estaban ejecutando las defensas adecuadas en la capa de instalación, en sus pipelines o en sus máquinas de desarrollo.
Esta lista de verificación detalla cómo son esas defensas. Para los equipos de ingeniería que quieren adelantarse a los ataques a la cadena de suministro, esto es para ustedes.
TL;DR
La lista de verificación de seguridad de la cadena de suministro es un conjunto de tareas práctico y priorizado para fortalecer su stack contra la generación actual de ataques a la cadena de suministro, clasificadas como críticas, altas o medias para que sepa dónde centrarse primero. Cubre la gestión de dependencias, los controles de acceso e identidad, el fortalecimiento de CI/CD, la seguridad de contenedores, el bloqueo del entorno de desarrollo, su cadena de herramientas agéntica, y la monitorización y respuesta.
Qué incluye
La lista de verificación sigue las mismas superficies de ataque que explotaron los incidentes anteriores. Cada elemento nombra el ataque contra el que defiende, señala un cambio de configuración o herramienta concreto, y se basa en lo que un ingeniero en activo realmente tiene autoridad para cambiar. Aunque está dirigida a equipos de ingeniería, los responsables de seguridad, los ingenieros de plataforma y cualquiera que sea responsable de una parte del SDLC encontrarán secciones directamente relevantes para lo que entregan.
A continuación, hemos extraído algunos elementos para que te hagas una idea de su contenido.
Aplique una política de antigüedad de paquetes antes de cualquier instalación
El patrón en muchos de los grandes ataques recientes como axios, chalk y debug, y Mastra es que las versiones maliciosas de paquetes de confianza comenzaron a ejecutarse a las pocas horas de su publicación. Los controles en tiempo de instalación son lo que dan a su equipo el margen de tiempo para detectarlo.

Fije las dependencias del pipeline a los SHAs de los commits
Las acciones de terceros son código en el que su pipeline confía por defecto. Cuando las referencia por etiqueta, esa confianza se extiende a quien controle la etiqueta, y las etiquetas pueden moverse.

Trate los servidores MCP como dependencias de terceros
Las herramientas agénticas están a la vanguardia de la experimentación de los atacantes. Los servidores MCP se encuentran en un punto de la pila de especial alta confianza, con amplios permisos y acceso directo a los datos que los agentes gestionan en su nombre.

Protéjase contra la inyección de prompts en pipelines impulsados por IA
Añadir un agente de IA a un pipeline de CI amplía lo que se considera una entrada de riesgo. El contenido que antes fluía inofensivamente a través de un flujo de trabajo, como el título de una incidencia o una descripción de PR, se convierte en una instrucción ejecutable en el momento en que un agente lo lee en un prompt. Esa es una superficie de ataque mayor de lo que la mayoría de los equipos han modelado.

Capture registros de auditoría para envíos a registros, ejecuciones de CI y uso de tokens
Múltiples compromisos este año no aparecieron en absoluto en los registros de autenticación estándar. Los atacantes operaron desde sesiones en vivo con credenciales válidas, y la única señal significativa provino de los registros de auditoría de lo que esas sesiones realmente hicieron.

Descargue la lista de verificación de ataques a la cadena de suministro
Esos son cinco elementos de treinta. La lista de verificación completa detalla la aplicación de pinning y lockfile, los tokens con ámbito y la MFA resistente al phishing, el fortalecimiento de imágenes de contenedores, los controles de extensiones de IDE y plugins de navegador, la definición del ámbito de permisos del agente y los playbooks de respuesta a incidentes para cuando algo logre pasar.

Rellene el breve formulario a continuación para descargar la lista de verificación de ataques a la cadena de suministro y empiece a trabajar en ella antes de que el siguiente paquete aparezca en su grafo de dependencias.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "TechArticle",
"@id": "https://www.aikido.dev/blog/supply-chain-attacks-checklist#article",
"headline": "The practical checklist for defending against supply chain attacks",
"description": "A practical checklist for engineering teams to defend against maintainer takeovers, poisoned actions, and malicious releases. Thirty prioritized practices graded by criticality.",
"url": "https://www.aikido.dev/blog/supply-chain-attacks-checklist",
"datePublished": "2026-07-14",
"dateModified": "2026-07-14",
"inLanguage": "en-US",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://www.aikido.dev/blog/supply-chain-attacks-checklist"
},
"author": {
"@id": "https://www.aikido.dev/authors/nicholas-thomson#person"
},
"publisher": {
"@id": "https://www.aikido.dev#organization"
},
"image": {
"@type": "ImageObject",
"url": "https://www.aikido.dev/blog/supply-chain-attacks-checklist/og-image.png",
"width": 1200,
"height": 630
},
"keywords": [
"supply chain attacks",
"software supply chain security",
"npm supply chain attack",
"maintainer account takeover",
"package age policy",
"commit SHA pinning",
"GitHub Actions security",
"CI/CD security",
"MCP server security",
"prompt injection",
"phishing-resistant MFA",
"FIDO2",
"audit logging",
"malicious npm packages",
"postinstall hooks",
"dependency confusion",
"typosquatting",
"Aikido Intel",
"Aikido Safe Chain",
"developer machine security"
],
"about": [
{"@type": "Thing", "name": "Software Supply Chain Security"},
{"@type": "Thing", "name": "Open Source Security"},
{"@type": "Thing", "name": "CI/CD Pipeline Security"},
{"@type": "Thing", "name": "npm Security"},
{"@type": "Thing", "name": "Agentic AI Security"}
],
"mentions": [
{"@type": "SoftwareApplication", "name": "axios", "applicationCategory": "npm package"},
{"@type": "SoftwareApplication", "name": "chalk", "applicationCategory": "npm package"},
{"@type": "SoftwareApplication", "name": "debug", "applicationCategory": "npm package"},
{"@type": "SoftwareApplication", "name": "tj-actions/changed-files", "applicationCategory": "GitHub Action"},
{"@type": "SoftwareApplication", "name": "Mastra", "applicationCategory": "npm package"},
{"@type": "SoftwareApplication", "name": "postmark-mcp", "applicationCategory": "MCP server"},
{"@type": "SoftwareApplication", "name": "Bitwarden CLI", "applicationCategory": "CLI tool"},
{"@type": "SoftwareApplication", "name": "Aikido Intel", "url": "https://intel.aikido.dev/"},
{"@type": "SoftwareApplication", "name": "Aikido Safe Chain", "url": "https://www.aikido.dev/protect/safe-chain"},
{"@type": "SoftwareApplication", "name": "Aikido Device Protection", "url": "https://www.aikido.dev/protect/device-protection"},
{"@type": "SoftwareApplication", "name": "Aikido Libraries", "url": "https://help.aikido.dev/autofix-and-remediation/aikido-libraries-overview"},
{"@type": "SoftwareApplication", "name": "Aikido Images", "url": "https://www.aikido.dev/cloud/hardened-images"},
{"@type": "Thing", "name": "Shai-Hulud campaign"},
{"@type": "Thing", "name": "PromptPwnd"},
{"@type": "Thing", "name": "Model Context Protocol (MCP)"},
{"@type": "Thing", "name": "FIDO2"},
{"@type": "Thing", "name": "Passkeys"},
{"@type": "Thing", "name": "OIDC"},
{"@type": "Thing", "name": "SBOM"},
{"@type": "Thing", "name": "CVE-2025-30066"}
],
"articleSection": [
"Dependency management",
"Access and identity controls",
"CI/CD hardening",
"Container security",
"Developer environments",
"Agentic toolchain",
"Monitoring and response"
],
"speakable": {
"@type": "SpeakableSpecification",
"cssSelector": ["h1", "h2", ".tldr"]
},
"timeRequired": "PT8M",
"isAccessibleForFree": true,
"citation": [
{
"@type": "CreativeWork",
"name": "ReversingLabs Software Supply Chain Security Report 2026",
"url": "https://www.reversinglabs.com/blog/sscs-report-2026-guidance-timeline"
},
{
"@type": "CreativeWork",
"name": "npm debug and chalk packages compromised",
"url": "https://www.aikido.dev/blog/npm-debug-and-chalk-packages-compromised"
},
{
"@type": "CreativeWork",
"name": "tj-actions/changed-files supply chain attack",
"url": "https://www.aikido.dev/blog/get-the-tl-dr-tj-actions-changed-files-supply-chain-attack"
},
{
"@type": "CreativeWork",
"name": "axios npm compromised: maintainer hijacked with RAT",
"url": "https://www.aikido.dev/blog/axios-npm-compromised-maintainer-hijacked-rat"
},
{
"@type": "CreativeWork",
"name": "Shai-Hulud strikes again: hitting Zapier, ENS Domains, PostHog",
"url": "https://www.aikido.dev/blog/shai-hulud-strikes-again-hitting-zapier-ensdomains"
},
{
"@type": "CreativeWork",
"name": "Shai-Hulud npm Bitwarden CLI compromise",
"url": "https://www.aikido.dev/blog/shai-hulud-npm-bitwarden-cli-compromise"
}
]
},
{
"@type": "WebPage",
"@id": "https://www.aikido.dev/blog/supply-chain-attacks-checklist",
"url": "https://www.aikido.dev/blog/supply-chain-attacks-checklist",
"name": "The practical checklist for defending against supply chain attacks",
"description": "A practical checklist for engineering teams to defend against maintainer takeovers, poisoned actions, and malicious releases.",
"inLanguage": "en-US",
"isPartOf": {
"@id": "https://www.aikido.dev#website"
},
"primaryImageOfPage": {
"@type": "ImageObject",
"url": "https://www.aikido.dev/blog/supply-chain-attacks-checklist/og-image.png"
},
"breadcrumb": {
"@id": "https://www.aikido.dev/blog/supply-chain-attacks-checklist#breadcrumb"
},
"about": {"@id": "https://www.aikido.dev/blog/supply-chain-attacks-checklist#article"}
},
{
"@type": "BreadcrumbList",
"@id": "https://www.aikido.dev/blog/supply-chain-attacks-checklist#breadcrumb",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://www.aikido.dev"
},
{
"@type": "ListItem",
"position": 2,
"name": "Blog",
"item": "https://www.aikido.dev/blog"
},
{
"@type": "ListItem",
"position": 3,
"name": "Guides & Best Practices",
"item": "https://www.aikido.dev/category/guides-best-practices"
},
{
"@type": "ListItem",
"position": 4,
"name": "The practical checklist for defending against supply chain attacks",
"item": "https://www.aikido.dev/blog/supply-chain-attacks-checklist"
}
]
},
{
"@type": "ItemList",
"@id": "https://www.aikido.dev/blog/supply-chain-attacks-checklist#itemlist",
"name": "Featured checklist items",
"itemListOrder": "https://schema.org/ItemListOrderAscending",
"numberOfItems": 5,
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Enforce a package age policy before anything installs",
"description": "A 48-hour minimum age policy blocks same-day typosquatting and fast-moving malware campaigns before they reach your developers."
},
{
"@type": "ListItem",
"position": 2,
"name": "Pin pipeline dependencies to commit SHAs",
"description": "Third-party actions are code your pipeline trusts by default. Pin every action to an immutable commit SHA rather than a mutable tag."
},
{
"@type": "ListItem",
"position": 3,
"name": "Treat MCP servers as third-party dependencies",
"description": "MCP servers carry the same supply chain risks as any other dependency. Pin them, verify the publisher, and scope their permissions."
},
{
"@type": "ListItem",
"position": 4,
"name": "Guard against prompt injection in AI-powered pipelines",
"description": "As AI agents gain elevated access to CI pipelines, prompt injection becomes a live attack surface for anyone who can open a PR."
},
{
"@type": "ListItem",
"position": 5,
"name": "Capture audit logs for registry pushes, CI runs, and token usage",
"description": "Audit logs give you the timeline to reconstruct what happened, confirm the blast radius, and decide what to rotate."
}
]
},
{
"@type": "Person",
"@id": "https://www.aikido.dev/authors/nicholas-thomson#person",
"name": "Nicholas Thomson",
"jobTitle": "Senior SEO & Growth Lead",
"url": "https://www.aikido.dev/authors/nicholas-thomson",
"worksFor": {
"@id": "https://www.aikido.dev#organization"
},
"sameAs": [
"https://www.linkedin.com/",
"https://x.com/"
]
},
{
"@type": "Organization",
"@id": "https://www.aikido.dev#organization",
"name": "Aikido Security",
"url": "https://www.aikido.dev",
"logo": {
"@type": "ImageObject",
"url": "https://www.aikido.dev/logo.png"
},
"sameAs": [
"https://www.linkedin.com/company/aikido-security/",
"https://x.com/AikidoSecurity",
"https://www.youtube.com/@aikidosecurity"
]
},
{
"@type": "WebSite",
"@id": "https://www.aikido.dev#website",
"url": "https://www.aikido.dev",
"name": "Aikido Security",
"publisher": {
"@id": "https://www.aikido.dev#organization"
},
"inLanguage": "en-US"
}
]
}
</script>

