Publicado un analizador que identificó 200 paquetes maliciosos en NPM y PyPI

La OpenSSF (Open Source Security Foundation), formada por la Fundación Linux y cuyo objetivo es mejorar la seguridad del software de código abierto, presentó el proyecto abierto Package Analysis, que desarrolla un sistema para analizar la presencia de código malicioso en los paquetes. El código del proyecto está escrito en Go y distribuido bajo la licencia Apache 2.0. Un escaneo preliminar de los repositorios NPM y PyPI utilizando las herramientas propuestas nos permitió identificar más de 200 paquetes maliciosos no detectados previamente.

La mayor parte de los paquetes problemáticos identificados manipulan la intersección de nombres con dependencias internas no públicas de proyectos (ataque de confusión de dependencia) o utilizan métodos de typosquatting (asignación de nombres similares a los de bibliotecas populares) y también llaman a scripts que acceden a hosts externos durante el proceso de instalación. Según los desarrolladores de Package Analysis, la mayoría de los paquetes problemáticos identificados probablemente fueron creados por investigadores de seguridad que participan en programas de recompensas por errores, ya que los datos enviados se limitan al nombre del usuario y del sistema, y ​​las acciones se realizan explícitamente, sin intentos de ocultar su comportamiento.

Los paquetes con actividad maliciosa incluyen:

  • Paquete PyPI discordcmd, que registra el envío de solicitudes atípicas a raw.githubusercontent.com, Discord API e ipinfo.io. El paquete especificado descargó el código de puerta trasera de GitHub y lo instaló en el directorio del cliente Discord de Windows, después de lo cual inició el proceso de búsqueda de tokens de Discord en el sistema de archivos y los envió a un servidor de Discord externo controlado por los atacantes.
  • El paquete Colorsss NPM también intentó enviar tokens desde una cuenta de Discord a un servidor externo.
  • Paquete NPM @roku-web-core/ajax: durante el proceso de instalación, envió datos sobre el sistema y lanzó un controlador (shell inverso) que aceptó conexiones externas y lanzó comandos.
  • Paquete PyPI secretovtres: lanzó un shell inverso al importar un módulo específico.
  • Paquete NPM generador de código de cupón aleatorio: después de importar la biblioteca, envió una solicitud a un servidor externo, que devolvió el comando y la hora a la que debía ejecutarse.

El trabajo de Análisis de paquetes se reduce a analizar paquetes de código en el código fuente para establecer conexiones de red, acceder a archivos y ejecutar comandos. Además, se monitorean los cambios en el estado de los paquetes para determinar la adición de inserciones maliciosas en una de las versiones de software inicialmente inofensivo. Para monitorear la aparición de nuevos paquetes en los repositorios y realizar cambios en los paquetes publicados anteriormente, se utiliza el kit de herramientas Package Feeds, que unifica el trabajo con los repositorios NPM, PyPI, Go, RubyGems, Packagist, NuGet y Crate.

El análisis de paquetes incluye tres componentes básicos que se pueden utilizar tanto en conjunto como por separado:

  • Programador para iniciar el trabajo de análisis de paquetes basado en datos de Package Feeds.
  • Un analizador que examina directamente un paquete y evalúa su comportamiento mediante análisis estático y técnicas de seguimiento dinámico. La prueba se lleva a cabo en un ambiente aislado.
  • Un cargador que coloca los resultados de la prueba en el almacenamiento de BigQuery.

Fuente: opennet.ru

Añadir un comentario