{"id":22004,"date":"2026-07-11T10:14:40","date_gmt":"2026-07-11T10:14:40","guid":{"rendered":"https:\/\/www.securitytoday.de\/?p=22004"},"modified":"2026-07-11T10:21:24","modified_gmt":"2026-07-11T10:21:24","slug":"un-paquete-npm-que-robo-las-claves-privadas","status":"publish","type":"post","link":"https:\/\/www.securitytoday.de\/es\/2026\/07\/11\/un-paquete-npm-que-robo-las-claves-privadas\/","title":{"rendered":"Un paquete npm que rob\u00f3 las claves privadas"},"content":{"rendered":"<p style=\"color:#69d8ed;font-size:0.9em;margin:0 0 16px;padding:0;\">5 min. de lectura<\/p>\n<p><strong>Un paquete npm con unos 50.000 descargas semanales envi\u00f3 durante un breve periodo las claves privadas de sus usuarios. El SDK oficial de Injective conten\u00eda una funci\u00f3n disfrazada de telemetr\u00eda que capturaba las claves de la billetera y los mnem\u00f3nicos. Lo descubri\u00f3 el servicio de seguridad Socket. El caso muestra c\u00f3mo una \u00fanica dependencia manipulada puede envenenar todo un proceso de compilaci\u00f3n.<\/strong><\/p>\n<div style=\"background:#003340;color:#fff;padding:32px 36px;margin:32px 0;border-radius:8px;\">\n<p style=\"margin:0 0 18px 0;font-size:0.95em;font-weight:800;text-transform:uppercase;letter-spacing:0.2em;color:#69d8ed;border-bottom:2px solid rgba(105,216,237,0.25);padding-bottom:12px;\">Lo m\u00e1s importante en resumen<\/p>\n<ul style=\"margin:0;padding-left:22px;color:rgba(255,255,255,0.92);line-height:1.6;\">\n<li style=\"margin-bottom:12px;\"><strong style=\"color:#69d8ed;\">Un paquete, muchos afectados.<\/strong> El comprometido @injectivelabs\/sdk-ts captur\u00f3 claves privadas y mnem\u00f3nicos, distribuy\u00e9ndose a trav\u00e9s de 17 paquetes dependientes.<\/li>\n<li style=\"margin-bottom:12px;\"><strong style=\"color:#69d8ed;\">Disfrazado como telemetr\u00eda.<\/strong> La funci\u00f3n maliciosa codificaba los datos en base64 y los enviaba silenciosamente a un punto final oculto.<\/li>\n<li><strong style=\"color:#69d8ed;\">Mucho m\u00e1s all\u00e1 de las criptomonedas.<\/strong> Cualquier compilaci\u00f3n que obtenga dependencias sin verificar conlleva el mismo riesgo. El bloqueo de versiones, la verificaci\u00f3n de firmas y la rotaci\u00f3n r\u00e1pida son la respuesta.<\/li>\n<\/ul>\n<\/div>\n<p style=\"border-top:1px solid rgba(230,227,218,0.14);border-bottom:1px solid rgba(230,227,218,0.14);padding:14px 0;margin:28px 0;font-size:0.92em;color:#b8c5ce;\"><strong style=\"color:#69d8ed;\">Relacionado:<\/strong> Un controlador firmado deja ciego a la protecci\u00f3n del extremo &nbsp;\u00b7&nbsp; <a href=\"https:\/\/www.securitytoday.de\/es\/2026\/07\/02\/cuando-los-atacantes-son-mas-rapidos-que-los-parches\/\">Cuando los atacantes son m\u00e1s r\u00e1pidos que el parche<\/a><\/p>\n<h2 style=\"margin-top:48px;margin-bottom:18px;\">Qu\u00e9 escond\u00eda el SDK de Injective<\/h2>\n<p><strong>\u00bfQu\u00e9 es un ataque a la cadena de suministro?<\/strong> Un ataque a la cadena de suministro no apunta directamente a una empresa, sino a un componente que utilizan muchas empresas. Si se manipula una dependencia p\u00fablica, el c\u00f3digo malicioso fluye hacia cualquiera que instale el paquete a trav\u00e9s del m\u00e9todo de instalaci\u00f3n habitual.<\/p>\n<p>En el caso actual, afect\u00f3 a la biblioteca TypeScript @injectivelabs\/sdk-ts, una herramienta para aplicaciones relacionadas con la blockchain de Injective. Una versi\u00f3n manipulada inclu\u00eda una funci\u00f3n que se hac\u00eda pasar por telemetr\u00eda. En realidad, capturaba credenciales de acceso. La llamada para derivar una billetera a partir de un mnem\u00f3nico registraba la frase completa, y la llamada desde una clave privada registraba su material.<\/p>\n<p>Los datos capturados se codificaban en base64 y se enviaban silenciosamente mediante una solicitud de red a un punto final oculto. Para el desarrollador, el proceso permanec\u00eda invisible. El paquete cuenta con unas 50.000 descargas semanales. La versi\u00f3n manipulada se distribuy\u00f3 adem\u00e1s a trav\u00e9s de otros 17 paquetes de Injective. Quien incluyera uno de ellos resultaba afectado, sin haber instalado nunca directamente la biblioteca principal.<\/p>\n<h2 style=\"margin-top:48px;margin-bottom:18px;\">C\u00f3mo entr\u00f3 la puerta trasera en el c\u00f3digo<\/h2>\n<p>La v\u00eda de entrada pas\u00f3 por el propio proyecto oficial. La funci\u00f3n maliciosa lleg\u00f3 al repositorio de GitHub a trav\u00e9s de commits realizados desde una cuenta con una larga historia de contribuciones. Este tipo de cuentas no generan sospechas. Precisamente eso hace tan efectivo el secuestro de un colaborador establecido.<\/p>\n<p>Lo llamativo fue el antecedente. Ya semanas antes del lanzamiento apareci\u00f3 en el repositorio una rama de prueba con el nombre expl\u00edcito de una comprobaci\u00f3n de puerta trasera. Estas huellas son evidentes retrospectivamente, pero f\u00e1ciles de pasar por alto en el d\u00eda a d\u00eda de un proyecto de c\u00f3digo abierto activo.<\/p>\n<h2 style=\"margin-top:48px;margin-bottom:18px;\">Por qu\u00e9 afecta a cada compilaci\u00f3n<\/h2>\n<p>El incidente lleva una etiqueta de criptomonedas, pero el patr\u00f3n es universal. Cada aplicaci\u00f3n moderna extrae docenas o incluso cientos de paquetes externos, a menudo a trav\u00e9s de m\u00faltiples niveles. Basta con un \u00fanico eslab\u00f3n comprometido. Entonces, el c\u00f3digo malicioso se ejecuta con los permisos de la compilaci\u00f3n.<\/p>\n<p>Especialmente delicadas son las dependencias transitivas. Un equipo incluye conscientemente un paquete y hereda as\u00ed toda su cadena, que nunca ha verificado. Quien almacene credenciales, tokens o claves en un entorno de desarrollo con dependencias no verificadas est\u00e1 entregando exactamente lo que busca este tipo de ataque.<\/p>\n<h2 style=\"margin-top:48px;margin-bottom:18px;\">Qu\u00e9 deben hacer ahora los desarrolladores y los equipos de seguridad<\/h2>\n<p>La primera pregunta es: \u00bfSe est\u00e1 ejecutando una versi\u00f3n afectada en su propia infraestructura? Sin un inventario fiable de dependencias, la respuesta se convierte en un juego de adivinanzas. Solo despu\u00e9s se activan las palancas t\u00e9cnicas.<\/p>\n<div data-element=\"checklist\" style=\"background:#23261f;border:1px solid rgba(105,216,237,0.22);border-radius:10px;padding:22px 24px;margin:32px 0;box-shadow:inset 0 1px 0 rgba(230,227,218,0.06),0 2px 10px rgba(0,0,0,0.22);\">\n<p style=\"margin:0 0 12px;font-family:'IBM Plex Mono',ui-monospace,SFMono-Regular,monospace;font-size:0.72em;letter-spacing:0.12em;text-transform:uppercase;color:#69d8ed;\">Verificaci\u00f3n inmediata<\/p>\n<ul style=\"margin:0;padding-left:0;list-style:none;\">\n<li style=\"margin:0 0 10px;padding-left:26px;position:relative;color:#e6e3da;line-height:1.5;\"><span style=\"position:absolute;left:0;color:#69d8ed;\">&#10003;<\/span>Rastrear la versi\u00f3n del SDK afectada en todos los proyectos, incluyendo integraciones directas y transitivas, y luego actualizar a la versi\u00f3n corregida.<\/li>\n<li style=\"margin:0 0 10px;padding-left:26px;position:relative;color:#e6e3da;line-height:1.5;\"><span style=\"position:absolute;left:0;color:#69d8ed;\">&#10003;<\/span>Tratar todas las claves y mnem\u00f3nicos que pasaron por una versi\u00f3n afectada como comprometidas, rotarlas y mover los saldos.<\/li>\n<li style=\"margin:0 0 10px;padding-left:26px;position:relative;color:#e6e3da;line-height:1.5;\"><span style=\"position:absolute;left:0;color:#69d8ed;\">&#10003;<\/span>Fijar las dependencias mediante archivos Lock y asumir las actualizaciones de forma consciente en lugar de autom\u00e1tica.<\/li>\n<li style=\"margin:0 0 10px;padding-left:26px;position:relative;color:#e6e3da;line-height:1.5;\"><span style=\"position:absolute;left:0;color:#69d8ed;\">&#10003;<\/span>Verificar los certificados de origen (provenance de npm) y las firmas de paquetes, as\u00ed como mantener una lista de materiales de software (SBOM).<\/li>\n<li style=\"margin:0 0 10px;padding-left:26px;position:relative;color:#e6e3da;line-height:1.5;\"><span style=\"position:absolute;left:0;color:#69d8ed;\">&#10003;<\/span>No almacenar secretos duraderos en entornos de compilaci\u00f3n con dependencias no verificadas y restringir rigurosamente los permisos en el sistema CI\/CD.<\/li>\n<\/ul>\n<\/div>\n<p>Las herramientas de an\u00e1lisis de dependencias reducen el tiempo de reacci\u00f3n porque detectan un paquete manipulado antes de que se despliegue ampliamente. Sin embargo, la verdadera palanca sigue siendo organizativa: quien no conoce su cadena de suministro, no puede protegerla.<\/p>\n<h2 style=\"margin-top:48px;margin-bottom:18px;\">Un caso de prueba para la cadena de suministro<\/h2>\n<p>Injective declar\u00f3 haber resuelto el incidente en menos de una hora y no haber da\u00f1ado a ning\u00fan usuario. Esta valoraci\u00f3n proviene del propio proveedor. Independientemente de ello, la lecci\u00f3n permanece: la r\u00e1pida respuesta de un proyecto no exime a los usuarios de asegurar su propia cadena.<\/p>\n<p>Para las empresas con obligaciones derivadas de NIS2 o DORA, el riesgo de la cadena de suministro ya no es un tema abstracto. Ambos marcos normativos exigen que las organizaciones controlen los riesgos de sus proveedores y componentes. Un paquete manipulado en su propia compilaci\u00f3n es precisamente el caso para el que se redactaron estas disposiciones.<\/p>\n<h2 style=\"padding-top:64px;margin-bottom:20px;\">Preguntas frecuentes<\/h2>\n<p class=\"st-faq-hint\">Cada pregunta est\u00e1 cerrada. Un toque desbloquea la respuesta.<\/p>\n<details>\n<summary><strong>\u00bfQu\u00e9 es un ataque a la cadena de suministro?<\/strong><\/summary>\n<p style=\"margin:8px 0 4px 24px;color:#555;line-height:1.6;\">Un ataque a la cadena de suministro manipula un componente que muchos objetivos utilizan en com\u00fan, como una dependencia de software p\u00fablica. El c\u00f3digo malicioso fluye entonces a trav\u00e9s de la ruta de instalaci\u00f3n normal hacia todos los que integran el paquete.<\/p>\n<\/details>\n<details>\n<summary><strong>\u00bfEstoy afectado si nunca instal\u00e9 directamente el SDK?<\/strong><\/summary>\n<p style=\"margin:8px 0 4px 24px;color:#555;line-height:1.6;\">Es posible. La versi\u00f3n manipulada se distribuy\u00f3 a trav\u00e9s de 17 paquetes adicionales. Quien inclu\u00eda uno de ellos heredaba la dependencia de forma transitiva, sin haber descargado nunca la biblioteca real directamente.<\/p>\n<\/details>\n<details>\n<summary><strong>\u00bfBasta con actualizar a la versi\u00f3n corregida?<\/strong><\/summary>\n<p style=\"margin:8px 0 4px 24px;color:#555;line-height:1.6;\">Como primer paso s\u00ed, como \u00fanico no. Las claves y mnemonics que pasaron por una versi\u00f3n afectada se consideran comprometidas. Deben rotarse, y los saldos deber\u00edan moverse.<\/p>\n<\/details>\n<details>\n<summary><strong>\u00bfC\u00f3mo lleg\u00f3 el c\u00f3digo malicioso a un proyecto oficial?<\/strong><\/summary>\n<p style=\"margin:8px 0 4px 24px;color:#555;line-height:1.6;\">Mediante commits de una cuenta con un largo historial de contribuciones en el repositorio oficial. Un colaborador establecido no despierta sospechas, lo que hace que la toma de control de dicha cuenta sea especialmente efectiva.<\/p>\n<\/details>\n<details>\n<summary><strong>\u00bfQu\u00e9 protege m\u00e1s eficazmente contra estos ataques?<\/strong><\/summary>\n<p style=\"margin:8px 0 4px 24px;color:#555;line-height:1.6;\">Un inventario de dependencias conocido, archivos de bloqueo fijos, pruebas de origen verificadas y firmas, as\u00ed como permisos estrictos en la compilaci\u00f3n. Adem\u00e1s, no tener secretos duraderos en entornos con dependencias no verificadas.<\/p>\n<\/details>\n<h3 style=\"margin:48px 0 18px;padding-left:12px;font-size:1.05em;font-weight:800;color:#e6e3da;border-left:3px solid #69d8ed;line-height:1.2;\">Recomendaciones de lectura de la redacci\u00f3n<\/h3>\n<p><a href=\"https:\/\/www.securitytoday.de\/es\/2026\/05\/29\/el-token-que-elude-la-mfa-por-que-el-robo-de-oauth-es-la-nueva-puerta-de-entrada\/\" style=\"display:flex;align-items:center;gap:14px;padding:12px 14px;margin:0 0 10px;background:#23261f;border:1px solid rgba(105,216,237,0.18);border-radius:12px;box-shadow:inset 0 1px 0 rgba(230,227,218,0.06),0 6px 18px rgba(0,0,0,0.22);text-decoration:none;color:#e6e3da;box-sizing:border-box;width:100%;\"><span style=\"flex:0 0 116px;aspect-ratio:16\/9;overflow:hidden;border-radius:8px;background:#111210;border:1px solid rgba(230,227,218,0.08);display:block;\"><img decoding=\"async\" src=\"https:\/\/www.securitytoday.de\/wp-content\/uploads\/2026\/06\/oauth-token-diebstahl-mfa-umgehung-device-code-saas-soc-cover-hero-250x143.jpg\" alt=\"\" loading=\"lazy\" width=\"116\" height=\"65\" style=\"width:100%;height:100%;object-fit:cover;display:block;\"><\/span><span style=\"display:block;min-width:0;\"><span style=\"display:block;font-size:0.68em;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:#69d8ed;margin-bottom:5px;\">Recomendaci\u00f3n<\/span><span style=\"display:block;font-size:1.0em;font-weight:650;line-height:1.35;color:#e6e3da;overflow-wrap:anywhere;\">Robo de tokens OAuth: c\u00f3mo los atacantes burlan el MFA<\/span><\/span><\/a><a href=\"https:\/\/www.securitytoday.de\/es\/2026\/07\/08\/que-es-ransomware-definicion-proceso-proteccion\/\" style=\"display:flex;align-items:center;gap:14px;padding:12px 14px;margin:0 0 10px;background:#23261f;border:1px solid rgba(105,216,237,0.18);border-radius:12px;box-shadow:inset 0 1px 0 rgba(230,227,218,0.06),0 6px 18px rgba(0,0,0,0.22);text-decoration:none;color:#e6e3da;box-sizing:border-box;width:100%;\"><span style=\"flex:0 0 116px;aspect-ratio:16\/9;overflow:hidden;border-radius:8px;background:#111210;border:1px solid rgba(230,227,218,0.08);display:block;\"><img decoding=\"async\" src=\"https:\/\/www.securitytoday.de\/wp-content\/uploads\/2026\/07\/was-ist-ransomware-cover-hero-250x143.jpg\" alt=\"\" loading=\"lazy\" width=\"116\" height=\"65\" style=\"width:100%;height:100%;object-fit:cover;display:block;\"><\/span><span style=\"display:block;min-width:0;\"><span style=\"display:block;font-size:0.68em;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:#69d8ed;margin-bottom:5px;\">Recomendaci\u00f3n<\/span><span style=\"display:block;font-size:1.0em;font-weight:650;line-height:1.35;color:#e6e3da;overflow-wrap:anywhere;\">C\u00f3mo se desarrolla un ataque de ransomware<\/span><\/span><\/a><a href=\"https:\/\/www.securitytoday.de\/es\/2026\/07\/10\/que-son-edr-xdr-definicion-diferencias\/\" style=\"display:flex;align-items:center;gap:14px;padding:12px 14px;margin:0 0 10px;background:#23261f;border:1px solid rgba(105,216,237,0.18);border-radius:12px;box-shadow:inset 0 1px 0 rgba(230,227,218,0.06),0 6px 18px rgba(0,0,0,0.22);text-decoration:none;color:#e6e3da;box-sizing:border-box;width:100%;\"><span style=\"flex:0 0 116px;aspect-ratio:16\/9;overflow:hidden;border-radius:8px;background:#111210;border:1px solid rgba(230,227,218,0.08);display:block;\"><img decoding=\"async\" src=\"https:\/\/www.securitytoday.de\/wp-content\/uploads\/2026\/07\/was-ist-edr-xdr-cover-hero-250x143.jpg\" alt=\"\" loading=\"lazy\" width=\"116\" height=\"65\" style=\"width:100%;height:100%;object-fit:cover;display:block;\"><\/span><span style=\"display:block;min-width:0;\"><span style=\"display:block;font-size:0.68em;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:#69d8ed;margin-bottom:5px;\">Recomendaci\u00f3n<\/span><span style=\"display:block;font-size:1.0em;font-weight:650;line-height:1.35;color:#e6e3da;overflow-wrap:anywhere;\">Lo que realmente diferencia a EDR y XDR<\/span><\/span><\/a><\/p>\n<h3 style=\"margin:48px 0 18px;padding-left:12px;font-size:1.05em;font-weight:800;color:#e6e3da;border-left:3px solid #69d8ed;line-height:1.2;\">M\u00e1s de la red MBF Media<\/h3>\n<p><a href=\"https:\/\/www.cloudmagazin.com\/2026\/07\/08\/ki-modell-denken-anthropic-j-space\/\" style=\"display:flex;align-items:center;gap:14px;padding:12px 14px;margin:0 0 10px;background:#23261f;border:1px solid rgba(105,216,237,0.18);border-radius:12px;box-shadow:inset 0 1px 0 rgba(230,227,218,0.06),0 6px 18px rgba(0,\n\n\n<p style=\"text-align:right;color:#868e96;font-size:0.85em;margin-top:48px;\"><em>Fuente de la imagen: generado por IA (julio 2026)<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"Ciberseguridad: Un SDK de npm manipulado extrajo claves privadas de billeteras y se distribuy\u00f3 a trav\u00e9s de 17 paquetes.","protected":false},"author":50,"featured_media":21993,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_yoast_wpseo_focuskw":"ataque cadena suministro npm","_yoast_wpseo_title":"Un paquete npm que rob\u00f3 las claves privadas","_yoast_wpseo_metadesc":"Cyberseguridad: Un SDK de npm manipulado accedi\u00f3 a claves privadas de billeteras y se distribuy\u00f3 en 17 paquetes.","_yoast_wpseo_meta-robots-noindex":"","_yoast_wpseo_meta-robots-nofollow":"","_yoast_wpseo_meta-robots-adv":"","_yoast_wpseo_canonical":"","_yoast_wpseo_opengraph-title":"","_yoast_wpseo_opengraph-description":"","_yoast_wpseo_opengraph-image":"","_yoast_wpseo_opengraph-image-id":0,"_yoast_wpseo_twitter-title":"","_yoast_wpseo_twitter-description":"","_yoast_wpseo_twitter-image":"","_yoast_wpseo_twitter-image-id":0,"evm_cvss":0,"evm_risk":0,"evm_casefile":"","evm_primary_cve":"","_evm_translation_lang":"","featured_post":0,"featured_post_sortierung":0,"_wp_old_slug":[],"footnotes":""},"categories":[254],"tags":[],"class_list":["post-22004","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-praxis-umsetzung"],"evm_reading_time_minutes":7,"wpml_language":"es","wpml_translation_of":21992,"_links":{"self":[{"href":"https:\/\/www.securitytoday.de\/es\/wp-json\/wp\/v2\/posts\/22004","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.securitytoday.de\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.securitytoday.de\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.securitytoday.de\/es\/wp-json\/wp\/v2\/users\/50"}],"replies":[{"embeddable":true,"href":"https:\/\/www.securitytoday.de\/es\/wp-json\/wp\/v2\/comments?post=22004"}],"version-history":[{"count":1,"href":"https:\/\/www.securitytoday.de\/es\/wp-json\/wp\/v2\/posts\/22004\/revisions"}],"predecessor-version":[{"id":22005,"href":"https:\/\/www.securitytoday.de\/es\/wp-json\/wp\/v2\/posts\/22004\/revisions\/22005"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.securitytoday.de\/es\/wp-json\/wp\/v2\/media\/21993"}],"wp:attachment":[{"href":"https:\/\/www.securitytoday.de\/es\/wp-json\/wp\/v2\/media?parent=22004"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.securitytoday.de\/es\/wp-json\/wp\/v2\/categories?post=22004"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.securitytoday.de\/es\/wp-json\/wp\/v2\/tags?post=22004"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}