Al menos 18 populares paquetes de código JavaScript que se descargan colectivamente más de dos mil millones de veces cada semana se comprometieron brevemente con el software malicioso hoy, después de que se impidió un desarrollador involucrado en el mantenimiento de los proyectos. El ataque parece haberse contenido rápidamente y se centró por poco en robar la criptomoneda. Pero los expertos advierten que un ataque similar con una carga útil un poco más nefasta podría conducir a un brote de malware disruptivo que es mucho más difícil de detectar y restringir. Este correo electrónico de phishing atrajo a un desarrollador a iniciar sesión en un sitio web falso de NPM y proporcionar un token único para la autenticación de dos factores. Luego, los Phishers utilizaron la cuenta NPM de ese desarrollador para agregar código malicioso a al menos 18 paquetes de código JavaScript populares. Aikido es una empresa de seguridad en Bélgica que monitorea las nuevas actualizaciones de código a los principales repositorios de código de código abierto, escaneando cualquier actualización de código para un código sospechoso y malicioso. En una publicación de blog publicada hoy, Aikido dijo que sus sistemas encontraron que el código malicioso se había agregado a al menos 18 bibliotecas de código ampliamente utilizadas disponibles en NPM (abreviatura) de «Node Package Manager», que actúa como un centro central para el desarrollo de JavaScript y las últimas actualizaciones para componentes de JavaScript ampliamente utilizados. JavaScript es un poderoso lenguaje de secuencias de comandos basado en la web utilizado por innumerables sitios web para crear una experiencia más interactiva con los usuarios, como ingresar datos en un formulario. Pero no es necesario que cada desarrollador del sitio web cree un programa desde cero para ingresar datos en un formulario en el que solo pueden reutilizar paquetes de código ya existentes en NPM que están específicamente diseñados para ese propósito. Desafortunadamente, si los ciberdelincuentes logran las credenciales de NPM de los desarrolladores, pueden introducir un código malicioso que permite a los atacantes controlar fundamentalmente lo que las personas ven en su navegador web cuando visitan un sitio web que usa una de las bibliotecas de código afectadas. Según Aikido, los atacantes inyectaron un código que intercepta silenciosamente la actividad de la criptomonedas en el navegador, «manipula las interacciones de la billetera y reescribe los destinos de pago para que los fondos y las aprobaciones sean redirigidas a las cuentas controladas por los atacantes sin signos obvios al usuario». «Este malware es esencialmente un interceptor basado en el navegador que secuestra tanto el tráfico de red como las API de las aplicaciones», escribió el investigador de Aikido Charlie Eriksen. «Lo que lo hace peligroso es que funciona en múltiples capas: alterar el contenido que se muestra en los sitios web, alterar las llamadas de API y manipular lo que las aplicaciones de los usuarios creen que están firmando. Incluso si la interfaz se ve correcta, la transacción subyacente se puede redirigir en segundo plano». Aikido dijo que utilizó la red social BSKY para notificar al desarrollador afectado, Josh Junon, quien rápidamente respondió que estaba al tanto de haber sido impulsado. El correo electrónico de phishing por el que Junon se enamoró fue parte de una campaña más grande que falsificó a NPM y les dijo a los destinatarios que debían actualizar sus credenciales de autenticación de dos factores (2FA). El sitio de phishing imitó la página de inicio de sesión de NPM e interceptó las credenciales de Junon y el token 2FA. Una vez iniciado sesión, los Phishers cambiaron la dirección de correo electrónico en el archivo de la cuenta NPM de Junon, bloqueándolo temporalmente. Aikido notificó al mantenedor a Bluesky, quien respondió a las 15:15 UTC que estaba al tanto de estar comprometido y comenzar a limpiar los paquetes comprometidos. Junon también emitió un MEA Culpa en Hackernews, diciéndole a los lectores de codificadores de la comunidad pesados: «Hola, sí, me pusieron». «Se ve y se siente un poco como un ataque objetivo», escribió Junon. «Lo siento a todos, muy vergonzoso». Philippe Catulli, «Director de piratería» en la consultoría de seguridad Seralys, observó que los atacantes parecen haber registrado su sitio web falsificado – NPMJS[.]Ayuda: solo dos días antes de enviar el correo electrónico de phishing. El sitio web falsificado utilizó servicios de DNSEXIT[.]com, una compañía «DNS DNIC» que también ofrece nombres de dominio «100% gratuitos» que se pueden apuntar instantáneamente a cualquier dirección IP controlada por el usuario. El MEA Cupla de Junon en Hackernews hoy enumeró los paquetes afectados. Catulli dijo que es notable que los atacantes en este caso no fueran más ambiciosos o maliciosos con sus modificaciones de código. «La parte loca es que comprometieron miles de millones de sitios web y aplicaciones solo para apuntar a un par de cosas de criptomonedas», dijo. «Este fue un ataque de la cadena de suministro, y fácilmente podría haber sido algo mucho peor que la cosecha de criptografía». Eriksen de Aikido estuvo de acuerdo, diciendo que innumerables sitios web esquivaron una bala porque este incidente se manejó en cuestión de horas. Como ejemplo de cómo estos ataques de cadena de suministro pueden aumentar rápidamente, Eriksen señaló otro compromiso de un desarrollador de NPM a fines de agosto que agregó malware a «NX», un kit de herramientas de desarrollo de código de código abierto con hasta seis millones de descargas semanales. En el compromiso de NX, los atacantes introdujeron el código que buscó el dispositivo del usuario para los tokens de autenticación de destinos de programador como GitHub y NPM, así como las teclas SSH y API. Pero en lugar de enviar esas credenciales robadas a un servidor central controlado por los atacantes, el código malicioso creó un nuevo repositorio público en la cuenta de GitHub de la víctima, y publicó los datos robados allí para que todo el mundo lo vea y descargue. Eriksen dijo que las plataformas de codificación como GitHub y NPM deberían estar haciendo más para asegurarse de que cualquier nuevo código se comprometa para paquetes de uso amplio requiere un nivel más alto de certificación que confirme que el código en cuestión fue presentado por la persona que posee la cuenta, y no solo por la cuenta de esa persona. «Los paquetes más populares deberían requerir la certificación de que se produjo a través de la procedencia confiable y no solo al azar desde algún lugar en Internet», dijo Eriksen. «¿De dónde se sube el paquete, por GitHub en respuesta a una nueva solicitud de extracción en la rama principal, o en otro lugar? En este caso, no comprometieron la cuenta de GitHub de la meta. Eriksen dijo que los compromisos del repositorio de código pueden ser devastadores para los desarrolladores, muchos de los cuales terminan abandonando sus proyectos por completo después de tal incidente. «Es lamentable porque una cosa que hemos visto es que las personas tienen sus proyectos se comprometen y dicen: ‘Sabes qué, no tengo la energía para esto y voy a desaprobar todo el paquete'», dijo Eriksen. Kevin Beaumont, un experto en seguridad citado frecuentemente que escribe sobre incidentes de seguridad en el blog DoublePulsar.com, ha estado siguiendo esta historia de cerca hoy en actualizaciones frecuentes de su cuenta en Mastodon. Beaumont dijo que el incidente es un recordatorio de que gran parte del planeta todavía depende del código que finalmente sea mantenido por un número extremadamente pequeño de personas que en su mayoría están sobrecargadas y recursos. «Durante aproximadamente los últimos 15 años, cada negocio ha estado desarrollando aplicaciones al atraer a 178 bibliotecas interconectadas escritas por 24 personas en un cobertizo en Skegness», escribió Beaumont en Mastodon. «Durante los últimos 2 años, las organizaciones han estado comprando herramientas de codificación de VIBE AI, donde algunos gritos ejecutivos ‘convierten en una tienda en línea en una computadora y se agregan 389 bibliotecas y se agregan una aplicación. Imagen: https://infosec.exchange/@goshedog@cyberplace.social. Aikido lanzó recientemente un producto que tiene como objetivo ayudar a los equipos de desarrollo a garantizar que cada biblioteca de códigos utilizada se verifique para el malware antes de que pueda usarse o instalarse. Nicholas Weaver, investigador del Instituto Internacional de Ciencias de la Computación, una organización sin fines de lucro en Berkeley, California, dijo que la nueva oferta de Aikido existe porque muchas organizaciones siguen siendo un ataque exitoso de phishing lejos de una pesadilla de cadena de suministro. Weaver dijo que este tipo de compromisos de cadena de suministro continuarán mientras las personas responsables de mantener un código ampliamente utilizado continúen dependiendo de formas fishables de 2FA. «NPM solo debe admitir la autenticación a prueba de PHISH», dijo Weaver, refiriéndose a claves de seguridad física que son a prueba de phish, lo que significa que incluso si los phishers logran robar su nombre de usuario y contraseña, aún no pueden iniciar sesión en su cuenta sin poseer esa clave física. «Toda la infraestructura crítica debe usar 2FA a prueba de PHISH, y dadas las dependencias en el software moderno, los archivos como NPM son infraestructura absolutamente crítica», dijo Weaver. «Que NPM no requiere que todas las cuentas de contribuyentes usen claves de seguridad o métodos similares 2FA se consideren negligencia».
Deja una respuesta