CVE-2022-22963
Corrige ahora. Ella está bajo explotación confirmada por CISA y tiene exploit funcional público.
Apply updates per vendor instructions.
Resumen
Falha crítica no Spring Cloud Function que permite RCE não autenticado através de uma expressão SpEL (Spring Expression Language) enviada pelo atacante como cabeçalho de roteamento HTTP. Afeta qualquer aplicação que use a funcionalidade de routing do framework, mesmo sem endpoints de negócio expostos — o próprio mecanismo de roteamento interno é o vetor. Está no catálogo KEV da CISA com exploração confirmada e possui PoC pública, módulo Metasploit e template Nuclei, o que a torna trivial de varrer em massa.
Detalle técnico
Spring Cloud Function implementa uma funcionalidade de roteamento dinâmico de funções via o cabeçalho HTTP (ou atributo de mensagem) `spring.cloud.function.routing-expression`. O valor desse campo é avaliado pelo framework como uma expressão SpEL para decidir qual bean de função invocar. O problema é que a aplicação avalia essa expressão sem qualquer sanitização ou sandboxing, tratando input externo como código a ser interpretado — uma injeção de expressão que dá ao atacante acesso à API Java completa via SpEL (reflexão, instanciação de classes, invocação de métodos arbitrários).
O advisory da VMware referencia CWE-770 (alocação de recursos sem limites) e CWE-497 (exposição de informação de controle a esfera não autorizada), mas o catálogo KEV da CISA classifica a falha como CWE-94 (injeção de código), que descreve melhor o mecanismo prático: o atacante controla integralmente o conteúdo avaliado como SpEL, sem qualquer filtro de classes ou métodos permitidos.
O ponto crítico é que essa avaliação ocorre na camada de roteamento, antes de qualquer lógica de negócio da aplicação ser executada. Isso significa que não é necessário que exista uma função ou rota legítima correspondente ao payload — basta que a aplicação tenha a dependência do Spring Cloud Function com routing habilitado e um endpoint HTTP exposto, qualquer endpoint, para o cabeçalho ser processado.
Cómo se explota
O vetor é uma requisição HTTP simples (tipicamente POST) contra qualquer endpoint exposto pela aplicação Spring Cloud Function, incluindo o cabeçalho `spring.cloud.function.routing-expression` com uma expressão SpEL manipulada. Não há necessidade de autenticação (PR:N no CVSS), interação do usuário ou acesso prévio à rede interna — só é preciso alcançar a porta HTTP da aplicação vulnerável. A complexidade de ataque é baixa (AC:L): a expressão SpEL, uma vez processada, pode invocar classes Java para execução de comandos no sistema operacional subjacente ao processo Java.
O impacto declarado é execução remota de código com os privilégios do processo da aplicação, além de acesso a recursos locais do sistema (leitura de arquivos, variáveis de ambiente, etc.), conforme o próprio texto do advisory. Como a exploração não depende de rotas de negócio específicas, scanners automatizados conseguem testar a presença da falha injetando expressões inofensivas (ex.: operações aritméticas) e observando o efeito na resposta, antes de escalar para payloads de execução de comando.
A CISA adicionou a CVE ao catálogo KEV em 25/08/2022 com prazo de correção em 15/09/2022, confirmando exploração ativa no mundo real. A disponibilidade pública de PoC, módulo Metasploit e template Nuclei desde pouco depois da divulgação (29/03/2022) tornou a varredura em massa contra instâncias expostas rápida e generalizada — é o padrão de exploração esperado para uma vulnerabilidade dessa classe, análoga em espírito ao Spring4Shell divulgado na mesma janela de tempo.
Versiones
Cómo protegerse
A correção oficial é atualizar o Spring Cloud Function. A Cisco, ao investigar seus produtos, declarou explicitamente que não existe workaround que endereça essa vulnerabilidade — a única mitigação real é a atualização de versão. Não há flag de configuração documentada pelo fornecedor para desabilitar a avaliação da expressão de roteamento sem atualizar o código.
Se a atualização imediata não for viável, os controles compensatórios praticáveis são: bloquear ou sanitizar no WAF/proxy reverso qualquer requisição contendo o cabeçalho `spring.cloud.function.routing-expression` com conteúdo que não corresponda a um valor de roteamento simples esperado (nome de função), e restringir o acesso de rede ao serviço apenas a clientes confiáveis enquanto o patch não é aplicado. Nenhuma dessas medidas substitui o patch — são paliativos para reduzir a janela de exposição.
Não funciona como mitigação: remover apenas o endpoint de rota principal da aplicação ou desabilitar autenticação de outras camadas, já que a avaliação da expressão ocorre no roteamento interno do framework independentemente da lógica de negócio exposta.
Cómo detectar
Em logs de acesso HTTP/aplicação, procurar pela presença do cabeçalho `spring.cloud.function.routing-expression` (ou parâmetro equivalente) contendo tokens típicos de SpEL malicioso, como `T(`, referências a `java.lang.Runtime`, `ProcessBuilder`, `exec`, ou sequências de caracteres incomuns para um nome de função de roteamento legítimo (que normalmente seria um identificador simples). A Cisco publicou regras Snort específicas (SID 59388 e 59416) para detecção de tráfego de exploração na rede.
Como o disparo inicial de varreduras automatizadas frequentemente usa payloads de teste inofensivos (expressões aritméticas simples) antes de escalar, a ausência de comandos de sistema óbvios no log não garante que não houve tentativa de reconhecimento — qualquer valor não trivial nesse cabeçalho, vindo de origem não confiável, deve ser tratado como indicador de tentativa de exploração.