Ειδοποίηση ασφαλείας Bookly
Αν λάβατε ένα email μου που παραπέμπει σε αυτή τη σελίδα, είναι επειδή ο ιστότοπός σας φαίνεται
να χρησιμοποιεί μια έκδοση του Bookly (το πρόσθετο WordPress για κρατήσεις ραντεβού
bookly-responsive-appointment-booking-tool) που εμπίπτει στο εύρος που επηρεάζεται από ένα
γνωστό ζήτημα ασφαλείας. Αυτή η σελίδα εξηγεί περί τίνος πρόκειται, πώς να ελέγξετε την έκδοσή
σας, πώς να αναβαθμίσετε και ποιο είναι το ένα επόμενο βήμα που αξίζει να κάνετε.
Πρόκειται για το CVE-2026-13395, μια SQL injection χωρίς πιστοποίηση ταυτότητας στη ροή κρατήσεων του πρόσθετου προς το κοινό. Επηρεάζονται οι εκδόσεις 11.3 έως 27.7 και έχει διορθωθεί στην 27.8, που κυκλοφόρησε στις 10 Ιουλίου 2026. Αν χρησιμοποιείτε επηρεαζόμενη έκδοση, αναβαθμίστε το Bookly στην 27.8 ή νεότερη (η 27.9 είναι η τρέχουσα έκδοση και περιέχει επίσης τη διόρθωση). Δεν υπάρχει καμία ένδειξη ότι το ζήτημα αξιοποιείται εναντίον οποιουδήποτε ιστότοπου, ούτε δημόσια αναφορά αξιοποίησης οπουδήποτε: αυτή η σελίδα είναι προληπτική ενημέρωση, όχι αναφορά περιστατικού.
Σε αντίθεση με ορισμένες άλλες ειδοποιήσεις μου, αυτή δεν εξαρτάται από τη διαμόρφωση του ιστότοπού σας. Δεν χρειάζεται να είναι ενεργοποιημένη καμία ρύθμιση για να είναι προσβάσιμο το σφάλμα: η επηρεαζόμενη διαδρομή αιτήματος είναι ανοιχτή σε επισκέπτες χωρίς σύνδεση, σε μια συνηθισμένη εγκατάσταση. Αν η έκδοση του Bookly σας βρίσκεται στο επηρεαζόμενο εύρος, η αναβάθμιση αξίζει να γίνει σύντομα.
Πρόκειται για σφάλμα του πρόσθετου, όχι του πυρήνα του WordPress. Ένα πλήρως ενημερωμένο WordPress δεν σας προστατεύει αν το ίδιο το πρόσθετο Bookly βρίσκεται σε επηρεαζόμενη έκδοση.
Είναι γνήσιο αυτό το μήνυμα·
Ναι. Πρόκειται για καλόπιστη ειδοποίηση υπεύθυνης δημοσιοποίησης από ανεξάρτητο ερευνητή ασφαλείας. Δεν σας ζητώ χρήματα, κωδικούς ή πρόσβαση στον ιστότοπό σας, και δεν επιχείρησα να εισβάλω σε αυτόν, να του υποβάλω οτιδήποτε ή να εκμεταλλευτώ κάτι.
Το μόνο που έκανα ήταν να δω δημόσια αρχεία που ο ιστότοπός σας παρέχει σε κάθε επισκέπτη (όπως ακριβώς είναι δημόσια η αρχική σας σελίδα) και να σημειώσω τον αριθμό έκδοσης που δημοσιεύει το πρόσθετο Bookly. Συγκεκριμένα, δεν έστειλα τίποτα στη φόρμα κρατήσεών σας ούτε στη διαδρομή αιτήματος που αφορά το ζήτημα, και αυτός ο έλεγχος δεν αγγίζει τα δεδομένα σας, την περιοχή διαχείρισης ή οποιοδήποτε ιδιωτικό τμήμα του ιστότοπου (περισσότερα στην ενότητα Τι έκανα και τι δεν έκανα).
Αν θέλετε να επαληθεύσετε ποιος είμαι, δείτε τα στοιχεία επικοινωνίας στο τέλος αυτής της σελίδας και τη σελίδα Σχετικά.
Γιατί έχει σημασία
Το Bookly είναι ένα από τα πιο διαδεδομένα πρόσθετα κρατήσεων ραντεβού για το WordPress: βρίσκεται στον επίσημο κατάλογο από το 2014 και λειτουργεί σε δεκάδες χιλιάδες ιστότοπους. Δημοσιεύει μια φόρμα κρατήσεων στο δημόσιο τμήμα του ιστότοπού σας, ώστε οι επισκέπτες να επιλέγουν υπηρεσία, μέλος προσωπικού και χρονική θυρίδα χωρίς να χρειάζονται λογαριασμό.
Στις επηρεαζόμενες εκδόσεις, μία από τις τιμές που επιστρέφει αυτή η φόρμα, το αναγνωριστικό του μέλους προσωπικού που επέλεξε ο επισκέπτης, αποθηκεύεται ακριβώς όπως φτάνει, χωρίς έλεγχο, και αργότερα τοποθετείται απευθείας μέσα σε ένα ερώτημα βάσης δεδομένων αντί να περαστεί ως παράμετρος. Όποιος στείλει μια κατασκευασμένη τιμή αντί για ένα συνηθισμένο αναγνωριστικό μπορεί έτσι να αλλάξει το νόημα εκείνου του ερωτήματος. Πρακτικά: κάποιος χωρίς λογαριασμό και χωρίς σύνδεση θα μπορούσε να διαβάσει από τη βάση δεδομένων του ιστότοπού σας δεδομένα που το ερώτημα δεν επρόκειτο ποτέ να επιστρέψει, συμπεριλαμβανομένων των κρυπτογραφικών αποτυπωμάτων (hashes) των κωδικών των λογαριασμών σας WordPress.
Δύο πράγματα αξίζει να ειπωθούν καθαρά, και προς τις δύο κατευθύνσεις.
Πρώτον, για το μέτρο: πρόκειται για ζήτημα ανάγνωσης δεδομένων, όχι για κατάληψη του διακομιστή ή του λογαριασμού διαχειριστή. Από μόνο του δεν επιτρέπει την εκτέλεση κώδικα στον διακομιστή σας ούτε τη σύνδεση στην περιοχή διαχείρισης. Ένα hash δεν είναι κωδικός· πρέπει πρώτα να σπάσει για να μετατραπεί σε πρόσβαση. Και δεν υπάρχουν ενδείξεις αξιοποίησης: η αρχή που εκχώρησε το CVE δεν δημοσίευσε βαθμολογία σοβαρότητας, δεν περιλαμβάνεται στον κατάλογο KEV της αμερικανικής CISA, η βαθμολογία πιθανότητας αξιοποίησης (EPSS) δεν έχει αποδοθεί και δεν γνωρίζω καμία αναφορά αξιοποίησης.
Δεύτερον, χωρίς υποβάθμιση: ούτε σύνδεση, ούτε nonce, ούτε κάποια ρύθμιση του πρόσθετου παρεμβάλλεται ανάμεσα σε έναν ανώνυμο επισκέπτη και αυτή τη διαδρομή. Είναι προσβάσιμη σε μια προεπιλεγμένη εγκατάσταση του δωρεάν πρόσθετου. Γι’ αυτό η σύσταση είναι να αναβαθμίσετε σύντομα και όχι να το εντάξετε στο επόμενο παράθυρο συντήρησης.
Αν το email μου ανέφερε αυτό το ζήτημα, σημαίνει ότι η έκδοση που δηλώνει ο ιστότοπός σας εμπίπτει στο επηρεαζόμενο εύρος. Δεν έλεγξα αν ο συγκεκριμένος ιστότοπός σας είναι εκμεταλλεύσιμος· το μόνο που παρατήρησα ήταν η έκδοση.
Επηρεάζομαι·
Όλα καταλήγουν σε ένα ερώτημα: ποια έκδοση του Bookly χρησιμοποιείτε· Δεν χρειάζεται να με πιστέψετε· υπάρχουν δύο τρόποι ελέγχου.
Από την περιοχή διαχείρισης του WordPress (έγκυρη πηγή):
- Συνδεθείτε στον πίνακα ελέγχου WordPress (συνήθως
todomainsas.gr/wp-admin). - Πηγαίνετε στα Πρόσθετα και μετά Εγκατεστημένα πρόσθετα.
- Βρείτε το Bookly, την καταχώριση της οποίας ο φάκελος είναι
bookly-responsive-appointment-booking-tool, και σημειώστε την έκδοση που εμφανίζεται κάτω από το όνομά του.
Από το δημόσιο αρχείο περιγραφής (χωρίς σύνδεση): ανοίξτε στον περιηγητή τη διεύθυνση
todomainsas.gr/wp-content/plugins/bookly-responsive-appointment-booking-tool/readme.txt. Η
γραμμή Stable tag: κοντά στην αρχή είναι η έκδοση που δηλώνει η εγκατάστασή σας· και
είναι το ίδιο δημόσιο αρχείο που διάβασα.
Στη συνέχεια εφαρμόστε αυτόν τον κανόνα, έχοντας υπόψη ότι οι εκδόσεις συγκρίνονται αριθμητικά, όχι αλφαβητικά:
- 11.3 έως 27.7: επηρεάζεται. Αναβαθμίστε τώρα.
- 27.8 ή νεότερη: ήδη διορθωμένη. Περιλαμβάνει την 27.9, που διατηρεί τη διόρθωση.
- Παλαιότερη από 11.3: δεν επηρεάζεται από αυτό το ζήτημα. Η επισφαλής κατασκευή του ερωτήματος δεν υπήρχε σε εκείνες τις εκδόσεις: τα αναγνωριστικά προσωπικού περνούσαν από τον μηχανισμό παραμετροποιημένων ερωτημάτων του πρόσθετου. Μια τόσο παλιά έκδοση έχει πολλούς άλλους λόγους να ενημερωθεί, αλλά αυτή η ειδοποίηση δεν είναι ένας από αυτούς.
- Μη διαβάζετε τους αριθμούς έκδοσης ως κείμενο. Το Bookly έχει διψήφιο κύριο αριθμό έκδοσης,
οπότε η αλφαβητική σειρά σφάλλει δύο φορές: το
3.3μοιάζει μεγαλύτερο από το27.8ενώ είναι πολύ παλαιότερο, και το27.10μοιάζει μικρότερο από το27.7ενώ είναι νεότερο. Συγκρίνετε αριθμό προς αριθμό.
Μια σημείωση για τα πρόσθετα επεκτάσεων του Bookly. Οι επί πληρωμή επεκτάσεις του Bookly
(Pro και τα διάφορα πακέτα bookly-addon-*) εγκαθίστανται ως ξεχωριστά πρόσθετα με δικούς
τους αριθμούς έκδοσης, και οι διευθύνσεις των αρχείων τους μπορεί να φέρουν την έκδοση του
κύριου πρόσθετου αντί της δικής τους. Η έκδοση που μετράει για αυτή την ειδοποίηση είναι εκείνη
του κύριου πρόσθετου Bookly, από οποιονδήποτε από τους δύο παραπάνω ελέγχους, όχι ένας
αριθμός που διαβάστηκε από τα αρχεία μιας επέκτασης.
Αν δεν βλέπετε κανένα αρχείο Bookly από έξω. Το Bookly διαθέτει μια ρύθμιση που καθορίζει αν τα scripts και τα στυλ του φορτώνονται σε κάθε σελίδα ή μόνο σε όσες φέρουν φόρμα κρατήσεων. Αν η δική σας είναι στη δεύτερη επιλογή, πολύ λιγότερα από το πρόσθετο είναι ορατά προς τα έξω. Αυτή η ρύθμιση επηρεάζει μόνο το τι μπορεί να δει ένας επισκέπτης· δεν έχει καμία σχέση με το αν το σφάλμα υπάρχει και είναι προσβάσιμο. Ελέγξτε την έκδοσή σας από την περιοχή διαχείρισης.
Πώς να αναβαθμίσετε
Ο ασφαλέστερος δρόμος είναι μέσα από το ίδιο το WordPress, αφού πρώτα πάρετε αντίγραφο ασφαλείας:
- Πάρτε αντίγραφο ασφαλείας (αρχεία και βάση δεδομένων) πριν κάνετε αλλαγές. Οι περισσότεροι πάροχοι φιλοξενίας προσφέρουν αντίγραφα με ένα κλικ, ή χρησιμοποιήστε ένα πρόσθετο αντιγράφων.
- Στη διαχείριση του WordPress, πηγαίνετε στον Πίνακα ελέγχου και μετά Ενημερώσεις, ή στα Πρόσθετα και μετά Εγκατεστημένα πρόσθετα. Αν εμφανίζεται ενημέρωση του Bookly, εγκαταστήστε την από εκεί.
- Αν προτιμάτε τη γραμμή εντολών, το WP-CLI κάνει το ίδιο:
wp plugin update bookly-responsive-appointment-booking-tool. - Αν δεν εμφανίζεται ενημέρωση, μπορείτε να πάρετε την τελευταία έκδοση απευθείας από τη σελίδα του πρόσθετου στον κατάλογο του WordPress.org, Bookly, και να ενημερώσετε μέσω Πρόσθετα, Προσθήκη νέου πρόσθετου, Μεταφόρτωση πρόσθετου.
- Μετά την ενημέρωση, επιβεβαιώστε τον νέο αριθμό έκδοσης (27.8 ή νεότερη) με τα παραπάνω βήματα και ελέγξτε ότι η φόρμα κρατήσεων και τα υπάρχοντα ραντεβού λειτουργούν κανονικά.
Αν χρησιμοποιείτε τις επί πληρωμή επεκτάσεις του Bookly, ενημερώστε τις μαζί με το κύριο πρόσθετο, καθώς οι κυκλοφορίες τους συνήθως συμβαδίζουν.
Με την ευκαιρία, αξίζει να επιβεβαιώσετε ότι ο πυρήνας του WordPress και τα υπόλοιπα πρόσθετά σας είναι ενημερωμένα, καθώς η ίδια αρχή ισχύει για όλα.
Μετά την ενημέρωση
Η αναβάθμιση στην 27.8 ή νεότερη κλείνει το ζήτημα, και δεν υπάρχει καμία ένδειξη ότι το σφάλμα αξιοποιήθηκε κάπου, οπότε δεν υπονοείται καμία αντίδραση έκτακτης ανάγκης: δεν χρειάζεται να θεωρήσετε τον ιστότοπό σας παραβιασμένο ούτε να τον θέσετε εκτός λειτουργίας.
Ένα επόμενο βήμα αξίζει ωστόσο να γίνει πραγματικά, και προκύπτει άμεσα από το τι μπορούσε να φτάσει αυτό το σφάλμα. Επειδή τα hashes των κωδικών του WordPress ήταν ανάμεσα στα δεδομένα που μπορούσε να επιστρέψει το ερώτημα, και επειδή ένα hash που αποκτήθηκε νωρίτερα παραμένει χρήσιμο σε έναν επιτιθέμενο και μετά την ενημέρωσή σας, η λογική προφύλαξη είναι να επαναφέρετε τους κωδικούς των λογαριασμών διαχειριστή μόλις εφαρμοστεί η ενημέρωση. Δύο μικρότερα βήματα ταιριάζουν φυσικά με αυτό:
- Ρίξτε μια ματιά στους λογαριασμούς διαχειριστή και συντάκτη για τυχόν άγνωστους, όπως θα ελέγχατε συνήθως τις προσβάσεις στον ιστότοπο.
- Δημιουργήστε ξανά τα μυστικά κλειδιά και τα «salts» του WordPress στο
wp-config.php(οι νέες τιμές απέχουν ένα κλικ από την επίσημη γεννήτρια κλειδιών· η αντικατάστασή τους αποσυνδέει όλους τους χρήστες μία φορά).
Αντιμετωπίστε το ως συνήθη συντήρηση ασφαλείας, όχι ως διαχείριση περιστατικού.
Τι έκανα και τι δεν έκανα
Για πλήρη διαφάνεια σχετικά με τον έλεγχο πίσω από το email μου: διάβασα μόνο δημόσια αρχεία που
ο ιστότοπός σας παρέχει ήδη σε κάθε επισκέπτη, συγκεκριμένα το δημόσιο αρχείο readme.txt του
πρόσθετου Bookly και την αρχική σας σελίδα. Δεν απέκτησα πρόσβαση στην περιοχή διαχείρισης
WordPress, στη βάση δεδομένων ή σε οποιοδήποτε ιδιωτικό τμήμα του ιστότοπου.
Ειδικότερα, δεν έστειλα ποτέ τίποτα στη φόρμα κρατήσεών σας ούτε στη διαδρομή αιτήματος που αφορά το ζήτημα· τίποτα δεν υποβλήθηκε, δεν δοκιμάστηκε και δεν αξιοποιήθηκε. Εδώ αυτό βαραίνει περισσότερο απ’ ό,τι στις περισσότερες από αυτές τις σελίδες: το σφάλμα είναι ένα αίτημα χωρίς πιστοποίηση προς εκείνη τη διαδρομή, οπότε το «δεν την άγγιξα» είναι όλη η διαφορά ανάμεσα σε μια δημοσιοποίηση και μια εισβολή.
Πρόκειται για παρατήρηση βασισμένη στην έκδοση: ο ιστότοπός σας δηλώνει έκδοση εντός του επηρεαζόμενου εύρους. Ένας ιστότοπος σε αυτό το εύρος μπορεί ήδη να προστατεύεται με άλλα μέσα, όπως ένα τείχος προστασίας εφαρμογών ιστού ή μια διόρθωση που μεταφέρθηκε πίσω. Αυτή η ειδοποίηση δεν δηλώνει ότι ο ιστότοπός σας ήταν εκμεταλλεύσιμος τη στιγμή του ελέγχου.
Δεν έχω webmaster / έχω κολλήσει
Αν δεν συντηρείτε εσείς τον ιστότοπο, προωθήστε αυτή τη σελίδα σε όποιον τον συντηρεί (τον προγραμματιστή σας, την εταιρεία σας ή τον πάροχο φιλοξενίας). Θα αναγνωρίσουν αμέσως τα παραπάνω βήματα.
Αν συντηρείτε τον ιστότοπο μόνοι σας και κολλήσετε, ευχαρίστως να σας κατευθύνω χωρίς κόστος. Επικοινωνήστε με τα στοιχεία παρακάτω.
Επικοινωνία
Evan Harris, ερευνητής ασφαλείας
- Email: security@mail.mcpsec.dev
- X: @Evan__Harris
- GitHub: eharris128
- LinkedIn: Evan Harris
Επικοινωνώ για ζητήματα σαν αυτό αποκλειστικά για να βοηθήσω τους διαχειριστές να ασφαλίσουν τους ιστότοπούς τους. Αν προτιμάτε να μην ξαναέρθω σε επαφή, απλώς ενημερώστε με και θα το σεβαστώ.
Αναφορές
Επίσημες ανακοινώσεις και παρακολούθηση
Κατασκευαστής / πρόσθετο