Libera tu mente y alcanza tus metas
Ataques a la cadena de suministro explotan los puntos de entrada en Python, npm y los ecosistemas de código abierto
Ataques a la cadena de suministro explotan los puntos de entrada en Python, npm y los ecosistemas de código abierto

Ataques a la cadena de suministro explotan los puntos de entrada en Python, npm y los ecosistemas de código abierto

El ecosistema de código abierto, debido a su adopción generalizada, se ha convertido en un objetivo principal para los ataques a la cadena de suministro. Los actores maliciosos a menudo aprovechan las funciones integradas de los paquetes de código abierto para distribuir y ejecutar automáticamente código dañino. En particular, favorecen dos técnicas: scripts automáticos de preinstalación que se ejecutan al instalar el paquete y paquetes aparentemente inocentes que importan dependencias maliciosas.

Los puntos de entrada, una característica poderosa para exponer la funcionalidad de los paquetes, son vulnerables a la explotación en varios ecosistemas, incluidos PyPI (Python), npm (JavaScript), Ruby Gems, NuGet (.NET), Dart Pub y Rust Crates.

Los atacantes pueden aprovechar estos puntos de entrada para ejecutar código malicioso cuando se ejecutan comandos específicos, lo que representa un riesgo generalizado en el panorama del código abierto.

Los métodos de ataque incluyen el secuestro de comandos (suplantar herramientas populares de terceros y comandos del sistema) y apuntar a varias etapas del proceso de desarrollo a través de complementos y extensiones maliciosos. Cada enfoque conlleva distintos niveles de éxito potencial y riesgo de detección.

Los ataques de punto de entrada, si bien requieren la interacción del usuario, ofrecen a los atacantes un método más sigiloso y persistente para comprometer los sistemas, evitando potencialmente los controles de seguridad tradicionales.

Este vector de ataque plantea riesgos tanto para los desarrolladores individuales como para las empresas, lo que destaca la necesidad de medidas de seguridad más completas para los paquetes Python.

"Los atacantes pueden aprovechar estos puntos de entrada para ejecutar código malicioso cuando se ejecutan comandos específicos, lo que representa un riesgo generalizado en el panorama del código abierto", dijeron los investigadores de Checkmarx Yehuda Gelb y Elad Rapaport en este informe.

Los puntos de entrada en un lenguaje de programación como Python se refieren a un mecanismo de empaquetado que permite a los desarrolladores exponer cierta funcionalidad como un contenedor de línea de comandos (también conocido como console_scripts). Alternativamente, también pueden servir para cargar complementos que aumenten las funciones de un paquete.

Checkmarx señaló que si bien los puntos de entrada son una forma poderosa de mejorar la modularidad, se podría abusar de la misma característica para distribuir código malicioso a usuarios desprevenidos. Algunas de las formas en que esto podría suceder incluyen el secuestro de comandos y la creación de complementos maliciosos para diversas herramientas y frameworks.

El secuestro de comandos ocurre cuando los paquetes falsificados utilizan puntos de entrada que se hacen pasar por herramientas y comandos populares de terceros (por ejemplo, aws y docker), recopilando así información confidencial cuando los desarrolladores instalan el paquete, incluso en los casos en que se distribuye como un Wheel Files (.whl).

Algunos de los comandos de terceros más utilizados que podrían ser objetivos potenciales para el secuestro de comandos incluyen npm, pip, git, kubectl, terraform, gcloud, heroku y dotnet.

Un segundo tipo de secuestro de comandos también puede manifestarse cuando los actores de amenazas usan nombres de comandos legítimos del sistema (por ejemplo, touch, curl, cd, ls y mkdir) como puntos de entrada para secuestrar el flujo de ejecución.

El éxito de este enfoque depende principalmente del orden de PATH. Si el directorio que contiene los puntos de entrada maliciosos aparece antes en el PATH que los directorios del sistema, el comando malicioso se ejecutará en lugar del comando del sistema. Es más probable que esto ocurra en entornos de desarrollo donde se priorizan los directorios de paquetes locales.

La eficacia del secuestro de comandos se puede mejorar mediante una táctica más sigilosa llamada envoltura de comandos, que implica crear un punto de entrada que actúa como envoltorio alrededor del comando original, en lugar de reemplazarlo por completo.

Lo que hace que este enfoque sea potente es que ejecuta silenciosamente el código malicioso al mismo tiempo que invoca el comando legítimo original y devuelve los resultados de la ejecución, lo que le permite pasar desapercibido.

"Dado que el comando legítimo aún se ejecuta y su resultado y comportamiento se conservan, no hay señales inmediatas de compromiso, lo que hace que el ataque sea extremadamente difícil de detectar mediante el uso normal", dijeron los investigadores. "Este enfoque sigiloso permite a los atacantes mantener el acceso a largo plazo y potencialmente filtrar información confidencial sin levantar sospechas".

Otra táctica de ataque de punto de entrada implica la creación de complementos y extensiones maliciosos para herramientas de desarrollo que tienen la capacidad de obtener un amplio acceso al código base en sí, dando así a los delincuentes la oportunidad de cambiar el comportamiento del programa o alterar el proceso de prueba para que parezca el código. está funcionando según lo previsto.

El desarrollo se produce cuando Sonatype, en su informe anual sobre el estado de la cadena de suministro de software, reveló que se han descubierto más de 512.847 paquetes maliciosos en ecosistemas de código abierto para Java, JavaScript, Python y .NET desde noviembre de 2023, un año salto del 156% durante el año.

Fuente: THN