Usando librerías de desarrollo para desplegar malware

Diego Samuel Espitia    19 noviembre, 2020
Usando librerías de desarrollo para desplegar malware

Los ciberdelincuentes buscan estrategias para lograr sus objetivos: en algunos casos se trata información de usuarios; en otros, conexiones; otras veces generan redes de equipos bajo su control (botnets), etc. Cualquier usuario es una potencial víctima pero si adicionalmente pueden hacer que otros distribuyan su código malicioso sin saberlo, hablamos de una ganancia invaluable para los delincuentes.

Por esto se han dado cuenta de que infiltrar código malicioso en paquetes que los desarrolladores usan para generar sus proyectos es una forma muy efectiva de propagarlo en la mayor cantidad de víctimas posibles, además de beneficiarse así del anonimato.

De esta manera, cada vez que un desarrollador, en cualquier parte del mundo, use el paquete corrupto que filtraron dentro de la librería en cualquier tipo de código, este distribuirá el segmento malicioso y hacer la trazabilidad será casi imposible, pues existen librerías que han sido descargadas millones de veces.

En el último año se han encontrado varias muestras de esta práctica usando principalmente los paquetes de la librería de NPM y paquetes de la librería de Python. Los delincuentes usaron diferentes técnicas para ocultar su accionar y saltar los controles que se tienen en estás librerías, veamos cuáles.

¿Cuáles son las técnicas utilizadas por los ciberdelincuentes?

Aunque las técnicas son diversas, vamos ha centrarnos en las que, tras su detección, se pudo evidenciar que permanecieron mucho tiempo disponibles en las librerías:

  • Typosquatting: como habíamos hablado anteriormente, está técnica se utiliza en diversos tipos de ataques informáticos y se basa en modificaciones en los nombres de los paquetes que hacen que los usuarios se puedan confundir o que tras un error en la digitación carguen uno de estos códigos maliciosos.

    El ejemplo más claro de este método se presentó en la librería PyPi de Python donde se detectaron dos paquetes maliciosos que usaban mutaciones en el nombre para su propagación, como en el caso de jeIlyfish con jellyfish. Ésta mutación del nombre tenía como objetivo obtener las llaves de autenticación de SSH en los diferentes servidores o equipos donde estuviese instalado cualquier desarrollo que usase este paquete.

    Estos paquetes estuvieron disponibles durante más de un año en la librería PyPi, donde fueron descargados más de cien mil veces, lo que entrega al atacante un amplio impacto y dispersión en cuanto a posibles objetivos, ya que este código puede estar aun siendo utilizado en algunos desarrollos empresariales o caseros que no sean correctamente mantenidos o monitoreados.
  • Brandjacking: este tipo de ataque se aprovecha la importancia de un paquete para crear una mutación o simulación del mismo. La diferencia principal con la anterior técnica es que no apela al posible error de un desarrollador cuando digita el requerimiento dentro de su código, sino que crea un paquete de tiene exactamente el mismo nombre pero adiciona usualmente el nombre del lenguaje en el que se esta trabajando.

    En los paquetes de la librería NPMjs se ha detectado esta técnica en varias ocasiones, usando paquetes  como twilio, que tiene cerca de 500 mil descargas, para crear un paquete malicioso que usa su reconocimiento para suplantarlo, con el paquete twilio-npm, la cual con tan solo 3 días en linea logro 371 descargas.

Con estos dos básicos ejemplos se evidencia que los delincuentes están buscando todo el tiempo el despliegue de su código malicioso por diversos mecanismos, demostrando que pueden poner en riesgo a cualquier usuario con o sin conocimientos en computación o en gestión de información.

Asimismo, esto confirma que es vital que las empresas de desarrollo busquen mecanismos para detectar estas estrategias, cumpliendo metodologías que garanticen el desarrollo seguro para minimizar que este tipo de amenazas sea explotada y ponga en riesgo a los usuarios.

En cuanto a las empresas que están detrás de este tipo de lenguajes de desarrollo, se están haciendo esfuerzos internos y en comunidad para detectar estas amenazas en el menor tiempo posible. Un ejemplo de estas alianzas en las OSSF (Open Source Security Foundation), de las cual hacemos parte activa, que busca desarrollar herramientas y comunicación con el objetivo de mejorar la seguridad en los desarrollos y que las empresas de desarrollos informáticos tengan referencias o elementos para validar el ciclo de vida de sus desarrollos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *