Atac a la cadena de subministrament de PHP: més de 700 versions de paquets Laravel-Lang compromeses amb malware

Seguridad Tecnologia

El 22 de maig de 2026, investigadors d'Aikido Security, Socket i StepSecurity van detectar un atac sofisticat contra l'ecosistema PHP: quatre paquets del projecte laravel-lang van ser compromesos amb un malware de robatori de credencials que s'executa automàticament en instal·lar el paquet via Composer.

Què va passar

Els atacants van obtenir accés als repositoris de GitHub mitjançant un GitHub Personal Access Token (PAT) filtrat, probablement provinent d'una bretxa anterior a GitHub. Amb aquest accés, van reescriure totes les etiquetes (tags) de release existents en quatre repositoris del projecte laravel-lang, apuntant-les a commits maliciosos en un fork que ells controlaven. Això va comprometre 233 versions directes i va afectar aproximadament 700 versions històriques.

La tècnica és especialment perillosa perquè GitHub permet que les etiquetes referencien commits d'un fork del mateix repositori. El desenvolupador que executa composer require o composer update rep codi maliciós tot i que el nom i la versió del paquet siguin legítims.

Paquets afectats

  • laravel-lang/lang — biblioteca de traduccions per a Laravel (7.800+ estrelles a GitHub)
  • laravel-lang/http-statuses — traduccions de codis d'estat HTTP
  • laravel-lang/attributes — traduccions d'atributs Eloquent
  • laravel-lang/actions — traduccions d'accions comunes

Mecanisme de l'atac

El vector d'infecció inicial era un fitxer src/helpers.php injectat al composer.json del paquet sota la clau autoload.files. Això provoca que el codi maliciós s'executi a cada petició PHP des del moment en què el paquet queda instal·lat.

El dropper (Fase 1) realitza un fingerprint del sistema, escriu un marcador de persistència al directori temporal i ofusca el domini C2 en arrays d'enters abans de contactar amb la infraestructura de l'atacant. A Windows descarrega un llançador .vbs; a Linux/macOS usa exec() per a execució en segon pla.

Anàlisi del payload

L'stealer de Fase 2 conté aproximadament 5.900 línies de codi PHP en 15 mòduls especialitzats de recol·lecció. Les seves capacitats inclouen:

  • Claus de cloud: AWS, GCP, Azure, tokens Kubernetes, Vault
  • Credencials de repositoris: SSH, Git, GitHub, GitLab, Bitbucket
  • Dades de CI/CD: variables d'entorn, tokens de pipelines
  • Més de 17 tipus de navegador (Chrome, Firefox, Brave, Edge, etc.)
  • Carteres de criptomonedes: Bitcoin, Ethereum, Monero
  • Gestors de contrasenyes
  • Plataformes de comunicació: Slack, Discord
  • Fitxers .env, tokens API de Stripe, PayPal i serveis similars
  • Configuracions VPN i claus SSH

Tota la informació exfiltrada es xifra amb AES-256 abans d'enviar-se al servidor C2 (flipboxstudio[.]info). El malware es va autoeliminuar després de la transmissió per dificultar l'anàlisi forense.

Cronologia

  • 22 maig 2026 — 22:32 UTC: Inici de l'atac sobre laravel-lang/lang
  • 23 maig 2026 — 00:00 UTC: Atac completat; laravel-lang/actions compromès
  • 23 maig 2026: Aikido Security, Socket i StepSecurity informen Packagist
  • 23 maig 2026: Packagist elimina les versions malicioses i dóna de baixa temporalment els paquets
  • 25 maig 2026: Actualització de l'advisory amb nous descobriments

Què cal fer ara

  1. Tractar l'entorn com a compromès. Si has instal·lat o actualitzat qualsevol dels quatre paquets entre el 22 i el 23 de maig, assumeix que les credencials accessibles des d'aquest procés PHP han estat robades.
  2. Rotar totes les credencials. Claus AWS/GCP/Azure, tokens GitHub/GitLab, tokens Stripe/PayPal, claus SSH, contrasenyes de base de dades i qualsevol secret en fitxers .env.
  3. No instal·lar aquests paquets fins que el projecte laravel-lang confirmi la integritat dels seus repositoris.
  4. Bloquejar el domini C2: flipboxstudio[.]info a nivell de firewall, DNS i WAF.
  5. Revisar logs d'accés per cercar connexions sortints a aquest domini des del 22 de maig.
  6. Auditar permisos SCM i activar MFA amb maquinari (FIDO2) en tots els comptes amb accés d'escriptura.
  7. Reconstruir des d'imatges netes els servidors que executaven el codi afectat.

Lliçó per a equips PHP

Aquest atac il·lustra un risc fonamental del model de paquets moderns: la confiança en el nom del paquet i el número de versió no és suficient. Els equips han d'usar hash pinning al composer.lock, verificar la integritat dels paquets amb eines com Socket o Aikido, i revisar regularment les dependències transitives dels seus projectes Laravel.

Fonts i documentació

Compartir