Facebook, afectado por el compromiso de paquetes de desarrollo JavaScript

Diego Samuel Espitia    27 octubre, 2021
Facebook Javascript

En los servicios que encontramos a través de Internet o de móviles y con los que interactuamos todos los días, encontramos lenguajes de programación como Python y JavaScript, que son los que en este 2021 se están disputando el primer lugar según las calificaciones de los programadores.

Para que estos desarrollos funcionen y las comunidades crezcan a estos ritmos, es necesario abstraer la complejidad de los lenguajes, por lo que la mayoría de estos tienen repositorios donde las comunidades ponen a disposición paquetes que simplifican labores en los desarrollos.

Por ejemplo, en la librería de PyPi para Python, nosotros pusimos a disposición del público un paquete que le permite usar DIARIO desde cualquier desarrollo hecho en este lenguaje y así simplificar la detección de malware embebidos en documentos, protegiendo la privacidad de su información.

Sin embargo, los paquetes de terceros se han convertido en un vector de ataque que cada día los delincuentes aprovechan más y del que desde finales de 2019 venimos hablando y estudiando, permitiéndonos generar un framework opensource que le permita a los desarrolladores analizar los paquetes que van a usar de las librerías de desarrollo, llamado PackageDNA.

Lamentablemente este tipo de ataques vuelve a ser noticia cuando uno de los paquetes comprometidos, pone en riesgo a una de las principales empresas del sector de la tecnología como es Facebook. Hace poco, uno de los paquetes que esta empresa usa (y otras muchas) en sus desarrollos para reconocer desde qué sistema operativo están accediendo a sus servicios fue reportado como comprometido en su propio GitHub.

El paquete comprometido es UA-parser-js, uno de los más usados con poco más de 8 millones de descargas en la semana y con 1219 paquetes que lo usan como dependencia.

Figura 2

Como se puede ver, el sistema reporta que tiene 52 versiones. Se dan como comprometidas en el advisories de GitHub las versiones 0.7.29, 0.8.0 y 1.0.0, pero ninguna de estas está disponible ya en la librería.

Figura 3: Versiones disponibles de ua-parser-js

Al intentar analizar todas la versiones con PackageDNA, encontramos que la librería de NPMjs solo permite descargar las últimas versiones.

Figura 4: Versiones analizadas con PackageDNA del paquete UA-parser-js

En el análisis se detecta una librería sospechosa de TypoSquatting (nótese el ua-parsers.js, que no es exactamente igual que ua-parser-js) y que al seguir el enlace a la librería en cuestión, podemos evidenciar que ya fue dada de baja.

Figura 5: Paquete posible typosquatting de ua-parser-js

Este paquete aunque se dio de baja, es posible descargarlo y hacer el análisis como si fuera local en PackageDNA, pero afortunadamente no contiene ningún reporte malicioso. El desarrollador no es el mismo que el original ua-parser-js. Su nickname es joenix y tiene 172 paquetes en la librería de NPM.

Figura 6: Desarrollador del posible paquete de typo de ua-parser-js

Otra de las detecciones hechas por PackageDNA, es el uso de dependencias de un Audio Video Media Codec, que está calificado como de alto riego a la confidencialidad y una severidad de riesgo crítico.

Figura 7: Detección de AppInspector sobre UA-parser-js

Esto evidencia una vez más la necesidad de implementar dentro de las revisiones de seguridad del código los paquetes que tienen como requerimiento los desarrollos, pues en cualquier momento estos pueden ser comprometidos y poner en riesgo los servicios que despliegan.

Cada día es más común encontrar este tipo de amenazas y los delincuentes continúan buscando brechas que poder usar para desde la cadena de suministro afectar objetivos más grandes o desplegar amenazas que les generen ganancias, como en este caso que el compromiso insertaba un criptominner en el sistema.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.