← voltar
CVE-2022-24112criticalsob ataqueCWE-290

apisix/batch-requests plugin allows overwriting the X-REAL-IP header

100Vexday Risk Score

Corrija agora. Ela está sob exploração confirmada pelo CISA e tem exploit funcional público.

ssvc Actcvss 9.8epss 96%
da publicação à arma11 dias
Publicada no NVD11 de fev.
1ª PoC+11d
metasploit7 de dez.
CISA KEV+195d
probabilidade de exploração
96%top 1% das CVEs
exploração observada
simCISA + VulnCheck
18 exploit(s) público(s)
Ação exigida pela CISAprazo federal: 2022-09-15

Apply updates per vendor instructions.

Resumo

O plugin batch-requests do Apache APISIX permite que um cliente externo sobrescreva o cabeçalho X-REAL-IP usado pelo gateway para decidir se uma requisição interna partiu de um IP autorizado. Isso quebra a restrição de IP da Admin API e, em instalações com a chave de API padrão não alterada, resulta em execução remota de código no plano de dados. Está no catálogo KEV da CISA com exploração confirmada e existe módulo Metasploit e template Nuclei públicos, o que torna a varredura automatizada trivial.

Detalhamento técnico

O batch-requests é um plugin que aceita, em uma única requisição HTTP ao gateway, uma lista de sub-requisições a serem despachadas internamente — inclusive para caminhos administrativos como /apisix/admin/*. A Admin API do APISIX normalmente é protegida por uma lista de IPs permitidos (allowlist), verificada a partir do cabeçalho X-REAL-IP que o próprio gateway deveria fixar com o IP real do cliente antes de repassar a sub-requisição internamente.

O bug (classificado pela CISA como CWE-290, autenticação/verificação de identidade por spoofing) está na ordem/lógica dessa reescrita: o código do plugin não neutraliza de forma consistente um X-REAL-IP fornecido pelo próprio atacante antes que a checagem de allowlist seja avaliada para a sub-requisição interna. O atacante controla o cabeçalho e o corpo da requisição externa ao batch-requests, incluindo o caminho e o payload da sub-requisição embutida — inclusive endpoints da Admin API.

O resultado prático é um bypass de restrição de IP: uma requisição originada de qualquer lugar da rede pode ser processada internamente como se tivesse partido de um IP confiável (ex.: localhost). Como a Admin API do APISIX permite criar rotas, upstreams e plugins arbitrários, e plugins como serverless-pre-function/serverless-post-function executam código Lua, o acesso não autorizado à Admin API se converte em execução de código no processo do gateway.

Como é explorada

O vetor é uma requisição HTTP não autenticada enviada diretamente ao endpoint do plugin batch-requests exposto no plano de dados (a porta pública do gateway), contendo uma sub-requisição direcionada à Admin API. Não é necessária autenticação prévia para acionar o bypass em si — a barreira que cai é justamente o controle de IP que substituiria a autenticação de rede da Admin API.

O impacto final depende de duas pré-condições que a nota do fornecedor destaca e que a manchete 'RCE crítico' esconde: (1) a Admin API precisa estar acessível pelo mesmo caminho de rede que o plano de dados — se ela roda em porta separada isolada de rede, o bypass de IP ainda funciona, mas o atacante só consegue contornar restrições de IP de rotas do plano de dados, sem chegar à Admin API; (2) para virar RCE, o atacante precisa da chave de API da Admin API — em instalação padrão com a chave default não alterada, isso é trivial, tornando o cenário 'default config' plenamente crítico (CVSS 9.8, sem interação do usuário, sem privilégio). Com chave alterada, o atacante ainda pode abusar do bypass para outras finalidades (SSRF interno, contorno de allowlist de rotas), mas não obtém RCE diretamente.

A presença no catálogo KEV da CISA confirma exploração ativa in-the-wild, e a existência de módulo Metasploit e template Nuclei indica que a cadeia completa (bypass de IP → Admin API → criação de plugin malicioso → RCE) já está automatizada e é usada em varredura de massa contra instâncias expostas à internet com configuração padrão.

Versões

Afetadas
O advisory do Apache Software Foundation não especifica um limite inferior exato de versões afetadas; a correção foi disponibilizada nas linhas 2.10.x e 2.12.x (2.10.4 e 2.12.1), o que indica que versões anteriores a esses releases nessas linhas — e presumivelmente séries anteriores que incluíam o plugin batch-requests habilitado por padrão — são vulneráveis.
Corrigidas em
2.10.4 e 2.12.1, conforme o comunicado oficial da Apache Software Foundation.

Como se proteger

A correção definitiva é atualizar o Apache APISIX para 2.10.4 (backport da linha 2.10.x) ou 2.12.1, conforme o advisory oficial do projeto. Se a atualização não for imediata, o paliativo indicado pelo próprio fornecedor é desabilitar explicitamente o plugin batch-requests: declarar a lista de plugins habilitados em conf/config.yaml sem incluí-lo, ou comentar sua entrada em conf/config-default.yaml. O custo desse paliativo é funcional — qualquer integração que dependa de agregação de requisições via batch-requests deixa de funcionar até a atualização.

Trocar a chave de API padrão da Admin API e/ou mover a Admin API para uma porta isolada, sem exposição no mesmo segmento de rede do plano de dados, reduz o impacto (evita o salto direto para RCE), mas não corrige a vulnerabilidade em si: o bypass de IP no batch-requests continua permitindo contornar restrições de IP de rotas do plano de dados, segundo o próprio texto do advisory.

Não funciona como mitigação confiar apenas em uma allowlist de IP para proteger a Admin API sem também isolar rede/porta ou desabilitar o plugin vulnerável — é exatamente esse controle que a falha quebra.

Como detectar

Procurar em logs de acesso do APISIX chamadas ao endpoint do plugin batch-requests seguidas, na mesma janela de tempo, de operações na Admin API (/apisix/admin/*) — criação ou alteração inesperada de rotas, upstreams ou plugins (especialmente serverless-pre-function/post-function) fora de mudanças de configuração planejadas é o indicador mais forte de exploração bem-sucedida. Requisições externas contendo cabeçalho X-REAL-IP manipulado combinadas com payloads batch-requests que referenciam caminhos administrativos também são um sinal direto de tentativa de bypass, ainda que nem toda tentativa fique visível se o atacante não obtiver a chave de API correta.

Não há um único log ou assinatura de tráfego universalmente confiável além desse padrão de correlação, já que a requisição inicial ao batch-requests, isoladamente, pode ser legítima — o sinal está na combinação com acesso subsequente à Admin API a partir de um contexto que deveria estar bloqueado pela allowlist de IP.

Pesquisado e redigido com IA a partir do advisory do fornecedor e de análises públicas, com as fontes acima. Confira sempre a versão corrigida no advisory oficial antes de agir.
An attacker can abuse the batch-requests plugin to send requests to bypass the IP restriction of Admin API. A default configuration of Apache APISIX (with default API key) is vulnerable to remote code execution. When the admin key was changed or the port of Admin API was changed to a port different from the data panel, the impact is lower. But there is still a risk to bypass the IP restriction of Apache APISIX's data panel. There is a check in the batch-requests plugin which overrides the client IP with its real remote IP. But due to a bug in the code, this check can be bypassed.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
⚠ Recursos públicos, para você avaliar a exposição de sistemas que controla ou está autorizado a testar. Teste apenas com autorização.