Los investigadores de ciberseguridad han señalado una nueva campaña de ataque a la cadena de suministro de software que se ha dirigido a múltiples paquetes PHP pertenecientes a Laravel-Lang para ofrecer un marco integral de robo de credenciales.
Los paquetes afectados incluyen:
- laravel-lang/lang
- laravel-lang/http-status
- laravel-lang/atributos
- laravel-lang/acciones
«El momento y el patrón de las etiquetas recientemente publicadas apuntan a un compromiso más amplio del proceso de lanzamiento de la organización Laravel Lang, en lugar de una única versión de paquete malicioso», dijo Socket. «Las etiquetas se publicaron en rápida sucesión el 22 y 23 de mayo de 2026, y muchas versiones aparecieron con sólo unos segundos de diferencia».
Se han identificado más de 700 versiones asociadas con estos paquetes, lo que indica etiquetado masivo o republicación automatizada. Se sospecha que el atacante pudo haber logrado obtener acceso a credenciales a nivel de organización, automatización de repositorios o infraestructura de lanzamiento.
Lo que distingue al ataque es que el código fuente del proyecto real no fue modificado para incluir el malware. En cambio, los atacantes reescribieron cada etiqueta git existente en cada repositorio para señalar una nueva confirmación maliciosa.
La principal funcionalidad maliciosa se encuentra en un archivo llamado «src/helpers.php» que está incrustado en las etiquetas de versión. Está diseñado principalmente para tomar huellas digitales del host infectado y contactar a un servidor externo («flipboxstudio(.)info») para recuperar una carga útil multiplataforma basada en PHP que se ejecuta en Windows, Linux y macOS.
«El atacante agregó src/helpers.php al mapa autoload.files en cada paquete comprometido», dijo StepSecurity. «Debido a que todas las llamadas a aplicaciones Laravel requieren __DIR__.’/vendor/autoload.php’ al inicio, y debido a que Symfony, PHPUnit y la mayoría de los otros frameworks PHP hacen lo mismo, la carga útil se ejecuta en el momento en que arranca cualquier consumidor del paquete. No se requiere creación de instancias de clases, ni llamadas a métodos, ni activadores especiales».
Según Aikido Security, el dropper ofrece un iniciador de Visual Basic Script en Windows y lo ejecuta a través de cscript. En Linux y macOS, ejecuta la carga útil del ladrón mediante exec().
«Debido a que este archivo (‘src/helpers.php’) está registrado en Composer.json bajo autoload.files, la puerta trasera se ejecuta automáticamente en cada solicitud PHP manejada por la aplicación comprometida», explicó Socket.
«El script genera un marcador único por host (un hash MD5 que combina la ruta del directorio, la arquitectura del sistema y el inodo) para garantizar que la carga útil solo se active una vez por máquina. Esto evita ejecuciones redundantes y ayuda a que el malware permanezca sin ser detectado después de la ejecución inicial».
El ladrón está equipado para recopilar una amplia gama de datos de sistemas comprometidos y filtrarlos al mismo servidor. Esto incluye –
- Roles de IAM y documentos de identidad de instancias mediante la consulta de puntos finales de metadatos en la nube
- Credenciales predeterminadas de la aplicación Google Cloud
- Tokens de acceso de Microsoft Azure y perfiles de entidad de servicio
- Tokens de cuenta de servicio de Kubernetes y configuraciones de registro de Helm
- Tokens de autenticación para DigitalOcean, Heroku, Vercel, Netlify, Railway y Fly.io
- Fichas de bóveda de HashiCorp
- Tokens y configuraciones de Jenkins, GitLab Runners, GitHub Actions, CircleCI, TravisCI y ArgoCD
- Frases semilla y archivos asociados con carteras de criptomonedas (Electrum, Exodus, Atomic, Ledger Live, Trezor, Wasabi y Sparrow) y extensiones (MetaMask, Phantom, Trust Wallet, Ronin, Keplr, Solflare y Rabby)
- Historial del navegador, cookies y datos de inicio de sesión de Google Chrome, Microsoft Edge, Mozilla Firefox, Brave y Opera mediante el uso de un ejecutable integrado de Windows codificado en Base64 que evita las protecciones de cifrado vinculado a aplicaciones (ABE) de Chromium.
- Bóvedas locales y datos de extensiones de navegador para 1Password, Bitwarden, LastPass, KeePass, Dashlane y NordPass
- Sesiones guardadas de PuTTY/WinSCP
- Volcados del Administrador de credenciales de Windows
- Sesiones guardadas de WinSCP
- Archivos RDP
- Tokens de sesión asociados con aplicaciones como Discord, Slack y Telegram
- Datos de Microsoft Outlook, Thunderbird y clientes FTP populares (FileZilla, WinSCP y CoreFTP)
- Archivos de configuración y credenciales que contienen tokens de autenticación de Docker, claves privadas SSH, credenciales de Git, archivos de historial de shell, archivos de historial de bases de datos, configuraciones de clúster de Kubernetes, archivos .env, wp-config.php y docker-compose.yml.
- Variables de entorno cargadas en el proceso PHP
- Credenciales de control de fuente de archivos .gitconfig, .git-credentials y .netrc globales y locales
- Configuración de VPN y archivos de inicio de sesión guardados para OpenVPN, WireGuard, NetworkManager y VPN comerciales como NordVPN, ExpressVPN, CyberGhost y Mullvad
«La carga útil recuperada es un ladrón de credenciales PHP de ~5.900 líneas, organizado en quince módulos recopiladores especializados», dijo el investigador de Aikido Ilyas Makari. «Después de recopilar todo lo que puede encontrar, cifra los resultados con AES-256 y los envía a flipboxstudio(.)info/exfil. Luego se elimina del disco para limitar la evidencia forense».