Uma vulnerabilidade crítica na linguagem de programação PHP pode ser explorada trivialmente para executar código malicioso em dispositivos Windows, alertam pesquisadores de segurança, que pediram aos afetados que tomem medidas antes do início do fim de semana.
Menos de 24 horas após a publicação da vulnerabilidade e do patch correspondente, pesquisadores da organização de segurança sem fins lucrativos Shadowserver relataram varreduras na Internet projetadas para identificar servidores vulneráveis a ataques. Isso – combinado com (1) a facilidade de exploração, (2) a disponibilidade de código de ataque de prova de conceito, (3) a gravidade da execução remota de código em máquinas vulneráveis e (4) a ampla plataforma XAMPP sendo vulnerável por padrão – levou os profissionais de segurança a urgir os administradores para verificar se seus servidores são afetados antes de começar o fim de semana.
Quando “Melhor ajuste” não é o melhor
“Um bug desagradável com uma exploração muito simples – perfeito para uma tarde de sexta-feira”, escreveram pesquisadores da empresa de segurança WatchTowr.
CVE-2024-4577, como a vulnerabilidade é rastreada, decorre de erros na maneira como o PHP converte caracteres Unicode em ASCII. Um recurso embutido no Windows conhecido como Best Fit permite que invasores usem uma técnica conhecida como injeção de argumento para passar a entrada fornecida pelo usuário para comandos executados por um aplicativo, neste caso, PHP. Exploits permitem que invasores contornem o CVE-2012-1823, uma vulnerabilidade crítica de execução de código corrigida em 2012.
“Ao implementar o PHP, a equipe não percebeu o recurso de Melhor Ajuste da conversão de codificação no sistema operacional Windows”, escreveram pesquisadores da Devcore, a empresa de segurança que descobriu o CVE-2024-4577. “Essa supervisão permite que invasores não autenticados contornem a proteção anterior do CVE-2012-1823 por meio de sequências de caracteres específicas. O código arbitrário pode ser executado em servidores PHP remotos por meio do ataque de injeção de argumento.”
O CVE-2024-4577 afeta o PHP somente quando ele é executado em um modo conhecido como CGI, no qual um servidor web analisa solicitações HTTP e as passa para um script para processamento. Mesmo quando não está definido para o modo CGI, no entanto, a vulnerabilidade ainda pode ser explorável quando executáveis como php.exe e php-cgi.exe estão em diretórios acessíveis pelo servidor web. Esta configuração é definida por padrão no XAMPP para Windows, tornando a plataforma vulnerável a menos que tenha sido modificada.
Um exemplo, observou WatchTowr, ocorre quando consultas são analisadas e enviadas por meio de uma linha de comando. O resultado: uma solicitação inofensiva como host/cgi.php?foo=bar poderia ser convertida em php.exe cgi.php foo=bar, um comando que seria executado pelo mecanismo principal da linguagem.
Sem escape para PHP
Como muitas outras linguagens, o a linguagem converte certos tipos de entrada do usuário para evitar que seja interpretada como um comando para execução. Esse é um processo conhecido como escape. Por exemplo, em HTML, os caracteres < e > são frequentemente escapados convertendo-os em seus equivalentes de valor hexadecimal Unicode < e > para evitar que sejam interpretados como tags HTML por um navegador.
Os pesquisadores da WatchTowr demonstram como o Best Fit falha ao escapar caracteres como um hífen suave (com valor Unicode 0xAD) e, em vez disso, o converte em um hífen normal não escapado (0x2D), um caractere essencial em muitas sintaxes de código.
Os pesquisadores continuaram explicando:
Acontece que, como parte do processamento Unicode, a linguagem aplicará um mapeamento conhecido como ‘melhor ajuste’ e presumirá que, quando o usuário inseriu um hífen suave, ele realmente quis digitar um hífen real e interpretá-lo como tal. Aqui reside a nossa vulnerabilidade – se fornecermos a um manipulador CGI um hífen suave (0xAD), o manipulador CGI não sentirá a necessidade de escapá-lo e o passará para o PHP. A linguagem, no entanto, irá interpretá-lo como se fosse um hífen real, o que permite a um invasor inserir argumentos de linha de comando extras, que começam com hifens, no processo.
Isso é notavelmente semelhante a um bug antigo do PHP (no modo CGI), CVE-2012-1823, e podemos pegar emprestadas algumas técnicas de exploração desenvolvidas para esse bug antigo e adaptá-las para funcionar com nosso novo bug. Uma análise útil aconselha que, para traduzir nossa injeção em RCE (Execução Remota de Código), devemos injetar os seguintes argumentos:
A vulnerabilidade foi descoberta pelo pesquisador da Devcore, Orange Tsai, que disse: “O bug é incrivelmente simples, mas é isso que também o torna interessante.”
O relatório da Devcore disse que os pesquisadores confirmaram que o XAMPP é vulnerável quando o Windows está configurado para usar os locais para chinês tradicional, chinês simplificado ou japonês. No Windows, um local é um conjunto de informações de preferência do usuário relacionadas ao idioma, ambiente e/ou convenções culturais do usuário. Os pesquisadores não testaram outros locais e pediram às pessoas que os usam para realizar uma avaliação abrangente de ativos para testar seus cenários de uso.
O CVE-2024-4577 afeta todas as versões do PHP em execução em um dispositivo Windows. Isso inclui branches da versão 8.3 anteriores a 8.3.8, 8.2 anteriores a 8.2.20 e 8.1 anteriores a 8.1.29.
Os branches da versão 8.0, 7 e 5 também são vulneráveis, mas como não são mais suportados, os administradores terão que seguir os conselhos de mitigação, pois os patches não estão disponíveis. Uma opção é aplicar o que é conhecido como regras de reescrita, como:
RewriteEngine On RewriteCond %{QUERY_STRING} ^%ad [NC] RewriteRule .? – [F,L]
Os pesquisadores alertam que essas regras foram testadas apenas para os três locais que eles confirmaram como vulneráveis.
O XAMPP para Windows ainda não havia lançado uma correção no momento em que esta postagem foi publicada. Para administradores que não precisam do PHP CGI, eles podem desativá-lo usando a seguinte configuração do Apache HTTP Server:
Conclusão
A vulnerabilidade crítica CVE-2024-4577 no PHP afeta todas as versões da linguagem em execução em dispositivos Windows. Devido à facilidade de exploração e à gravidade da execução remota de código, os administradores de sistema devem tomar medidas imediatas para atualizar suas instalações para versões corrigidas.
Recomendações:
- Aplique os patches mais recentes do PHP: Patches estão disponíveis para todas as versões suportadas do PHP.
- Verifique se o XAMPP está atualizado: Se você estiver usando o XAMPP, certifique-se de que ele esteja atualizado com a versão mais recente.
- Implemente regras de reescrita (opcional): Como solução alternativa, os administradores podem implementar regras de reescrita no Apache HTTP Server para mitigar a vulnerabilidade.
- Desative o PHP CGI (opcional): Se o PHP CGI não for necessário, desativá-lo pode reduzir o risco de exploração.
- Mantenha-se informado: Continue monitorando fontes confiáveis de segurança para obter as últimas informações sobre essa vulnerabilidade e outras ameaças à segurança.
Lembre-se: A segurança cibernética é uma responsabilidade contínua. É crucial aplicar as atualizações de segurança com rapidez e tomar medidas proativas para proteger seus sistemas contra vulnerabilidades conhecidas.
Recomendado: Funcionários de gigantes da IA alertam sobre perigos da tecnologia em carta aberta (05/06/2024)