Πόσο εύκολα μπορεί να παρακαμφθεί μια σύνδεση μέσω Facebook όταν ένα έγκυρο διακριτικό επαναχρησιμοποιείται; Η Laravel Socialite περιείχε ένα κρίσιμο κενό στον έλεγχο του nonce για τα OIDC διακριτικά του Facebook, επιτρέποντας σε επιτιθέμενους χωρίς πιστοποίηση να επιχειρήσουν πρόσβαση σε λογαριασμούς χρηστών.

Η ευπάθεια καταγράφεται ως CVE-2026-73683 και αφορά το πακέτο Socialite της Laravel, μια βιβλιοθήκη που χρησιμοποιείται για σύνδεση εφαρμογών με υπηρεσίες όπως το Facebook, το GitHub και η Google. Σύμφωνα με το NVD, επηρεάζονται οι εκδόσεις πριν από την 5.29.0.
Δείτε επίσης: Πρόσθετα BdThemes: Επίθεση εφοδιαστικής αλυσίδας δημιουργεί κρυφούς διαχειριστές
Τι αλλάζει στην ασφάλεια του Laravel Socialite
Το ζήτημα εντοπίζεται στον πάροχο Facebook της Laravel Socialite, ειδικά στη συνάρτηση getUserByOIDCToken() του αρχείου FacebookProvider.php. Η συνάρτηση αποκωδικοποιεί ένα OIDC id_token και ελέγχει την υπογραφή, το κοινό για το οποίο εκδόθηκε το διακριτικό και τον εκδότη του. Μέχρι την αλλαγή του κώδικα, όμως, δεν συνέδεε το nonce του διακριτικού με το nonce της συγκεκριμένης συνεδρίας.
Το nonce είναι μια μοναδική τιμή που πρέπει να αντιστοιχεί στη διαδικασία σύνδεσης που ξεκίνησε ο χρήστης. Χωρίς αυτή τη σύγκριση, ένας επιτιθέμενος που θα αποκτούσε έγκυρο και μη ληγμένο OIDC διακριτικό, εκδομένο για το ίδιο αναγνωριστικό εφαρμογής στο Facebook, θα μπορούσε να το υποβάλει ξανά στο backend μέσω της μεθόδου userFromToken(). Το σενάριο δεν απαιτεί λογαριασμό επιτιθέμενου, αλλά προϋποθέτει απόκτηση κατάλληλου διακριτικού.
Η καταγραφή του CVE Alert περιγράφει το αποτέλεσμα ως παράκαμψη ελέγχου ταυτότητας και μη εξουσιοδοτημένη πρόσβαση σε λογαριασμούς θυμάτων. Η αξιολόγηση CVSS 3.1 είναι 8.1, με υψηλή επίπτωση στην εμπιστευτικότητα και την ακεραιότητα. Η NVD κατατάσσει το ζήτημα στο CWE-294, δηλαδή στην παράκαμψη ταυτότητας μέσω επανάληψης καταγεγραμμένου διακριτικού.
Η υψηλή βαθμολογία δεν σημαίνει ότι κάθε εγκατάσταση είναι αυτομάτως εκτεθειμένη. Η επίθεση χρειάζεται πρόσβαση σε διακριτικό που εκδόθηκε για το ίδιο App ID, ενώ η αξιολόγηση της NVD αποδίδει υψηλή πολυπλοκότητα επίθεσης. Παρ’ όλα αυτά, η επανάχρηση ενός διακριτικού μπορεί να έχει σοβαρές συνέπειες όταν η εφαρμογή χρησιμοποιεί το Facebook ως πύλη εισόδου σε ευαίσθητες υπηρεσίες.
Η διόρθωση έχει ιδιαίτερη σημασία για εφαρμογές που δέχονται OIDC διακριτικά από κινητές εφαρμογές ή από διασυνδέσεις χωρίς παραδοσιακές συνεδρίες cookies. Σε τέτοια περιβάλλοντα, οι προγραμματιστές δεν πρέπει να θεωρούν ότι η απουσία συνεδρίας καταργεί την ανάγκη για αντιστοίχιση nonce. Η τιμή πρέπει να παράγεται, να αποθηκεύεται με ασφαλή τρόπο και να ελέγχεται πριν δημιουργηθεί η συνεδρία του χρήστη.

Η διόρθωση στο Facebook OIDC
Η ομάδα του Laravel συγχώνευσε το αίτημα αλλαγής #789 και το commit caf714f. Η αλλαγή προσθέτει αναμενόμενη τιμή nonce στον πάροχο Facebook και απορρίπτει το διακριτικό όταν η τιμή λείπει ή δεν ταιριάζει με εκείνη που περίμενε η εφαρμογή.
Στον διορθωμένο κώδικα, το Socialite απαιτεί να υπάρχει nonce στο OIDC διακριτικό και χρησιμοποιεί ασφαλή σύγκριση με την αναμενόμενη τιμή. Παράλληλα, διατηρεί τους ελέγχους για το aud και το iss. Η τρέχουσα υλοποίηση του FacebookProvider δείχνει πλέον ρητά τον έλεγχο αυτό.
Οι διαχειριστές εφαρμογών που χρησιμοποιούν Facebook Limited Login πρέπει να ελέγξουν τις εξαρτήσεις Composer και να αναβαθμίσουν σε έκδοση που περιλαμβάνει τη διόρθωση. Η επίσημη τεκμηρίωση της Laravel εξηγεί ότι το Facebook Limited Login επιστρέφει OIDC διακριτικό και ότι αυτό μπορεί να περάσει στη μέθοδο userFromToken(), άρα η συγκεκριμένη ροή χρειάζεται ιδιαίτερη προσοχή.

Δείτε επίσης: Hotel Wi-Fi DNS poisoning: Πώς οι hackers κλέβουν λογαριασμούς Microsoft 365
Τι πρέπει να ελέγξουν οι ομάδες ανάπτυξης
Η αναβάθμιση του πακέτου είναι το πρώτο βήμα, όμως χρειάζεται και έλεγχος της ροής σύνδεσης. Οι ομάδες πρέπει να επιβεβαιώσουν ότι το nonce δημιουργείται ανά συνεδρία, μεταφέρεται στην επιστροφή του Facebook και δεν παρακάμπτεται όταν η εφαρμογή λειτουργεί χωρίς συνεδρίες που βασίζονται σε cookies. Η χρήση της λειτουργίας stateless() απαιτεί ξεχωριστή αξιολόγηση, επειδή απενεργοποιεί την επαλήθευση κατάστασης συνεδρίας.
Καλό είναι επίσης να ελεγχθούν τα αρχεία καταγραφής για ασυνήθιστες επαναλήψεις διακριτικών, αποτυχημένες προσπάθειες nonce και συνδέσεις που δεν αντιστοιχούν σε πρόσφατη έναρξη διαδικασίας. Δεν υπάρχει ένδειξη στην καταγραφή του CVE ότι η ευπάθεια αξιοποιείται ενεργά, επομένως η άμεση αναβάθμιση λειτουργεί προληπτικά και περιορίζει το παράθυρο έκθεσης.
🔒 Προστατέψτε την ιδιωτικότητά σας με Proton VPN
Ελβετικό VPN από τους δημιουργούς του Proton Mail — αυστηρή πολιτική no-logs, ισχυρή κρυπτογράφηση και ενσωματωμένο NetShield που μπλοκάρει διαφημίσεις, trackers & malware.
- ✔ No-logs, με έδρα την Ελβετία (εκτός 14-Eyes)
- ✔ NetShield: φραγή διαφημίσεων, trackers & κακόβουλων domains
- ✔ Καλύπτει όλες τις συσκευές — δωρεάν έκδοση διαθέσιμη
Ο σύνδεσμος είναι συνεργατικός (affiliate) — το SecNews ενδέχεται να λάβει προμήθεια χωρίς επιπλέον κόστος για εσάς. Δεν επηρεάζει την ανεξαρτησία της αρθρογραφίας μας.

Δείτε επίσης: CVE-2026-8508: Το Zyxel WAX650S εκθέτει το captive portal σε παράκαμψη
Το βασικό συμπέρασμα για κάθε εφαρμογή που χρησιμοποιεί Facebook OIDC είναι σαφές: ένα έγκυρο διακριτικό δεν αρκεί από μόνο του για ασφαλή σύνδεση. Η αντιστοίχιση nonce, η ενημερωμένη έκδοση της Laravel Socialite και ο έλεγχος των ροών userFromToken() πρέπει να αντιμετωπίζονται ως ενιαίο μέτρο προστασίας.
