Los desarrolladores de la plataforma Packj, que analiza la seguridad de las bibliotecas, han publicado un conjunto de herramientas de línea de comandos de código abierto que permite identificar construcciones riesgosas en paquetes que pueden estar relacionadas con la implementación de actividades maliciosas o la existencia de vulnerabilidades utilizadas para realizar ataques en proyectos que utilizan los paquetes en cuestión (‘supply chain’). Se admite la verificación de paquetes en los lenguajes Python y JavaScript, ubicados en los catálogos PyPi y NPM (este mes también se planea añadir soporte para Ruby y RubyGems). El código de la herramienta está escrito en Python y se distribuye bajo la licencia AGPLv3.
Durante el análisis de 330 mil paquetes con la herramienta propuesta en el repositorio PyPi, se identificaron 42 paquetes maliciosos con backdoors y 2.4 mil paquetes riesgosos. En el proceso de examen, se realiza un análisis estático del código para identificar características de la API y se evalúa la existencia de vulnerabilidades conocidas, registradas en la base de datos OSV. Se utiliza el paquete MalOSS para el análisis de la API. El código de los paquetes se analiza en busca de patrones típicos que suelen emplearse en software malicioso. Los patrones se han preparado a partir del estudio de 651 paquetes con actividad maliciosa confirmada.
También se identifican atributos y metadatos que aumentan el riesgo de uso no intencionado, como la ejecución de bloques mediante ‘eval’ o ‘exec’, la generación de nuevo código durante la ejecución, la utilización de técnicas de ofuscación y ocultación de código, manipulaciones con variables de entorno, acceso no intencionado a archivos, el acceso a recursos de red en scripts de instalación (setup.py), el uso de typesquatting (asignación de nombres similares a los de bibliotecas populares), la identificación de proyectos obsoletos y abandonados, la indicación de correos electrónicos y sitios inexistentes, y la ausencia de un repositorio público con el código.
Además, se puede mencionar la identificación por parte de otros investigadores de seguridad de cinco paquetes maliciosos en el repositorio PyPi, que enviaban al exterior servidor el contenido de las variables de entorno con la intención de robar tokens de AWS y sistemas de integración continua: loglib-modules (presentados como módulos de la legítima biblioteca loglib), pyg-modules, pygrata y pygrata-utils (presentados como complementos de la legítima biblioteca pyg) y hkg-sol-utils.

Fuente: opennet.ru
