Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
keycloak-cve-2026-18963-hunt — Procure por rastros de exploração do CVE-2026-18963 (tomada de conta não autenticada do Keycloak) no banco de dados do Keycloak. | Kitploit
Ferramentas/GitHubGitHub/kyos-public/keycloak-cve-2026-18963-hunt
Análise de VulnerabilidadesForensia DigitalAutenticaçãoResposta a IncidentesSegurança de Banco de DadosAnálise de Logs
GitHubkyos-public/keycloak-cve-2026-18963-hunt

keycloak-cve-2026-18963-hunt

Procure por rastros de exploração do CVE-2026-18963 (tomada de conta não autenticada do Keycloak) no banco de dados do Keycloak.

Ver Repositório
91há 4h 37mAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2026-18963: Keycloak account takeover, caça a vestígios de exploração

Um script psql que procura num banco de dados PostgreSQL do Keycloak por vestígios de exploração do CVE-2026-18963 (account takeover não autenticado através do fluxo de reset de credenciais).

Publicado pela KYOS. Escrevemo-lo enquanto corrigíamos as implementações do Keycloak que operamos, para verificar se ninguém tinha sido alvo de takeover durante a janela de exposição.

A vulnerabilidade

O CVE-2026-18963 é uma falha no fluxo de reset de credenciais do keycloak-services (keycloak#51833). Um atacante não autenticado consegue concluir o processo de redefinição de palavra-passe de qualquer utilizador sem clicar no link de verificação por e-mail, e depois definir uma nova palavra-passe na conta. Não é necessária qualquer interação do utilizador.

Gravidade: Crítica, CVSS v3.1 9.1 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N), de acordo com a Red Hat e o NVD. A causa raiz é uma validação de estado inadequada no fluxo de autenticação, corrigida no keycloak#51844.

Versões afetadas / corrigidas

StreamCorrigido em
26.7.x26.7.2 (notas de lançamento)
26.6.x26.6.6
26.4.x (LTS)26.4.15
26.826.8.0

Tudo o que esteja abaixo dessas versões nos streams suportados é vulnerável. Lançamentos fora de suporte (26.5.x, 26.3 e anteriores) não recebem correção: assuma exposição e atualize para um stream corrigido. A Red Hat lista o RH-SSO 7 legado como não afetado; o Red Hat Build do Keycloak 26.4/26.6 está corrigido em 26.4.15-1 / 26.6.6-1.

Workaround se não conseguir corrigir imediatamente

Desativar o reset de palavra-passe self-service remove o ponto de entrada vulnerável: Admin console > Realm settings > Login > "Forgot password" desligado, em cada realm. Através da API de administração: PUT /admin/realms/{realm} com {"resetPasswordAllowed": false}.

Isto bloqueia o endpoint login-actions/reset-credentials, mas também impede que utilizadores legítimos reponham a sua própria palavra-passe, por isso trate-o como uma medida provisória até atualizar. Note que a Red Hat não lista uma mitigação aprovada para este CVE; aplicar o patch é a única correção real.

O que o script verifica

O cve-2026-18963-keycloak-hunt.sql executa quatro consultas só de leitura:

ConsultaO que encontra
Q0Se o realm armazena eventos de login/admin de todo, e o seu TTL. Se os eventos estiverem desativados ou expirados, resultados vazios em Q2/Q3 não provam nada.
Q1Todas as credenciais de palavra-passe definidas dentro da janela de exposição (credential.created_date). Isto é o próprio takeover e funciona mesmo que o registo de eventos estivesse desativado.
Q2Eventos de login de reset/credenciais, sinalizando qualquer reset concluído sem SEND_RESET_PASSWORD nas 24h anteriores (no_email_before = t). Esse sinalizador é a assinatura do CVE: o atacante nunca acionou o e-mail.
Q3Resets de credenciais e operações de execute-actions via API de administração, para excluir a via administrativa.

Utilização

root@kitploit:~
# predefinições: realm 'master', janela desde 2026-06-01
psql -U keycloak -d keycloak -f cve-2026-18963-keycloak-hunt.sql

# realm e janela explícitos (executar uma vez por realm, citar valores exatamente assim)
psql -U keycloak -d keycloak \
  -v realm="'myrealm'" -v since="'2026-05-01'" \
  -f cve-2026-18963-keycloak-hunt.sql

Defina since para um pouco antes de a sua versão vulnerável ter sido publicada. Em Kubernetes:

root@kitploit:~
kubectl exec -it my-postgres-pod -- \
  psql -U keycloak -d keycloak -v realm="'myrealm'" -v since="'2026-05-01'" \
  -f - < cve-2026-18963-keycloak-hunt.sql

Interpretar resultados

As linhas em Q1 não são automaticamente comprometimentos. Compare cada uma com uma causa legítima conhecida (reset self-service, ação do helpdesk, novo registo) e trate qualquer coisa inexplicada como candidata a takeover.

As linhas de Q2 com no_email_before = t em RESET_PASSWORD, UPDATE_CREDENTIAL ou UPDATE_PASSWORD são o indicador mais forte de exploração deste CVE. Correlacione a coluna ip_address com os seus registos de acesso.

Verifique Q0 primeiro: os eventos de login expiram (events_expiration) e podem estar totalmente desativados. Q1 não expira, por isso é a verificação mais fiável.

Se encontrar um takeover

  1. Desative a conta afetada ou force um reset de palavra-passe através de um canal de confiança.
  2. Revogue as sessões e tokens offline da conta (Admin console > Sessions) e rotacione quaisquer segredos a que ela pudesse chegar.
  3. Alargue a investigação: registos do reverse-proxy/ingress em torno dos timestamps e IPs de Q2, ações executadas pela conta após a alteração da credencial, e aplicações a jusante federadas através do Keycloak.

Limitações

  • Só de leitura, mas prefira executá-lo contra uma réplica ou uma cópia de segurança.
  • Escrito para Keycloak 26.x em PostgreSQL. Os nomes das tabelas são estáveis entre versões recentes, mas verifique noutras bases de dados ou versões mais antigas.
  • A ausência de resultados não é prova de ausência de comprometimento (ver Q0), especialmente com retenção de eventos curta ou registo desativado.

Licença

MIT, consulte o LICENSE. Fornecido tal como está, sem garantia.

Baixar ferramenta