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:
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.)"
doneAs tentativas são requisições à API com o parâmetro public:
sudo grep -rhiE '/api/index\.php/v1/[^ ]*[?&]public=' --include='*access*' --exclude='*.gz' /var/log/apache2 /var/log/httpd 2>/dev/null | tail -20Corrigir
- Faça o backup dos arquivos do site e do banco de dados.
- 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.
- Se os logs mostrarem requisições bem-sucedidas (status 200) com
public=true, considere conhecidas as credenciais doconfiguration.php: troque a senha do banco de dados (e atualize oconfiguration.php), a senha de e-mail e qualquer outro segredo guardado ali. - 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
- O agente anota quais portas SSH e quais sites respondem.
- Ele grava a regra (id ModSecurity 9920008) entre os próprios marcadores no seu arquivo ModSecurity, executa
apachectl configteste recarrega o Apache de forma suave. Se o teste falhar, o arquivo anterior volta ao lugar. - Ele verifica se o SSH e os sites ainda respondem, e remove o patch se não responderem.
- Ele verifica se o ModSecurity realmente bloqueia com a regra, com uma requisição de teste local inofensiva. Um ModSecurity em
DetectionOnlysó 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.
