Tentativas de exploração observadas da vulnerabilidade do Struts 2 S2-066 (CVE-2023-50164)
Introdução
O Apache Struts é uma poderosa estrutura de aplicações Web de código aberto que é usada por empresas e organizações em todo o mundo. O Apache Struts tem sido um alvo principal de hackers devido à sua popularidade. Quando uma vulnerabilidade crítica de execução remota de código (RCE) é anunciada, as equipes de segurança e TI devem tomar medidas imediatas para proteger seus sistemas.
Em 7 de dezembro de 2023, o CVE-2023-50164 foi publicado. A vulnerabilidade permite que um invasor manipule parâmetros de upload de arquivos para ativar passagem de caminho e carregar um arquivo mal-intencionado. Isso pode fazer com que o invasor obtenha controle total do sistema.
Em 11 de dezembro, as primeiras explorações de prova de conceito (PoC) foram publicadas e amplamente disponibilizadas. As tentativas de exploração seguiram-se logo depois, em 12 de dezembro (Figura 1).
Sobre o CVE
O CVE-2023-50164 representa uma vulnerabilidade crítica descoberta no Apache Struts 2, que é uma estrutura de código aberto amplamente usada para desenvolver e criar aplicações Web Java EE. O Apache Struts, conhecido por sua robustez e flexibilidade, desempenha um papel importante na arquitetura de vários projetos Web comerciais e de código aberto. Isso transforma a vulnerabilidade em uma preocupação significativa para vários setores, incluindo setores importantes, como finanças, saúde e serviços governamentais.
O risco principal do CVE-2023-50164 está relacionado ao seu potencial de RCE por meio de uma falha transversal de caminho. Especificamente, ele explora a maneira como a estrutura Apache Struts lida com uploads de arquivos. Ao manipular os parâmetros de carregamento de arquivos, um invasor pode efetivamente atravessar a estrutura de diretórios do servidor Web sem autorização.
Essa passagem permite a implantação de arquivos maliciosos, normalmente shells da Web baseados em JSP (Java Server Page), em diretórios ou locais que não foram originalmente destinados ou acessíveis ao conteúdo de arquivos carregados pelo usuário. A exploração depende da capacidade de burlar mecanismos de segurança do lado do servidor de uma maneira que não foi prevista pelos desenvolvedores de aplicações.
O processo de ataque
O processo de ataque é o seguinte:
1. O invasor executa o reconhecimento primeiro e identifica um website ou aplicação Web que usa uma versão vulnerável do Apache Struts e o caminho de URL de upload de arquivos.
2. O invasor prepara um arquivo mal-intencionado, geralmente um arquivo JSP ou um shell da Web.
3. O invasor então cria uma solicitação especial para carregar o arquivo. Essa solicitação inclui dados manipulados, como o nome e o caminho do arquivo, manipulando, assim, os parâmetros de carregamento do arquivo.
4. Na solicitação de carregamento mencionada na etapa 3, o invasor inclui comandos do sistema que exploram a vulnerabilidade de passagem de caminho. Esses comandos instruem o servidor a colocar o arquivo fora do diretório normal de upload. Esse é o estágio de passagem do caminho.
5. O invasor envia a solicitação de upload ao servidor que executa as versões vulneráveis do Apache Struts. Se isso for bem-sucedido, o servidor salva o arquivo mal-intencionado ou o shell da Web em um local ou diretório onde ele possa ser executado.
6. Em seguida, o invasor acessa o arquivo mal-intencionado carregado por meio de um navegador da Web ou de um script automatizado. O acesso a esse arquivo aciona a execução do código mal-intencionado ou do shell da Web no servidor da Web.
7. Depois que o código é executado na etapa 6, o invasor pode executar ações adicionais no servidor. Pode ser o roubo de dados confidenciais, a modificação de conteúdo de websites e a obtenção do controle total do servidor da Web, entre outros.
8. Dependendo das intenções ou motivações do invasor, ele pode manter o acesso secreto para realizar explorações futuras ou usar o servidor comprometido para lançar outros ataques.
As implicações
As implicações do CVE-2023-50164 são de longo alcance. As vulnerabilidades de RCE estão entre as ameaças mais graves e críticas em aplicações Web, pois permitem que invasores executem comandos arbitrários em um servidor afetado. Isso pode gerar acesso não autorizado, roubo de dados e, potencialmente, o comprometimento total do sistema.
A ampla integração do Apache Struts amplifica esses riscos, tornando o CVE-2023-50164 um problema de alta prioridade para organizações em todo o mundo.
Tentativas de exploração observadas
Em 12 de dezembro, um dia após a exploração da PoC se tornar amplamente disponível, começamos a ver tentativas de exploração semelhantes à exploração publicada da PoC (Figura 2). Embora essas tentativas de ataque sejam reais, não é provável que elas sejam bem-sucedidas. Para que o ataque seja bem-sucedido, o ponto de extremidade visado deve possuir a funcionalidade de upload de arquivos.
Além da verificação de PoC esperada, começamos a ver solicitações que procuram explorar essa vulnerabilidade que não correspondem à PoC publicada. Essa variante tem como alvo o caminho /s2/upload.action em vez do original /login.action (Figura 2). Curiosamente, o nome do parâmetro "fileFileName" está sendo usado para incluir a passagem de caminho que difere do "uploadFileName" original.
Não está claro se esses pontos de extremidade têm a funcionalidade de upload de arquivos. Estamos observando as mesmas tentativas de exploração da variante 2 por um grupo de IPs que visam muitos clientes diferentes.
O Grupo de Inteligência de Segurança da Akamai continuará analisando os logs do nosso Web Application Firewall (WAF) em busca de novas variantes e atualizará esta seção do blog com qualquer informação nova.
Mitigação com o App & API Protector
Clientes que usam o Akamai Adaptive Security Engine no modo automático e têm o grupo "Web Platform Attack" no modo Deny estão automaticamente protegidos contra esses ataques. Os clientes que estiverem usando o Adaptive Security Engine no modo manual devem verificar se têm a regra de grupo "Web Platform Attack" ou a seguinte regra individual no modo Deny (Figura 4):
3000929- Apache Struts Path Traversal and File Upload Attack Detected (CVE-2023-50164)
Resumo
O Akamai App & API Protector mitigou com sucesso essas tentativas de ataque contra nossos clientes de segurança. Além disso, não conseguimos determinar conclusivamente se os pontos de extremidade visados realmente possuem a funcionalidade de upload de arquivos; portanto, não observamos nenhuma ação subsequente pós-exploração que os invasores possam realizar após um ataque bem-sucedido.
Embora a defesa mais eficaz seja atualizar imediatamente o código-fonte, reconhecemos o imenso esforço necessário para que as equipes de segurança identifiquem rapidamente e atualizem com segurança os componentes vulneráveis. Esse desafio é agravado pelo número cada vez maior de aplicações e pela natureza dinâmica desses ambientes.
A noção de que a "segurança ocorre em camadas" pode parecer clichê, mas é crucial levar em consideração métodos complementares adicionais para aumentar a segurança geral. Os invasores estão se adaptando rapidamente a novas PoCs públicas, geralmente dentro de 24 horas, o que aumenta significativamente o desafio para as equipes de defesa.
A implementação de um WAF, como o Akamai App & API Protector, pode servir como uma camada adicional de defesa, que pode proteger contra CVEs recém-descobertos e fornecer um buffer extra de segurança.