El mundo de la programación y el desarrollo de software enfrenta constantemente amenazas de seguridad. Un ejemplo reciente y preocupante es el hallazgo de 27 paquetes maliciosos en el Python Package Index (PyPI), una biblioteca popular para desarrolladores de Python. Este descubrimiento, reportado en noviembre de 2023, resalta la importancia de comprender y mitigar los riesgos asociados con las dependencias de software. En este artículo, exploraremos el incidente, sus implicaciones y cómo los desarrolladores pueden protegerse contra tales amenazas.
Python Package Index (PyPI) es un repositorio de software para la programación en Python. Los desarrolladores de Python utilizan PyPI para descargar y compartir paquetes de software que simplifican el proceso de desarrollo. Estos paquetes pueden incluir librerías, marcos de trabajo y herramientas útiles que ahorran tiempo y esfuerzo.
Se ha detectado que un agente de amenazas no identificado ha estado publicando paquetes con nombres engañosamente similares a los originales (typosquatting) en el Python Package Index (PyPI) durante aproximadamente seis meses. El objetivo de estos paquetes es distribuir malware diseñado para establecer persistencia en el sistema, sustraer datos confidenciales y acceder a carteras de criptomonedas para beneficio financiero.
Los 27 paquetes en cuestión, disfrazados de librerías legítimas y populares de Python, han acumulado miles de descargas, informó Checkmarx en un estudio reciente. Las descargas se han concentrado principalmente en países como EE. UU., China, Francia, Hong Kong, Alemania, Rusia, Irlanda, Singapur, Reino Unido y Japón.
Una táctica notable en este ataque es el uso de esteganografía, es decir, la ocultación de un código malicioso dentro de una imagen que parece inofensiva, lo que aumentó significativamente la discreción del ataque, señaló la firma de seguridad de software.
Algunos de los paquetes implicados incluyen pyefflorer, pyminor, pyowler, pystallerer, pystob y pywool, siendo este último lanzado el 13 de mayo de 2023. Estos paquetes comparten una característica común: el uso del script setup.py para vincularse con otros paquetes maliciosos (como pystob y pywool), que a su vez ejecutan un script de Visual Basic (VBScript) para descargar y ejecutar un archivo llamado "Runtime.exe", estableciendo así persistencia en el sistema afectado.
Dentro del archivo ejecutable se encuentra un código compilado capaz de extraer información de navegadores web, carteras de criptomonedas y otras aplicaciones. Checkmarx también observó una cadena de ataque alternativa en la que se ocultaba código ejecutable dentro de una imagen PNG ("uwu.png"), que luego se decodificaba y ejecutaba para obtener la dirección IP pública y el identificador único universal (UUID) del sistema comprometido.
Te podrá interesar leer: Análisis de Malware con Wazuh
En particular, Pystob y Pywool se presentaron como herramientas para la gestión de API, pero en realidad filtraban datos a un webhook de Discord e intentaban mantener la persistencia colocando el archivo VBS en la carpeta de inicio de Windows. "Esta campaña subraya las amenazas constantes en el panorama digital actual, especialmente en áreas donde la colaboración y el código abierto son esenciales", destacó Checkmarx.
Este incidente se suma al descubrimiento reciente de ReversingLabs sobre una nueva serie de paquetes npm de protestware que ocultan mensajes políticos relacionados con conflictos en Ucrania, Israel y la Franja de Gaza. Uno de estos paquetes, @snyk/sweater-comb (versión 2.1.1), determina la ubicación geográfica del sistema y, si detecta que está en Rusia, muestra un mensaje crítico sobre la "invasión injustificada" de Ucrania a través de otro módulo llamado "es5-ext."
Otro paquete, e2eakarev, lleva la descripción "paquete de protesta por la libertad de Palestina" en su archivo package.json y realiza comprobaciones similares para identificar si la dirección IP corresponde a Israel, mostrando un "mensaje de protesta inofensivo" para concienciar sobre la lucha palestina.
Los ataques no se limitan solo a agentes de amenazas externos; incluso los ecosistemas de código abierto pueden ser vulnerables. Recientemente se reveló la presencia de 3938 secretos únicos en 2922 proyectos PyPI, con 768 de estos secretos siendo válidos.
Estos secretos incluyen claves de AWS, claves API de Azure Active Directory, claves de aplicaciones GitHub OAuth, claves de Dropbox, claves SSH y credenciales asociadas con MongoDB, MySQL, PostgreSQL, Coinbase y Twilio. Muchos de estos secretos se filtraron repetidamente en múltiples versiones, totalizando 56.866 instancias.
"La exposición de secretos en paquetes de código abierto conlleva riesgos significativos tanto para los desarrolladores como para los usuarios", advirtió Tom Forbes de GitGuardian. "Los atacantes pueden aprovechar esta información para acceder de manera no autorizada, suplantar a los mantenedores de paquetes o manipular a los usuarios mediante ingeniería social".
La creciente ola de ataques a la cadena de suministro de software ha llevado al gobierno de EE. UU. a emitir nuevas directrices este mes para que los desarrolladores y proveedores de software sean más conscientes de la seguridad del software.
"Se aconseja que las organizaciones de adquisición integren evaluaciones de riesgos de la cadena de suministro en sus decisiones de compra, especialmente después de los recientes incidentes destacados en la cadena de suministro de software", afirmaron la Agencia de Seguridad de Infraestructura y Ciberseguridad (CISA), la Agencia de Seguridad Nacional (NSA) y la Oficina del Director de Inteligencia Nacional (ODNI).
"Los desarrolladores y proveedores de software deben mejorar sus procesos de desarrollo de software y reducir el riesgo de daño no solo a sus empleados y accionistas, sino también a sus usuarios", concluyeron.
Te podrá interesar leer: Protegiendo la Cadena de Suministro: Principales Ataques
La presencia de paquetes maliciosos en PyPI es un recordatorio de que incluso las fuentes más confiables no están exentas de riesgos. Los desarrolladores que dependen de estas bibliotecas pueden verse inadvertidamente comprometidos, lo que pone en peligro sus proyectos y datos. Estrategias para Protegerse:
1. Verificación Rigurosa de Paquetes: Antes de instalar cualquier paquete, es crucial verificar su origen y autenticidad. Esto incluye revisar la documentación, los comentarios de otros usuarios y la reputación del autor del paquete.
2. Utilizar Herramientas de Análisis de Seguridad: Hay herramientas especializadas que se utilizan para examinar paquetes con el fin de identificar vulnerabilidades y conductas inusuales, similares a las funciones de nuestro SOC. Implementar estas herramientas como parte del proceso de desarrollo puede ayudar a identificar amenazas potenciales.
3. Principio de Menor Privilegio: Al usar paquetes de terceros, aplique el principio de menor privilegio. Esto significa otorgar solo los permisos estrictamente necesarios para que el paquete funcione, limitando así el alcance de lo que un paquete malicioso podría hacer.
4. Mantenerse Actualizado: Es esencial mantenerse al día con las últimas noticias y actualizaciones de seguridad. Seguir fuentes confiables y comunidades en línea puede proporcionar alertas tempranas sobre posibles amenazas.
5. Contribuir a la Comunidad: Reportar cualquier actividad sospechosa o paquetes maliciosos no solo protege su propio trabajo, sino que también ayuda a la comunidad en general.
Podría interesarte leer: ¿Tu software está al día?: Importancia de los Parches
El descubrimiento de paquetes maliciosos en PyPI es un recordatorio oportuno de los riesgos inherentes al desarrollo de software. Aunque no se puede eliminar por completo el riesgo de seguridad, adoptar prácticas de desarrollo conscientes y vigilantes puede minimizar significativamente la exposición a estas amenazas. Como comunidad, la colaboración y el intercambio de información son fundamentales para mantener la integridad y la seguridad del ecosistema de desarrollo de software.