Hacking
Κενό ασφαλείας στο Keycloak εκθέτει προσωπικά δεδομένα σε περιορισμένους διαχειριστές
Ένα σφάλμα στο endpoint που επιστρέφει μέλη ρόλων του Keycloak επέτρεπε σε λογαριασμούς με δικαιώματα query-users και view-realm να ανακτήσουν ονόματα και email χρηστών. Η έκδοση 26.7.0 διορθώνει το πρόβλημα και οι οργανισμοί πρέπει να αναβαθμίσουν και να ελέγξουν ρόλους και logs.
Μια κρίσιμη ανεπάρκεια στο σύστημα διαχείρισης ταυτοτήτων Keycloak επέτρεπε σε λογαριασμούς διαχειριστών με περιορισμένα δικαιώματα να ανακτήσουν προσωπικά δεδομένα χρηστών τα οποία κανονικά δεν θα έπρεπε να βλέπουν. Το πρόβλημα, καταγεγραμμένο ως CVE-2026-17059, ανακαλύφθηκε από τον ερευνητή Enzo Mongin της Escape Research (γνωστός ως Orionexe) και διορθώθηκε από την κοινότητα του έργου.
Η ευπάθεια αφορά την Admin REST API του Keycloak και αξιολογήθηκε με βαθμολογία CVSS 3.1 6.5 (μέτριας σοβαρότητας). Ωστόσο το πρακτικό ρίσκο για οργανισμούς πολλαπλών ομάδων ή πολυενοικιαστικά περιβάλλοντα μπορεί να είναι σημαντικό, επειδή επιτρέπει ανεπιθύμητη πρόσβαση σε ορατά προσωπικά δεδομένα μέσω ενός συγκεκριμένου endpoint.
Σε ποιο σημείο του Keycloak υπάρχει το πρόβλημα
Το κενό βρίσκεται στο endpoint που επιστρέφει τα μέλη που έχουν ανατεθεί σε έναν ρόλο, δηλαδή στο:
GET /admin/realms/{realm}/roles/{role-name}/users
Κανονικά, το γενικό endpoint λίστας χρηστών του Keycloak εφαρμόζει έναν έλεγχο εξουσιοδότησης ανά χρήστη πριν επιστρέψει οποιαδήποτε εγγραφή, ώστε ένας περιορισμένος διαχειριστής χωρίς το δικαίωμα view-users να μην βλέπει στοιχεία. Στην περίπτωση όμως του συγκεκριμένου endpoint, η μέθοδος RoleContainerResource.getUsersInRole ελέγχει μόνο αν ο αιτών μπορεί να δει τον ρόλο και να εκτελεί queries χρηστών (query-users), και μετά επιστρέφει απευθείας τις αναπαραστάσεις των χρηστών για κάθε μέλος του ρόλου.
Με απλά λόγια, ένας λογαριασμός που στον υπόλοιπο σύστημα δεν έχει δικαίωμα να «περιηγηθεί» στον κατάλογο χρηστών μπορούσε, με ένα αίτημα στο role-members endpoint, να λάβει ονόματα, διευθύνσεις email και άλλες πληροφορίες των μελών ενός ρόλου.
Ποιες πληροφορίες μπορούσαν να εκτεθούν
Τα πεδία που αναφέρονται ως ενδεχομένως εκτιθέμενα περιλαμβάνουν:
- Ονόματα χρήστη
- Διευθύνσεις email
- Όνομα και επώνυμο
- Κατάσταση ενεργοποίησης λογαριασμού
- Κατάσταση επιβεβαίωσης email
Αν και δεν αφορά άμεσα ευαίσθητα ιατρικά ή οικονομικά δεδομένα, πρόκειται για προσωπικά στοιχεία (PII) που μπορούν να χρησιμοποιηθούν σε social engineering, spear-phishing ή για αναγνώριση χρηστών σε εσωτερικές δομές. Σε ρυθμιστικά περιβάλλοντα όπως ο GDPR, ακόμη και τέτοιου είδους αποκάλυψη μπορεί να απαιτήσει ειδοποίηση παραβίασης.
Τι είδους εγκαταστάσεις επηρεάζονται
Η ευπάθεια αφορά ρεαλμ που χρησιμοποιούν το προεπιλεγμένο μοντέλο δικαιωμάτων διαχείρισης του Keycloak, δηλαδή όταν η ρύθμιση adminPermissionsEnabled είναι απενεργοποιημένη (false). Σε αυτές τις εγκαταστάσεις, οι επιτρεπόμενες ενέργειες όπως query-users και view-realm αντιπροσωπεύουν συνήθεις περιορισμένες ρυθμίσεις διαχειριστή που πολλές οργανώσεις χρησιμοποιούν για helpdesk, υποστήριξη ή αναζήτηση χρηστών.
Αντίθετα, ρεαλμ που έχουν μεταβεί στη «fine-grained admin permissions version 2» δεν επηρεάζονται, γιατί εκεί το φιλτράρισμα των αιτημάτων role-member γίνεται στο επίπεδο αποθήκευσης και εφαρμόζεται η έγκριση για κάθε χρήστη προτού η εγγραφή γίνει διαθέσιμη στο API.
Η Escape Research επαλήθευσε την ευπάθεια σε δοκιμαστική κατασκευή του έργου (Keycloak 999.0.0-SNAPSHOT, commit 33695405ea), κάτι που δείχνει ότι το πρόβλημα ήταν γνώρισμα της τρέχουσας ροής κώδικα και όχι ένα τοπικό σφάλμα μεταγωγής.
Πώς μπορεί να εκμεταλλευτεί κανείς το πρόβλημα
Ο πιο ρεαλιστικός επιτιθέμενος σε αυτό το σενάριο δεν χρειάζεται πλήρη διαχειριστικά δικαιώματα. Αρκεί να έχει ή να αποκτήσει λογαριασμό που του έχει εκχωρηθεί συνδυασμός δικαιωμάτων όπως query-users και view-realm. Αυτό μπορεί να είναι ένας νόμιμος υποστηρικτικός λογαριασμός ή ένας λογαριασμός που έχει καταληφθεί από εξωτερικό παράγοντα.
Με το συγκεκριμένο δικαίωμα, ο επιτιθέμενος μπορεί να στείλει ένα αίτημα στο role-members endpoint για έναν συγκεκριμένο ρόλο και να λάβει ένα σύνολο αντικειμένων χρήστη, χωρίς να περάσει από τον κανονικό έλεγχο «canView» που εφαρμόζεται στο γενικό users endpoint. Με λίγες κλήσεις και ευφυείς επιλογές ρόλων (π.χ. ρόλοι με πολλά μέλη ή ρόλοι που διατρέχουν ομάδες), μπορεί να συγκεντρώσει μεγάλη λίστα PII.
Αν η εγκατάσταση είναι πολυενοικιαστική ή έχει σαφή διαχωρισμό ομάδων, το πρόβλημα μετατρέπεται σε θεμελιώδες σφάλμα απομόνωσης: ένας helpdesk διαχειριστής της ομάδας Α θα μπορούσε να ανακτήσει στοιχεία χρηστών της ομάδας Β.
Διόρθωση, χρονοδιάγραμμα και συμβουλές αναβάθμισης
Το ζήτημα αναφέρθηκε στην ομάδα του Keycloak στις 18 Ιουλίου 2026, επιβεβαιώθηκε την ίδια ημέρα και στις 24 Ιουλίου 2026 καταχωρήθηκε ως CVE-2026-17059 από τη Red Hat. Η επίσημη διόρθωση κυκλοφόρησε στις 28 Ιουλίου 2026 και ενσωματώθηκε στην έκδοση 26.7.0 του Keycloak.
Η επιδιόρθωση προσθέτει έναν έλεγχο canView για κάθε χρήστη στη ροή ανάκτησης μελών ρόλου, φέρνοντας το role-members endpoint στα ίδια επίπεδα προστασίας με το κύριο users endpoint. Αυτό σημαίνει ότι πλέον πριν η εγγραφή χρήστη μετατραπεί σε API representation, γίνεται ο ανάλογος έλεγχος ορατότητας.
Συστάσεις για διαχειριστές και οργανισμούς:
- Αναβαθμίστε σε Keycloak 26.7.0 ή νεότερη έκδοση το συντομότερο δυνατό.
- Ανασκοπήστε ρόλους και εξουσιοδοτήσεις που περιλαμβάνουν query-users και view-realm και περιορίστε τους εκεί όπου δεν είναι απαραίτητο.
- Εξετάστε τη μετάβαση σε fine-grained admin permissions v2, αν αυτό είναι εφικτό για το περιβάλλον σας.
- Ελέγξτε logs για κλήσεις στο /admin/realms/*/roles/*/users πριν και μετά το patch για ενδείξεις μη εξουσιοδοτημένης πρόσβασης.
Προληπτικά μέτρα και αντιμετώπιση αν δεν μπορείτε να αναβαθμίσετε άμεσα
Σε περιπτώσεις όπου η άμεση αναβάθμιση δεν είναι εφικτή λόγω διαδικαστικών ή συμβατικών περιορισμών, υπάρχουν μέτρα μετριασμού κινδύνου που μπορούν να μειώσουν την έκθεση: περιορισμός πρόσβασης στην Admin API μέσω δικτύου (firewall, VPN, IP allowlists), χρήση reverse proxy που φιλτράρει ή καταγράφει αιτήματα προς τα admin endpoints, και περιορισμός των δικαιωμάτων διαχειριστικών λογαριασμών στο ελάχιστο απαραίτητο.
Επιπλέον, συνιστάται η αλλαγή κωδικών πρόσβασης και η επανεξέταση των διαπιστευτηρίων λογαριασμών που είχαν δικαιώματα query-users και view-realm, καθώς και ενεργοποίηση αυξημένης καταγραφής (audit logging) για ελέγχους πρόσβασης σε κρίσιμα endpoints.
Τι σημαίνει αυτό για την ιδιωτικότητα και τη συμμόρφωση
Ακόμη κι αν το εύρος των δεδομένων δεν περιλαμβάνει πάντοτε ευαίσθητες κατηγορίες, η ανεπιθύμητη αποκομιδή ονομάτων και διευθύνσεων email μπορεί να θεωρηθεί παραβίαση προσωπικών δεδομένων με όλες τις συνέπειες. Οργανισμοί υπό τον GDPR ή άλλες ρυθμιστικές αρχές θα πρέπει να αξιολογήσουν το αν υπήρξε ανεπιθύμητη πρόσβαση και, εφόσον απαιτείται, να προβούν σε διαδικασίες κοινοποίησης παραβίασης.
Η περίπτωση αυτή δείχνει επίσης πόσο σημαντικό είναι να μην θεωρούμε τους «περιορισμένους» διαχειριστές ως απόλυτα ακίνδυνους. Οι λειτουργίες helpdesk, υποστήριξης ή εσωτερικής διαχείρισης μπορούν να γίνουν πόροι για συλλογή PII εάν ένα API δεν εφαρμόζει συνεπή, αντικειμενοεπίπεδη εξουσιοδότηση.
Τι αλλάζει στην πράξη
Για τους διαχειριστές συστημάτων, το πρώτο και απτό βήμα είναι η αναβάθμιση σε Keycloak 26.7.0 ή νεότερη. Για οργανισμούς με διαδικασίες change control, αυτό πρέπει να προγραμματιστεί ως υψηλής προτεραιότητας patch. Μετά την αναβάθμιση, η προσοχή πρέπει να στραφεί στην αναθεώρηση ρόλων, στην ενίσχυση των δικτύων που εκθέτουν admin endpoints και στην αναβάθμιση της πολιτικής audit.
Για τους τελικούς χρήστες, το πρακτικό αποτέλεσμα είναι ότι τα προσωπικά τους δεδομένα θα είναι ασφαλέστερα μόλις εφαρμοστεί η διόρθωση, αλλά αν υπάρχει υποψία ότι δεδομένα έχουν ανακτηθεί πριν το patch, οι οργανισμοί οφείλουν να αξιολογήσουν το ρίσκο αποκάλυψης και να ειδοποιήσουν κατά περίπτωση. Επιπλέον, χρήστες που λαμβάνουν ανεπιθύμητες στοχευμένες επικοινωνίες θα πρέπει να θεωρήσουν ότι μέρος των στοιχείων τους μπορεί να έχει γίνει αντικείμενο συλλογής.
Σε ευρύτερο επίπεδο, το περιστατικό υπενθυμίζει ότι συστήματα διαχείρισης ταυτοτήτων παίζουν κεντρικό ρόλο στην ασφάλεια μιας επιχείρησης και ότι ακόμη και «μικρά» λάθη σε κανόνες ορατότητας μπορούν να έχουν πρακτικές συνέπειες. Η συνεχής ανάλυση κώδικα, οι bug bounties και η συνεργασία με ανεξάρτητους ερευνητές είναι κρίσιμες πρακτικές για την πρόληψη τέτοιων καταστάσεων.