Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
keycloak-cve-2026-18963-hunt — Caccia alle tracce di sfruttamento di CVE-2026-18963 (acquisizione non autenticata di account Keycloak) nel database di Keycloak. | Kitploit
Strumenti/GitHubGitHub/kyos-public/keycloak-cve-2026-18963-hunt
Analisi delle VulnerabilitàDigital ForensicsAutenticazioneRisposta agli IncidentiSicurezza dei DatabaseAnalisi dei Log
GitHubkyos-public/keycloak-cve-2026-18963-hunt

keycloak-cve-2026-18963-hunt

Caccia alle tracce di sfruttamento di CVE-2026-18963 (acquisizione non autenticata di account Keycloak) nel database di Keycloak.

Vedi Repository
914h 37m faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-18963: Keycloak account takeover, caccia alle tracce di sfruttamento

Uno script psql che cerca in un database PostgreSQL di Keycloak le tracce dello sfruttamento di CVE-2026-18963 (account takeover non autenticato tramite il flusso reset-credentials).

Pubblicato da KYOS. Lo abbiamo scritto mentre applicavamo le correzioni alle distribuzioni Keycloak che gestiamo, per verificare che nessuno fosse stato compromesso durante la finestra di esposizione.

La vulnerabilità

CVE-2026-18963 è una falla nel flusso reset-credentials di keycloak-services (keycloak#51833). Un attaccante non autenticato può completare il processo di reset della password per qualsiasi utente senza cliccare il link di verifica via mail, e poi impostare una nuova password sull'account. Non è richiesta alcuna interazione con l'utente.

Severità: Critical, CVSS v3.1 9.1 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N), secondo Red Hat e NVD. La causa principale è una validazione impropria dello stato nel flusso di autenticazione, corretta in .

keycloak#51844

Versioni interessate / corrette

StreamCorretto in
26.7.x26.7.2 (note di rilascio)
26.6.x26.6.6
26.4.x (LTS)26.4.15
26.826.8.0

Tutto ciò che è al di sotto di queste versioni negli stream supportati è vulnerabile. Le release fuori supporto (26.5.x, 26.3 e precedenti) non ricevono correzioni: consideratevi esposti e aggiornate a uno stream corretto. Red Hat elenca il legacy RH-SSO 7 come non interessato; la Red Hat Build of Keycloak 26.4/26.6 è corretta in 26.4.15-1 / 26.6.6-1.

Workaround se non potete applicare subito la patch

Disabilitare il reset password self-service rimuove il punto di ingresso vulnerabile: Admin console > Realm settings > Login > "Forgot password" off, per ogni realm. Tramite la admin API: PUT /admin/realms/{realm} con {"resetPasswordAllowed": false}.

Questo blocca l'endpoint login-actions/reset-credentials ma impedisce anche agli utenti legittimi di resettare la propria password, quindi trattatelo come una misura temporanea finché non aggiornate. Nota: Red Hat non elenca una mitigazione ufficiale per questa CVE; la patch è l'unica vera soluzione.

Cosa controlla lo script

cve-2026-18963-keycloak-hunt.sql esegue quattro query di sola lettura:

QueryCosa trova
Q0Se il realm memorizza eventi di login/admin e la loro TTL. Se gli eventi sono disattivati o scaduti, i risultati vuoti in Q2/Q3 non provano nulla.
Q1Ogni credenziale password impostata all'interno della finestra di esposizione (credential.created_date). Questo è il takeover stesso e funziona anche se la registrazione degli eventi era disattivata.
Q2Eventi di login reset/credential, evidenziando qualsiasi reset completato senza SEND_RESET_PASSWORD nelle 24 ore precedenti (no_email_before = t). Quel flag è la firma della CVE: l'attaccante non ha mai attivato la mail.
Q3Reset di credenziali tramite admin API e operazioni execute-actions, per escludere la via amministrativa.

Utilizzo

root@kitploit:~
# default: realm 'master', finestra dal 2026-06-01
psql -U keycloak -d keycloak -f cve-2026-18963-keycloak-hunt.sql

# realm e finestra espliciti (eseguire una volta per realm, citare i valori esattamente così)
psql -U keycloak -d keycloak \
  -v realm="'myrealm'" -v since="'2026-05-01'" \
  -f cve-2026-18963-keycloak-hunt.sql

Impostate since a poco prima che la vostra versione vulnerabile andasse in produzione. Su 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

Interpretazione dei risultati

Le righe in Q1 non sono automaticamente compromissioni. Confrontate ciascuna con una causa legittima nota (reset self-service, azione dell'helpdesk, nuova registrazione) e trattate qualsiasi cosa non spiegata come candidata al takeover.

Le righe di Q2 con no_email_before = t su RESET_PASSWORD, UPDATE_CREDENTIAL o UPDATE_PASSWORD sono l'indicatore più forte dello sfruttamento di questa CVE. Correlate la colonna ip_address con i vostri log di accesso.

Controllate prima Q0: gli eventi di login scadono (events_expiration) e possono essere disattivati del tutto. Q1 non scade, quindi è il controllo più affidabile.

Se trovate un takeover

  1. Disabilitate l'account interessato o forzate un reset della password tramite un canale fidato.
  2. Revocate le sessioni e i token offline dell'account (Admin console > Sessions) e ruotate eventuali segreti a cui poteva accedere.
  3. Ampliate l'indagine: log del reverse-proxy/ingress attorno a timestamp e IP di Q2, azioni eseguite dall'account dopo il cambio di credenziali e applicazioni a valle federate tramite Keycloak.

Avvertenze

  • Di sola lettura, ma preferite eseguirlo contro una replica o un backup.
  • Scritto per Keycloak 26.x su PostgreSQL. I nomi delle tabelle sono stabili nelle versioni recenti, ma verificate su altri database o versioni più vecchie.
  • Nessun risultato non è prova di assenza di compromissione (vedi Q0), specialmente con retention degli eventi breve o logging disattivato.

Licenza

MIT, vedi LICENSE. Fornito così com'è, senza garanzie.

Scarica lo strumento