CVE-2026-17059: falla BOLA su Keycloak

Una nuova vulnerabilità di controllo accessi mette in allerta chi gestisce infrastrutture Keycloak in ambienti multi-team. Si chiama CVE-2026-17059 ed è una falla di tipo Broken Object-Level Authorization (BOLA) che, per mesi, ha permesso ad account amministrativi con permessi limitati di accedere a dati personali di altri utenti. In questo articolo vediamo come funziona la vulnerabilità, perché rappresenta un rischio concreto per le organizzazioni con deleghe amministrative complesse e quali azioni intraprendere subito per proteggere i propri sistemi.

Cos’è CVE-2026-17059 e come funziona

CVE-2026-17059 è una vulnerabilità classificata come CWE-639 (Broken Object-Level Authorization, BOLA) che colpisce Keycloak, la piattaforma open source per la gestione dell’identità e degli accessi ampiamente usata in ambito enterprise.

Il problema riguarda un endpoint specifico dell’API amministrativa:

Questo endpoint, pensato per elencare gli utenti associati a un determinato ruolo, restituiva informazioni personali complete come username, email, nome e cognome, senza applicare gli stessi controlli di autorizzazione previsti dall’endpoint principale /admin/realms/{realm}/users.

La root cause tecnica

Il codice che gestiva questa richiesta convertiva gli ID dei membri del ruolo in rappresentazioni utente complete (UserRepresentation) senza verificare, caso per caso, se il chiamante avesse effettivamente il diritto di visualizzare quel singolo utente. In pratica, venivano controllati solo permessi generici come query-users e view-realm, ma non il filtro granulare “per singolo utente” che invece protegge l’endpoint principale.

Perché è un rischio reale negli ambienti multi-team

Molte aziende strutturano l’accesso amministrativo a Keycloak su base delegata: team di supporto, helpdesk o servizi esterni ricevono ruoli con permessi limitati per svolgere operazioni specifiche, senza però ottenere la visibilità completa sugli utenti del realm.

Questo modello di delega, teoricamente sicuro, veniva aggirato proprio grazie alla vulnerabilità. Un operatore con permessi ridotti poteva:

L’impatto pratico è significativo: si tratta di esposizione di dati personali a personale che, per policy interna, non avrebbe dovuto averne accesso. Un problema non solo di sicurezza tecnica, ma anche di conformità normativa, pensando ad esempio agli obblighi previsti dal GDPR.

Il ruolo del modello di permessi v2 (adminPermissionsEnabled)

Un dettaglio interessante riguarda il modello di permessi amministrativi più recente di Keycloak, noto come permissions v2 o adminPermissionsEnabled. Questo modello, più granulare rispetto a quello legacy, applica controlli di autorizzazione coerenti su ogni singola risorsa, riducendo drasticamente la probabilità che un endpoint “alternativo” possa aggirare le protezioni previste.

Detto questo, è importante essere chiari su un punto: non si tratta di una garanzia assoluta. Anche con il modello v2 attivo, è indispensabile:

La lezione di sicurezza da portare a casa

Questo caso offre uno spunto di riflessione che va oltre Keycloak: proteggere solo l’endpoint “principale” non basta. Ogni sistema complesso, soprattutto le API REST amministrative, tende ad avere percorsi alternativi che restituiscono dati simili o identici, magari pensati per casi d’uso diversi.

Alcune buone pratiche generali da adottare in qualsiasi progetto:

  1. Mappare tutti gli endpoint che possono restituire lo stesso tipo di dato sensibile, non solo quello “ufficiale”
  2. Applicare controlli di autorizzazione coerenti su ogni endpoint, incluse le operazioni di listing e le conversioni server-side
  3. Testare sistematicamente confrontando le risposte di endpoint diversi che dovrebbero comportarsi allo stesso modo
  4. Adottare una difesa in profondità, senza fare affidamento su un unico livello di controllo

Timeline della vulnerabilità

La scoperta della falla è attribuita al ricercatore Enzo Mongin, in collaborazione con Escape Research. Ecco i punti chiave della vicenda:

Il punteggio CVSS 3.1 assegnato è di circa 6.5, gravità Medium: non critico in senso assoluto, ma comunque rilevante considerando la natura dei dati esposti.

Cosa fare subito: raccomandazioni pratiche

Se gestisci un’infrastruttura Keycloak, ecco le azioni da mettere in pratica senza rimandare.

1. Aggiorna Keycloak

La prima e più importante azione è l’aggiornamento a Keycloak 26.7.0 o versione successiva, che include la patch ufficiale per questa vulnerabilità.

2. Effettua un audit dei ruoli e permessi

3. Limita gli accessi non necessari

Applica il principio del minimo privilegio: riduci il numero di account con permessi di query estesi, specialmente per ruoli helpdesk o di supporto esterno.

4. Testa dopo l’aggiornamento

Verifica che, dopo la patch, l’endpoint GET /admin/realms/{realm}/roles/{role-name}/users restituisca solo le informazioni che l’account chiamante è autorizzato a vedere. Controlla anche i log di accesso per individuare eventuali chiamate sospette effettuate prima dell’aggiornamento.

5. Valuta l’attivazione del modello permissions v2

Se compatibile con la tua infrastruttura, valuta l’attivazione di adminPermissionsEnabled per un controllo più granulare sulle risorse, sempre accompagnato da test specifici.

Checklist operativa rapida

Conclusione

CVE-2026-17059 è un esempio emblematico di come le vulnerabilità di controllo accessi possano nascondersi in endpoint “secondari”, spesso trascurati durante i test di sicurezza. In un ambiente Keycloak multi-team, dove la delega dei permessi amministrativi è la norma, questo tipo di falla può tradursi in un’esposizione concreta di dati personali a chi non dovrebbe averne accesso.

La lezione principale è chiara: la sicurezza di un sistema si misura sulla coerenza dei controlli applicati a tutti gli endpoint, non solo a quelli più visibili. Aggiornare tempestivamente a Keycloak 26.7.0, effettuare un audit dei permessi e testare la coerenza delle autorizzazioni sono passaggi fondamentali per chiudere questa falla e prevenire situazioni simili in futuro.