El malware descargado de PyPI 41.000 veces fue sorprendentemente sigiloso

El malware descargado de PyPI 41.000 veces fue sorprendentemente sigiloso

PyPI, el repositorio de código abierto que utilizan tanto las organizaciones grandes como las pequeñas para descargar bibliotecas de código, alojaba 11 paquetes maliciosos que se descargaron más de 41.000 veces en uno de los últimos incidentes de este tipo que amenazan la cadena de suministro de software.

JFrog, una firma de seguridad que monitorea PyPI y otros repositorios en busca de malware, dijo que los paquetes son notables por lo mucho que sus desarrolladores tomaron para camuflar su código malicioso de la detección de red. Esas longitudes incluyen un mecanismo novedoso que utiliza lo que se conoce como cáscara inversa para comunicaciones proxy con servidores de control a través de la red de distribución de contenido Fastly. Otra técnica es Tunelización de DNS

, algo que JFrog dijo que nunca antes había visto en software malicioso cargado en PyPI.

Un vector poderoso

“Los administradores de paquetes son un vector poderoso y en crecimiento para la instalación involuntaria de código malicioso y, como descubrimos con estos 11 nuevos paquetes de PyPI, los atacantes se están volviendo más sofisticados en su enfoque”, escribió Shachar Menashe, director senior de investigación de JFrog, en un correo electrónico. . “Las técnicas de evasión avanzadas utilizadas en estos paquetes de malware, como la exfiltración novedosa o incluso el túnel de DNS (el primero que hemos visto en paquetes cargados en PyPI) señalan una tendencia inquietante de que los atacantes se están volviendo más sigilosos en sus ataques al software de código abierto”.

Los investigadores dijeron que PyPI eliminó rápidamente todos los paquetes maliciosos una vez que JFrog los informó.

El uso de repositorios de código abierto para impulsar malware se remonta al menos a 2016, cuando un estudiante universitario cargó paquetes maliciosos en PyPI, RubyGems y npm. Dio a los paquetes nombres que eran similares a los paquetes de uso generalizado que ya habían enviado otros usuarios.

En un lapso de varios meses, su código de impostor se ejecutó más de 45.000 veces en más de 17.000 dominios separados, y más de la mitad de las veces, su código recibió derechos administrativos todopoderosos. Dos de los dominios afectados terminaron en .mil, una indicación de que personas dentro del ejército de los EE. UU. Pueden haber ejecutado su script.

En 2017, la Autoridad de Seguridad Nacional de Eslovaquia informó que descubrió que los paquetes maliciosos descargados de PyPI se habían incorporado en múltiples piezas de software de producción en el transcurso de tres meses. Desde entonces, ha habido un número casi incontable de casos de malware que se ha infiltrado en los repositorios.

En julio, JFrog encontró paquetes PyPI maliciosos, descargados más de 30.000 veces, que llevaban a cabo una serie de actividades nefastas, incluido el robo de datos de tarjetas de crédito y la inyección de código malicioso en las máquinas infectadas. A principios de este año, un investigador desarrolló un nuevo tipo de ataque a la cadena de suministro que puede tener graves consecuencias. Los llamados “ataques de confusión de dependencia” funcionan cargando paquetes maliciosos en repositorios de código público y dándoles nombres que son idénticos a los paquetes legítimos almacenados en el repositorio interno de Microsoft, Apple u otro gran desarrollador de software. Las aplicaciones de administración de software de los desarrolladores a menudo prefieren las bibliotecas de código externas sobre las internas, por lo que descargan y usan el paquete malicioso en lugar del confiable.

De atacante a víctima a través de Fastly

Ahora, este tipo de ataques es cada vez más difícil de detectar. El mayor avance en el subterfugio que encontraron los investigadores fue en dos paquetes, uno llamado “paquete importante” (o alternativamente “paquete importante”) y el otro llamado “10Cent10” (o “10Cent11”). Los paquetes utilizan Fastly CDN para disfrazar las comunicaciones entre la máquina infectada y un servidor de control.

El código malicioso que se esconde en los paquetes hace que se envíe una solicitud HTTPS a pypi.python.org de una manera que no se puede distinguir de una solicitud legítima a PyPI. Las solicitudes eventualmente son redireccionadas por Fastly como una solicitud HTTP al servidor de control psec.forward.io.global.prod.fastly.net. Luego, el servidor envía respuestas a través de la misma configuración, lo que permite la comunicación bidireccional. Facilita rápidamente a las personas el registro de sus dominios en el servicio. En muchos casos, el registro incluso se puede realizar de forma anónima.

JFrog

Los investigadores de JFrog Andrey Polkovnychenko y Menashe explicaron:

La infraestructura de PyPI está alojada en Fastly CDN. Este hosting utiliza el Barniz Proxy HTTP transparente para almacenar en caché la comunicación entre los clientes y el backend. El tráfico entra primero en un Terminador TLS para el descifrado, por lo que el proxy Varnish puede inspeccionar el contenido del paquete HTTP. El proxy analiza los encabezados HTTP de la solicitud del usuario y redirige la solicitud al backend correspondiente de acuerdo con la Host encabezamiento. Luego, el proceso se repite en la dirección inversa, lo que permite que el malware imite la comunicación dúplex con PyPI.

Como resultado, la sesión de comando y control (C2) está encriptada y firmada con un certificado de servidor legítimo, lo que la hace indistinguible de comunicarse con recursos legítimos de PyPI.

El túnel DNS, la otra técnica de evasión avanzada que encontraron los investigadores, funciona utilizando un canal DNS, normalmente reservado para asignar nombres de dominio a direcciones IP, para enviar comunicaciones entre una computadora infectada y un servidor de control. El túnel de DNS no es nuevo, pero los investigadores dijeron que es la primera vez que ven la técnica utilizada en el malware cargado en PyPI.

La creciente sofisticación del código malicioso que se infiltra en PyPI, y presumiblemente en otros repositorios, es una indicación de que es probable que continúe su uso para propagar malware. Los desarrolladores que dependen de los repositorios públicos deben tener especial cuidado para asegurarse de que no haya errores tipográficos ni letras perdidas en el nombre del paquete que están descargando.

Leave a Reply

Your email address will not be published. Required fields are marked *