Se ha detectado un ciberataque dirigido a la cadena de suministro de software que afecta a paquetes muy populares dentro del ecosistema Laravel (PHP).
En lugar de publicar nuevas versiones maliciosas o modificar el código principal del proyecto, los hackers corrompieron las "etiquetas" (tags) de versiones antiguas en GitHub. Redirigieron esas etiquetas para que apuntaran a código malicioso alojado en un repositorio paralelo controlado por ellos.
El resultado: Cualquier desarrollador que instalara o actualizara estos paquetes con Composer, sin saberlo, se descargaba el código manipulado. Todo parecía normal, pero el sistema ya estaba infectado.
Los paquetes comprometidos son de Laravel Lang (un conjunto de herramientas de terceros para traducciones y localización), muy usados por desarrolladores:
- laravel-lang/lang
- laravel-lang/http-statuses
- laravel-lang/attributes
- laravel-lang/actions
El código malicioso se introducía a través de un archivo llamado helpers.php. Lo más peligroso es que este archivo se registraba en composer.json mediante la directiva autoload.files.
Consecuencia: El malware se ejecutaba cada vez que la aplicación PHP arrancaba (al hacer require DIR.'/vendor/autoload.php'), sin necesidad de llamar a ninguna función nueva. Era silencioso y automático.
Una vez activo, descargaba una segunda carga útil con capacidad para robar:
- Credenciales de servicios cloud (AWS, Google Cloud, Azure).
- Claves SSH y tokens de GitHub.
- Variables de entorno (.env) y credenciales de bases de datos.
- Carteras de criptomonedas y semillas de recuperación.
- Contraseñas guardadas en navegadores (Chrome, Edge, Brave).
- Datos de gestores de contraseñas (1Password, Bitwarden, KeePass).
En sistemas Windows, además, instalaba un ejecutable oculto llamado DebugElevator que extraía las claves maestras para descifrar las contraseñas guardadas en navegadores basados en Chromium.