Paquete npm de Lottie Player comprometido para robar billeteras de criptomonedas
31 de octubre de 2024
0 minutos de lecturaEl 31 de octubre de 2024, se produjo otro caso de compromiso de un paquete y robo de criptomonedas en un popular paquete npm.
Resumen del compromiso del paquete npm Lottie Player
Se descubrió que la popular biblioteca npm @lottiefiles/lottie-player contenía código malicioso que solicita a los usuarios conectarse a sus billeteras de criptomonedas.
El código malicioso se agregó a las versiones 2.0.5, 2.0.6 y 2.0.7 de npm después de que se comprometiera el token de una cuenta del registro npm usado para publicar paquetes. Estas versiones se retiraron de npm y luego se publicó la versión 2.0.8, basada en el código seguro del repositorio de código de GitHub del proyecto y con contenido idéntico al de la versión 2.0.4.
Rangos de versiones seguras y vulnerables del paquete npm Lottie Player
Según tu capacidad de respuesta, puedes corregir el problema con una actualización o una degradación para dejar de usar las tres versiones maliciosas conocidas que se publicaron:
Se sabe que es segura:
@lottiefiles/lottie-player <= 2.0.4Se sabe que es vulnerable:
@lottiefiles/lottie-player@2.0.5, @lottiefiles/lottie-player@2.0.6, and @lottiefiles/lottie-player@2.0.7Se sabe que es segura:
@lottiefiles/lottie-player@2.0.8
Cómo saber si eres vulnerable con Snyk
Es posible que hayas usado una herramienta de automatización de dependencias para administrar el árbol de dependencias y actualizar a una de las versiones maliciosas publicadas en el registro npm. También es posible que hayas actualizado a ciegas a las versiones más recientes en entornos de CI o desarrollo y que hayas guardado esos cambios.
Puedes usar Snyk de varias maneras para saber si instalaste las versiones maliciosas.
Interfaz de usuario de informes de dependencias de Snyk
Ve al elemento de menú “Dependencies” de tu grupo u organización, aplica los filtros que quieras para acotar la búsqueda y luego abre el cuadro de búsqueda “Dependencies” para escribir “lottiefiles” y buscar texto libre.
A continuación, se muestra un ejemplo en el que no se encuentran resultados; por lo tanto, estos proyectos que estoy buscando no usan esta dependencia:

Si cambio el texto a solo “lottie”, encontraré otras dependencias que tienen ese texto en el nombre:

Una vez seleccionadas, puedo confirmar en qué proyectos se usan, qué vulnerabilidades les corresponden, los problemas de licencias y otra información de seguridad de la cadena de suministro:

Snyk CLI
Si usas Snyk CLI en tus flujos de trabajo de desarrollo o procesos de compilación de CI, el resultado del análisis de Snyk te mostrará información sobre los paquetes vulnerables, como esta:
Qué está pasando con @lottiefiles/lottie-player
Al igual que el ataque que afectó a la biblioteca Polyfill y comprometió a usuarios a través de una CDN en junio de 2024, y que se rastreó hasta enero de ese año, este incidente sigue el mismo intento de robar criptomonedas mediante el robo financiero a través de billeteras de criptomonedas.
Los usuarios informaron en el repositorio de código de lottie-player que, al usar la biblioteca a través de una CDN desde fuentes como https://unpkg.com/@lottiefiles/lottie-player@latest/dist/lottie-player.js o https://cdn.jsdelivr.net/npm/@lottiefiles/lottie-player@2.0.5/dist/lottie-player.min.js, veían una pantalla de inicio de sesión de una billetera de criptomonedas como esta, en el hilo de incidencias de GitHub:

A muchos usuarios que usaban la dependencia @lottiefiles/lottie-player a través de CDN de terceros sin fijar correctamente la versión de la dependencia se les sirvió automáticamente la versión comprometida como la más reciente. Al publicar una versión nueva con código fuente que se sabe que es seguro (es decir, al revertir el código a la versión 2.0.4), se presume que esos usuarios también recibieron la corrección automáticamente.
Dicho esto, el impacto parece ser considerable, dada la cantidad de proyectos que dependen del componente lottie-player y la cantidad de versiones maliciosas que ya se habían descargado:
73 paquetes npm dependen de este paquete
Se registraron 36,762 descargas de la versión 2.0.4, que se sabe que es segura, durante los últimos 7 días
Se registraron ~890 descargas de la corrección 2.0.8, publicada recientemente, durante las últimas 12 horas
¿Cómo mitigar los riesgos de seguridad de la cadena de suministro relacionados con las CDN?
Para prevenir futuros incidentes de seguridad, como el compromiso del componente web lottie-player o la dependencia maliciosa polyfill, se recomienda seguir algunas prácticas recomendadas de seguridad, como:
Adopta una política de seguridad de contenido para impedir que fuentes no deseadas y no confiables inyecten scripts, etiquetas de imagen y otros objetos en tu aplicación web.
Fija siempre tus dependencias, ya sea que las obtengas a través de recursos de CDN en la red o de un administrador de paquetes.
Sigue las recomendaciones de mitigación del equipo oficial de Lottie Player en su comentario aquí y en otros canales oficiales.
Verifica tus aplicaciones
Si quieres probar tus aplicaciones y proyectos pero no eres cliente de Snyk, puedes registrarte para obtener una prueba gratuita y realizar las pruebas anteriores. Con la prueba, puedes analizar las dependencias de código abierto y las imágenes de contenedores en la CLI o en tu SCM para determinar si usas alguna de las versiones vulnerables de lottie-player y, posiblemente, descubrir otras vulnerabilidades de seguridad en tus proyectos.
Protege tu código mientras desarrollas
Snyk analiza tu código para detectar problemas de calidad y seguridad, y te ofrece recomendaciones para corregirlos directamente en tu IDE.
