El Fondo OpenSSF (Open Source Security Foundation), formado por la organización Linux Foundation y enfocado en aumentar la seguridad del software de código abierto, ha presentado un proyecto abierto llamado Package Analysis, que desarrolla un sistema de análisis de la presencia de código malicioso en paquetes. El código del proyecto está escrito en Go y se distribuye bajo la licencia Apache 2.0. El escaneo preliminar de los repositorios NPM y PyPI utilizando las herramientas propuestas ha permitido identificar más de 200 paquetes maliciosos que previamente no se habían detectado.
La mayoría de los paquetes problemáticos identificados manipulan la intersección de nombres con dependencias internas no públicas de los proyectos (ataque de confusión de dependencias) o utilizan métodos de tipado engañoso (asignación de nombres similares a los de bibliotecas populares), así como ejecutan scripts durante el proceso de instalación que hacen llamadas a hosts externos. Según los desarrolladores de Package Analysis, la mayoría de los paquetes problemáticos detectados probablemente fueron creados por investigadores de seguridad que participan en programas de recompensas por vulnerabilidades (bug bounty), ya que los datos enviados se limitan al nombre de usuario y del sistema, y las acciones se ejecutan de forma explícita, sin intentar ocultar su comportamiento.
Se destacan los siguientes paquetes con actividad maliciosa:
- El paquete de PyPI discordcmd, en el cual se ha registrado el envío de solicitudes inusuales a raw.githubusercontent.com, la API de Discord y ipinfo.io. Este paquete descargaba código de un backdoor desde GitHub e instalaba en el directorio del cliente de Windows de Discord, después de lo cual iniciaba un proceso de búsqueda de tokens de Discord en el sistema de archivos y los enviaba a un servidor de Discord externo, controlado por los atacantes.
- El paquete de NPM colorsss, que también intentaba enviar al exterior servidor tokens de la cuenta en Discord.
- El paquete de NPM @roku-web-core/ajax — durante la instalación enviaba datos del sistema y ejecutaba un shell inverso, aceptando conexiones externas y ejecutando comandos.
- El paquete de PyPI secrevthree — lanzaba un shell inverso al importar un módulo específico.
- El paquete de NPM random-vouchercode-generator — después de importar la biblioteca, enviaba una solicitud a un servidor externo, que retornaba un comando y el tiempo en que debía ejecutarse.
El trabajo de Package Analysis se centra en el análisis de los textos fuente de los paquetes de código para establecer conexiones de red, acceder a archivos y ejecutar comandos. Además, se rastrea el cambio de estado de los paquetes para determinar la adición de inserciones maliciosas en una de las versiones de un software previamente inofensivo. Para monitorear la aparición de nuevos paquetes en los repositorios y realizar cambios en los paquetes previamente publicados, se utiliza la herramienta Package Feeds, que unifica el trabajo con los repositorios NPM, PyPI, Go, RubyGems, Packagist, NuGet y Crate.
Package Analysis incluye tres componentes básicos que pueden utilizarse tanto en conjunto como por separado:
- Un programador que inicia trabajos de análisis de paquetes basado en datos de Package Feeds.
- Un analizador que verifica el paquete directamente y evalúa su comportamiento utilizando métodos de análisis estático y trazado dinámico. La verificación se realiza en un entorno aislado.
- Un cargador que coloca los resultados de la verificación en el almacenamiento BigQuery.
Fuente: opennet.ru
