InfraFenceInfraFence

Live Security Operations

Começar

CVE-2023-23752: exposição de informações na API do Joomla 4, verificar e corrigir

Última atualização:

O Joomla 4.0.0 a 4.2.7 verifica de forma errada o acesso à sua API de web services: acrescentar public=true a uma requisição para /api/index.php/v1/… pula a verificação. O exploit público lê por aí a configuração do site, e isso inclui o usuário e a senha do banco de dados.

O NVD dá nota 5.3, já que ela só expõe informações. Na prática, as credenciais vazadas abrem o banco de dados onde quer que ele aceite conexões remotas, e os ataques começaram logo depois da divulgação. A CISA a adicionou ao KEV em janeiro de 2024.

Em resumo

CVE
CVE-2023-23752
Software
Joomla! CMS
Versões afetadas
4.0.0 a 4.2.7
Corrigida em
4.2.8
Pontuação CVSS
5.3 Média (NVD, CVSS 3.1) · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
CISA Known Exploited Vulnerabilities
Sim, adicionada em 8 de janeiro de 2024
Publicada pelo NVD
16 de fevereiro de 2023
Patch virtual do InfraFence
vp-cve-2023-23752 (ModSecurity id 9920008)

O que é afetado

Joomla 4.0.0 a 4.2.7. O Joomla 3 não tem essa API e não é afetado por esta CVE (está sem suporte desde agosto de 2023). A correção é o Joomla 4.2.8.

Verificar se um servidor está vulnerável

Encontre cada Joomla no servidor e mostre a versão:

Qualquer distribuição Linux
sudo nice -n 19 ionice -c3 find / -xdev -path '*/libraries/src/Version.php' 2>/dev/null \
  | while read -r f; do
      echo "$f: $(grep -oE '(MAJOR|MINOR|PATCH)_VERSION = [0-9]+' "$f" | grep -oE '[0-9]+$' | paste -sd.)"
    done

As tentativas são requisições à API com o parâmetro public:

Logs de acesso do Apache
sudo grep -rhiE '/api/index\.php/v1/[^ ]*[?&]public=' --include='*access*' --exclude='*.gz' /var/log/apache2 /var/log/httpd 2>/dev/null | tail -20

Corrigir

  1. Faça o backup dos arquivos do site e do banco de dados.
  2. Atualize o Joomla pelo painel de administração (System › Update › Joomla) para a 4.2.8 ou posterior, de preferência a versão mais recente de um branch com suporte.
  3. Se os logs mostrarem requisições bem-sucedidas (status 200) com public=true, considere conhecidas as credenciais do configuration.php: troque a senha do banco de dados (e atualize o configuration.php), a senha de e-mail e qualquer outro segredo guardado ali.
  4. Confira que o banco de dados não aceita conexões vindas da internet.

Como o InfraFence a bloqueia enquanto você atualiza

O patch virtual para a CVE-2023-23752 é uma regra ModSecurity que bloqueia uma requisição para um caminho que contenha /api/index.php/v1/ quando a query string tem um parâmetro public. As outras requisições à API, com a autenticação normal, passam.

Como o patch é aplicado

  1. O agente anota quais portas SSH e quais sites respondem.
  2. Ele grava a regra (id ModSecurity 9920008) entre os próprios marcadores no seu arquivo ModSecurity, executa apachectl configtest e recarrega o Apache de forma suave. Se o teste falhar, o arquivo anterior volta ao lugar.
  3. Ele verifica se o SSH e os sites ainda respondem, e remove o patch se não responderem.
  4. Ele verifica se o ModSecurity realmente bloqueia com a regra, com uma requisição de teste local inofensiva. Um ModSecurity em DetectionOnly só registra: nesse caso, o patch é removido e reportado como ineficaz, nunca como aplicado.

Cada requisição que o patch bloqueia é reportada com CVE-2023-23752 (agente 1.0.37 ou posterior): você vê as tentativas na atividade do servidor e na página Exploração do painel, e assim sabe que a vulnerabilidade está sendo testada contra você.

Atenção: Um patch virtual bloqueia a forma conhecida do ataque nas requisições que passam pelo Apache naquele servidor. Ele não substitui a atualização: instale a versão corrigida e depois remova o patch em Atividade com Desfazer, se não precisar mais dele.

Os patches virtuais precisam do Apache com ModSecurity, da configuração Permitir alterações na configuração do servidor web e de nenhum painel de hospedagem ou ferramenta de gerenciamento de configuração controlando o servidor web; eles fazem parte do plano Pro e do AutoMode. Uma pessoa os aplica a partir da análise por IA, ou o AutoMode faz isso. Veja Patches virtuais.

Fontes

Os fatos desta página vêm destas fontes; consulte-as para ver se houve mudanças.

Teste grátis em 1 servidor

O Starter é gratuito para um servidor, com proteção completa e bloqueio automático. Sem cartão de crédito.

Instale o agente como root, com o seu token no lugar de <TOKEN>:

curl -fsSL https://github.com/infrafence/infrafence-agent/releases/latest/download/install.sh | sudo bash -s -- --token <TOKEN>

O token é criado no painel, em Servidores › Adicionar servidor.