Pesquisadores de cibersegurança identificaram uma nova campanha de ataque à cadeia de fornecimento de software que mirou pacotes PHP ligados ao Laravel Lang para distribuir uma estrutura completa de roubo de credenciais.
As empresas de segurança StepSecurity, Aikido Security e Socket alertaram sobre a violação na sexta-feira. Segundo elas, os atacantes não publicaram novas versões maliciosas, mas reescreveram tags de versão do GitHub em quatro repositórios mantidos pela organização Laravel Lang, de modo a apontá-las para commits controlados pelo invasor.
Os pacotes afetados incluem:
- laravel-lang/lang
- laravel-lang/http-statuses
- laravel-lang/attributes
- possivelmente laravel-lang/actions
Esses pacotes são de terceiros e não fazem parte do projeto oficial Laravel.
De acordo com a Aikido, os invasores comprometeram 233 versões em três repositórios, enquanto a Socket afirmou que cerca de 700 versões históricas podem ter sido afetadas. A cronologia e o padrão das tags publicadas indicam um comprometimento mais amplo do processo de lançamento da organização Laravel Lang, e não apenas uma versão maliciosa isolada do pacote.
“O que tornou o ataque incomum foi o fato de o código-fonte real do projeto não ter sido alterado para incluir código malicioso”, explicou a StepSecurity. “Em vez disso, o invasor reescreveu todas as tags git existentes em cada repositório para apontar para um novo commit malicioso.”
“As reescritas começaram às 22h32 UTC no laravel-lang/lang, o pacote principal de traduções do Laravel, com 502 tags, e terminaram à 0h UTC no laravel-lang/actions”, acrescentou a empresa. “Os quatro repositórios compartilham a mesma identidade falsa de autor, os mesmos arquivos modificados e o mesmo comportamento do payload, o que torna quase certo que se trata do trabalho de um único agente usando uma única credencial comprometida com acesso de escrita em toda a organização.”
Isso permitiu que os atacantes publicassem tags de lançamento que pareciam legítimas, mas que na verdade levavam a commits maliciosos armazenados em um fork controlado pelo invasor. Quando os desenvolvedores instalavam o pacote via Composer, o download do código malicioso acontecia enquanto parecia que estavam instalando versões legítimas do Laravel Lang.
Os pesquisadores descobriram que os lançamentos maliciosos introduziam um arquivo chamado “src/helpers.php”, incorporado às tags de versão e carregado automaticamente pelo Composer. Como esse arquivo está registrado no composer.json em autoload.files, o backdoor é executado automaticamente em toda requisição PHP processada pela aplicação comprometida, explicou a Socket.
Ele foi projetado principalmente para identificar a máquina infectada e contatar um servidor externo, “flipboxstudio[.]info”, para baixar um payload em PHP capaz de operar em Windows, Linux e macOS.
Segundo a Aikido Security, o dropper entrega um inicializador em Visual Basic Script no Windows e o executa por meio do cscript. Em Linux e macOS, ele executa o payload do stealer com exec().
“O script gera um marcador exclusivo por máquina, um hash MD5 que combina o caminho do diretório, a arquitetura do sistema e o inode, para garantir que o payload seja acionado apenas uma vez por máquina”, explicou a Socket. “Isso evita execuções redundantes e ajuda o malware a permanecer indetectável após a primeira execução.”
O payload PHP baixado, identificado no VirusTotal, é um grande stealer de credenciais multiplataforma para Linux, macOS e Windows. Ele coleta credenciais de cloud, segredos do Kubernetes, tokens do Vault, credenciais do Git, segredos de CI/CD, chaves SSH, dados de navegador, carteiras de criptomoedas, gerenciadores de senhas, configurações de VPN e arquivos locais de configuração .env.
O malware também contém padrões de expressões regulares usados para extrair chaves da AWS, tokens do GitHub, tokens do Slack, segredos do Stripe, credenciais de banco de dados, JWTs, chaves privadas SSH e frases de recuperação de criptomoedas a partir de arquivos e variáveis de ambiente.
Isso inclui:
- papéis de IAM e documentos de identidade da instância, consultando endpoints de metadados em cloud
- credenciais padrão de aplicação do Google Cloud
- tokens de acesso do Microsoft Azure e perfis de entidade de serviço
- tokens de Service Account do Kubernetes e configurações de repositório do Helm
- tokens de autenticação do DigitalOcean, Heroku, Vercel, Netlify, Railway e Fly.io
- tokens do HashiCorp Vault
- tokens e configurações do Jenkins, GitLab Runners, GitHub Actions, CircleCI, TravisCI e ArgoCD
- frases-semente e arquivos associados a carteiras de criptomoedas como Electrum, Exodus, Atomic, Ledger Live, Trezor, Wasabi e Sparrow, além de extensões como MetaMask, Phantom, Trust Wallet, Ronin, Keplr, Solflare e Rabby
- histórico de navegação, cookies e dados de login do Google Chrome, Microsoft Edge, Mozilla Firefox, Brave e Opera, usando um executável embutido em Windows codificado em Base64 que contorna as proteções de criptografia ligada ao aplicativo do Chromium
- cofres locais e dados de extensões de navegador do 1Password, Bitwarden, LastPass, KeePass, Dashlane e NordPass
- sessões salvas do PuTTY e do WinSCP
- dumps do Windows Credential Manager
- arquivos RDP
- tokens de sessão associados a aplicativos como Discord, Slack e Telegram
- dados do Microsoft Outlook, Thunderbird e clientes FTP populares, como FileZilla, WinSCP e CoreFTP
- arquivos de configuração e credenciais contendo tokens de autenticação do Docker, chaves privadas SSH, credenciais do Git, históricos de shell, históricos de banco de dados, configurações de cluster Kubernetes, arquivos .env, wp-config.php e docker-compose.yml
- variáveis de ambiente carregadas no processo PHP
- credenciais de controle de versão a partir dos arquivos .gitconfig global e local, .git-credentials e .netrc
- configurações de VPN e arquivos de login salvos do OpenVPN, WireGuard, NetworkManager e VPNs comerciais como NordVPN, ExpressVPN, CyberGhost e Mullvad
Em sistemas Windows, o payload PHP também extrai um executável codificado em base64, incorporado ao arquivo, escreve o conteúdo na pasta %TEMP% com um nome aleatório de .exe e então o executa. A análise sobre o infostealer para Windows mostra que ele se chama DebugElevator e foi projetado para atingir Chrome, Brave e Edge, além de extrair chaves de App-Bound Encryption necessárias para decifrar credenciais armazenadas nos navegadores. Um caminho PDB incorporado também faz referência ao nome de usuário do Windows Mero e contém claude, o que pode indicar o uso de IA no desenvolvimento do malware para Windows.
“O payload obtido é um stealer de credenciais em PHP com cerca de 5.900 linhas, organizado em quinze módulos especializados de coleta”, disse o pesquisador da Aikido, Ilyas Makari. “Depois de reunir tudo o que consegue encontrar, ele criptografa os resultados com AES-256 e os envia para flipboxstudio[.]info/exfil. Em seguida, se apaga do disco para reduzir vestígios forenses.”
Segundo os pesquisadores, depois que os dados sensíveis são extraídos, o malware os criptografa e os envia de volta ao servidor C2.
A Aikido informou que notificou o incidente ao Packagist, que respondeu rapidamente removendo as versões maliciosas e deslistando temporariamente os pacotes afetados para impedir novas instalações.
Desenvolvedores que usam os pacotes Laravel Lang devem verificar as versões instaladas, trocar credenciais expostas, inspecionar os sistemas em busca de indicadores de comprometimento e, se possível, checar conexões de saída históricas para flipboxstudio[.]info.
Publicidade
Nossa audiência é formada por analistas, pentesters, decisores e entusiastas que consomem nossas notícias todo dia pelo Site, Newsletter e Instagram. Fale com quem realmente importa para o seu negócio. Anuncie aqui. Saiba mais...