Python Package Index (PyPI), objetivo de un ataque a la cadena de suministro
ReversingLabs ha descubierto un nuevo ataque dirigido al índice de paquetes Python (PyPI). Este método de ataque consiste en integrar malware con código compilado, aprovechando las capacidades de ejecución directa de los archivos de código de bytes Python (PYC). Al aprovechar los archivos PYC, los atacantes pueden eludir la detección de los sistemas de seguridad que se centran principalmente en examinar los archivos de código fuente.
Karlo Zanki, ingeniero inverso de ReversingLabs, destacó la importancia de este asalto a la cadena de suministro, ya que supone la primera explotación conocida de la ejecución de archivos PYC. Esto supone una grave amenaza para la seguridad general de la cadena de suministro de software. El ataque a PyPI forma parte de una tendencia más amplia, con varios repositorios de código abierto como GitHub, NPM y RubyGems también en el punto de mira. Los atacantes pretenden inyectar código dañino en los paquetes, con la esperanza de que los desarrolladores lo incluyan sin saberlo en sus productos de software.
ReversingLabs bautizó este nuevo método de ataque como "fshec2". Su descubrimiento ha arrojado luz sobre la posibilidad de otros ataques no reportados en PyPI. El equipo de seguridad de PyPI tomó medidas inmediatas para eliminar el ataque fshec2 de la plataforma. Sin embargo, los investigadores de PyPI han reconocido las características inusuales del ataque y han advertido que otros atacantes podrían emplear métodos similares en el futuro.
Durante su investigación, ReversingLabs identificó características y comportamientos distintivos en fshec2 mediante búsquedas estándar en repositorios. Aunque los dos primeros archivos del paquete no tenían ninguna importancia, los investigadores quedaron intrigados por el tercero, llamado full.pyc. A diferencia de anteriores ataques a PyPI que se basaban en técnicas de ofuscación para ocultar el malware, fshec2 encapsulaba todo el código y las funciones peligrosas en un único archivo que contenía código de bytes Python generado. Este alejamiento de los métodos de ataque convencionales presenta un mayor desafío para la detección.
Tras un examen más detallado del archivo full.pyc, los investigadores descubrieron un método llamado "get_path" que realizaba acciones maliciosas, incluida la extracción de información confidencial como nombres de usuario, nombres de host y listados de directorios. Sin embargo, el formato de código de bytes del archivo lo hacía ilegible para herramientas de inspección tradicionales como el Inspector de PyPI. Para evaluar su contenido y descubrir el comportamiento sospechoso y dañino, fue necesario descompilar el código compilado del archivo.pyc.
Este exploit recientemente expuesto subraya la importancia de identificar funciones maliciosas como "get_path" tanto para los equipos de seguridad como para DevSecOps. En la actualidad, muchas soluciones de seguridad carecen de la capacidad de evaluar el código fuente durante las inspecciones de paquetes, por lo que el malware incrustado en el código de bytes generado por Python no se detecta.
En respuesta, PyPI puso en marcha varias iniciativas destinadas a reforzar sus defensas. Estas medidas incluyen la eliminación del soporte de firmas PGP por defecto, una asociación de seguridad con Amazon Web Services y la introducción de la autenticación obligatoria de dos factores para todas las cuentas.
Las fuentes de este artículo incluyen un artículo en TheRegister.