Αν λάβατε ένα email μου που παραπέμπει σε αυτή τη σελίδα, είναι επειδή ο ιστότοπός σας φαίνεται να χρησιμοποιεί μια έκδοση του Link Library (το πρόσθετο WordPress του Yannick Lefebvre, το οποίο βρίσκεται στα αρχεία σας στη διαδρομή /wp-content/plugins/link-library/) η οποία εμπίπτει στο επηρεαζόμενο εύρος ενός γνωστού ζητήματος ασφαλείας. Αυτή η σελίδα εξηγεί ποιο είναι το ζήτημα, πώς να ελέγξετε ποια έκδοση έχετε, πώς να ενημερώσετε και τι να κάνετε στη συνέχεια.

Το ζήτημα είναι η CVE-2026-16532, ένα κενό SQL injection χωρίς πιστοποίηση, προσβάσιμο μέσω της διαχείρισης υποβολής συνδέσμων του πρόσθετου. Επηρεάζει κάθε έκδοση πριν από την 7.9.3 και διορθώνεται στην 7.9.3. Η τρέχουσα έκδοση τη στιγμή που γράφονται αυτά είναι η 7.9.4, η οποία περιέχει επίσης τη διόρθωση. Αν χρησιμοποιείτε οτιδήποτε παλαιότερο από την 7.9.3, ενημερώστε το Link Library στην 7.9.3 ή νεότερη.

Ένα σημείο που πρέπει να είναι ξεκάθαρο: δεν υπάρχει παλαιότερη έκδοση που να είναι ασφαλής. Δεν πρόκειται για κενό που εισήχθη σε κάποιο σημείο της ιστορίας του πρόσθετου και έπειτα διορθώθηκε. Ο ευάλωτος κώδικας υπάρχει σε κάθε δημοσιευμένη έκδοση που μπόρεσα να ελέγξω, μέχρι και την παλαιότερη έκδοση που εξακολουθεί να διαθέτει ο κατάλογος του WordPress.org. Το «η εγκατάστασή μου είναι πολύ παλιά για να επηρεάζεται» δεν αποτελεί διέξοδο εδώ. Οι μόνες εκδόσεις που δεν επηρεάζονται είναι η 7.9.3 και οι νεότερες.

Εξίσου σημαντικό: αυτή η ειδοποίηση δεν εξαρτάται από τον τρόπο που είναι ρυθμισμένος ο ιστότοπός σας. Το Link Library περιλαμβάνει μια φόρμα που επιτρέπει στους επισκέπτες να προτείνουν συνδέσμους, και η φυσική υπόθεση είναι ότι ένας ιστότοπος είναι εκτεθειμένος μόνο αν έχει πράγματι τοποθετήσει αυτή τη φόρμα κάπου σε κάποια σελίδα. Αυτή η υπόθεση είναι λανθασμένη. Ο επηρεαζόμενος κώδικας εκτελείται σε κάθε συνηθισμένο αίτημα προς το μπροστινό μέρος του ιστότοπου, είτε έχετε δημοσιεύσει ποτέ τη φόρμα υποβολής είτε όχι, και οι εργοστασιακές ρυθμίσεις του πρόσθετου δεν τον εμποδίζουν. Αν ο ιστότοπός σας χρησιμοποιεί επηρεαζόμενη έκδοση, το ζήτημα είναι προσβάσιμο. Τελεία.

Πρόκειται για κενό πρόσθετου, όχι για κενό του πυρήνα του WordPress. Ένα πλήρως ενημερωμένο WordPress δεν σας προστατεύει αν το ίδιο το πρόσθετο Link Library βρίσκεται σε επηρεαζόμενη έκδοση.

Είναι γνήσιο αυτό το μήνυμα·

Ναι. Πρόκειται για καλόπιστη ειδοποίηση υπεύθυνης δημοσιοποίησης από ανεξάρτητο ερευνητή ασφαλείας. Δεν σας ζητώ χρήματα, κωδικούς ή πρόσβαση στον ιστότοπό σας, και δεν επιχείρησα να εισβάλω σε αυτόν, να του υποβάλω οτιδήποτε ή να εκμεταλλευτώ κάτι.

Το μόνο που έκανα ήταν να δω δημόσια ορατά αρχεία που ο ιστότοπός σας παρέχει σε κάθε επισκέπτη (όπως ακριβώς είναι δημόσια η αρχική σας σελίδα) και να σημειώσω τον αριθμό έκδοσης που δημοσιεύει το πρόσθετο. Συγκεκριμένα, δεν υπέβαλα τίποτε στη λειτουργία υποβολής συνδέσμων του πρόσθετου, ούτε στον δικό σας ιστότοπο ούτε σε οποιονδήποτε άλλον, και τίποτα σε αυτόν τον έλεγχο δεν αγγίζει τα δεδομένα σας, την περιοχή διαχείρισής σας ή οποιοδήποτε ιδιωτικό τμήμα του ιστότοπού σας (περισσότερα παρακάτω, στην ενότητα Τι έκανα και τι δεν έκανα).

Αν θέλετε να επαληθεύσετε ποιος είμαι, δείτε τα στοιχεία επικοινωνίας στο τέλος αυτής της σελίδας και τη σελίδα Σχετικά.

Γιατί έχει σημασία

Το Link Library δημιουργεί και εμφανίζει καταλόγους συνδέσμων στον ιστότοπό σας, και μπορεί να δέχεται προτάσεις συνδέσμων από επισκέπτες. Η διαχείριση των προτάσεων είναι το σημείο όπου βρίσκεται αυτό το ζήτημα.

Στις επηρεαζόμενες εκδόσεις, όταν το πρόσθετο επεξεργάζεται έναν σύνδεσμο που υποβλήθηκε, ο έλεγχός του για το αν ο σύνδεσμος αυτός υπάρχει ήδη κατασκευάζει ένα ερώτημα βάσης δεδομένων επικολλώντας τις υποβληθείσες τιμές απευθείας μέσα του. Οι τιμές καθαρίζονται για την εμφάνιση, αλλά δεν υφίστανται διαφυγή για χρήση σε SQL, και το ερώτημα εκτελείται χωρίς προετοιμασμένη δήλωση. Η συνέπεια είναι ότι ένας επισκέπτης που δεν έχει συνδεθεί μπορεί να αλλοιώσει αυτό το ερώτημα και να διαβάσει δεδομένα από τη βάση δεδομένων του ιστότοπού σας. Η έκδοση 7.9.3 ξαναγράφει το ερώτημα ώστε να χρησιμοποιεί προετοιμασμένη δήλωση, κάτι που κλείνει το ζήτημα.

Για να επαναλάβω το σημείο από την αρχή, γιατί είναι αυτό που πιθανότερα δίνει ψεύτικη ασφάλεια: η έκθεση δεν εξαρτάται από το αν η φόρμα υποβολής είναι δημοσιευμένη κάπου στον ιστότοπό σας. Η διαδρομή κώδικα που επεξεργάζεται τις υποβολές ακούει σε κάθε αίτημα προς το μπροστινό μέρος του ιστότοπου, και όλα όσα χρειάζεται ένα αίτημα για να τη φτάσει μπορούν να αντληθούν από το ίδιο το πρόσθετο, χωρίς να υπάρχει καμία φόρμα σε καμία σελίδα. Το αν ο ιστότοπός σας είναι εκτεθειμένος καταλήγει σε ένα και μόνο πράγμα: την έκδοση που χρησιμοποιείτε.

Αξίζει επίσης να είμαστε ακριβείς για το τι είναι και τι δεν είναι αυτό το ζήτημα. Επιτρέπει σε έναν επιτιθέμενο να διαβάσει δεδομένα από τη βάση δεδομένων. Αυτό από μόνο του είναι σοβαρό, καθώς μια βάση δεδομένων WordPress περιέχει πράγματα όπως διευθύνσεις email χρηστών και κωδικούς σε μορφή hash, και σε ορισμένους ιστότοπους εγγραφές πελατών ή μελών. Δεν είναι όμως, από μόνο του, απομακρυσμένη εκτέλεση κώδικα, κατάληψη του ιστότοπου ή τρόπος να αποκτήσει ένας επιτιθέμενος λογαριασμό διαχειριστή. Είναι στενότερο από τα ζητήματα πλήρους παραβίασης για τα οποία γράφω αλλού, και προτιμώ να θέσω το μέγεθός του με ειλικρίνεια παρά να σας αφήσω με μια πιο τρομακτική εντύπωση από όση στηρίζουν τα γεγονότα.

Περιγράφω το ζήτημα στο επίπεδο που χρειάζεται ένας ιδιοκτήτης ιστότοπου για να δράσει, και όχι περισσότερο. Δεν δημοσιεύω τις λεπτομέρειες που θα επέτρεπαν σε κάποιον να το αναπαραγάγει, και θα σας παρακαλούσα να μην το δοκιμάσετε στον δικό σας ιστότοπο ή σε οποιονδήποτε άλλον. Η ανάγνωση του αριθμού έκδοσής σας, όπως περιγράφεται παρακάτω, σας λέει όλα όσα χρειάζεστε για να αποφασίσετε τι θα κάνετε.

Αν το email μου ανέφερε αυτό το ζήτημα, σημαίνει ότι η έκδοση που δηλώνει ο ιστότοπός σας είναι παλαιότερη από την 7.9.3. Δεν έλεγξα αν ο συγκεκριμένος ιστότοπός σας είναι εκμεταλλεύσιμος: το μόνο που παρατήρησα ήταν η έκδοση.

Επηρεάζομαι·

Όλα καταλήγουν σε ένα ερώτημα: ποια έκδοση του Link Library χρησιμοποιείτε·

Από την περιοχή διαχείρισης του WordPress (έγκυρη πηγή):

  1. Συνδεθείτε στον πίνακα ελέγχου WordPress (συνήθως todomainsas.gr/wp-admin).
  2. Πηγαίνετε στα Πρόσθετα και μετά Εγκατεστημένα πρόσθετα.
  3. Βρείτε το Link Library, την καταχώριση της οποίας ο φάκελος είναι link-library, και σημειώστε την έκδοση που εμφανίζεται κάτω από το όνομά του.

Από το δημόσιο αρχείο περιγραφής (χωρίς σύνδεση): ανοίξτε στον περιηγητή τη διεύθυνση todomainsas.gr/wp-content/plugins/link-library/readme.txt. Η γραμμή Stable tag: κοντά στην αρχή είναι η έκδοση που δηλώνει η εγκατάστασή σας, και είναι το ίδιο δημόσιο αρχείο που διάβασα. Για αυτό το πρόσθετο επιβεβαίωσα ότι ταιριάζει με τον πραγματικό κώδικα κάθε πρόσφατης κυκλοφορίας, οπότε είναι αξιόπιστος έλεγχος.

Ένας έλεγχος που δεν λειτουργεί για αυτό το πρόσθετο, οπότε παρακαλώ μην τον εμπιστευτείτε. Αν έχετε συνηθίσει να διαβάζετε τις εκδόσεις των πρόσθετων από τον αριθμό ?ver= που συνοδεύει ένα script ή ένα φύλλο στυλ στον πηγαίο κώδικα της σελίδας σας, αυτό θα σας παραπλανήσει εδώ. Οι αριθμοί έκδοσης στις διευθύνσεις των αρχείων αυτού του πρόσθετου είναι οι παγωμένες εκδόσεις ενσωματωμένων βιβλιοθηκών τρίτων (τιμές όπως 4.0.1, 1.0.0 ή 1.3.9) ή η έκδοση του πυρήνα του WordPress. Καμία τους δεν είναι η έκδοση του πρόσθετου, και η σύγκριση οποιασδήποτε από αυτές με την 7.9.3 δεν έχει νόημα. Χρησιμοποιήστε την οθόνη διαχείρισης ή το readme.txt.

Μία ακόμη ειδική περίπτωση: ορισμένες πολύ παλιές εγκαταστάσεις εμφανίζουν Stable tag: trunk στο readme.txt τους. Αυτό δεν είναι καθόλου αριθμός έκδοσης. Αν το δείτε, χρησιμοποιήστε την οθόνη πρόσθετων της διαχείρισης και θεωρήστε την εγκατάσταση επηρεαζόμενη μέχρι η οθόνη να σας πει το αντίθετο, καθώς μια εγκατάσταση αρκετά παλιά ώστε να γράφει trunk είναι σίγουρα παλαιότερη από την 7.9.3.

Στη συνέχεια εφαρμόστε αυτόν τον κανόνα:

  • Οτιδήποτε παλαιότερο από την 7.9.3: επηρεάζεται. Ενημερώστε. Δεν υπάρχει όριο κάτω από το οποίο μια παλαιότερη έκδοση γίνεται ξανά ασφαλής.
  • 7.9.3 ή νεότερη: ήδη διορθωμένη. Και η 7.9.4, η τρέχουσα έκδοση, περιέχει τη διόρθωση.

Πώς να αναβαθμίσετε

Το πρόσθετο είναι δωρεάν, εξακολουθεί να δημοσιεύεται και συντηρείται ενεργά, οπότε η διόρθωση είναι μια συνηθισμένη ενημέρωση. Ο ασφαλέστερος δρόμος είναι να ενημερώσετε μέσα από το ίδιο το WordPress, αφού πρώτα πάρετε αντίγραφο ασφαλείας:

  1. Πάρτε αντίγραφο ασφαλείας του ιστότοπού σας (αρχεία και βάση δεδομένων) πριν κάνετε αλλαγές. Οι περισσότεροι πάροχοι φιλοξενίας προσφέρουν αντίγραφα με ένα κλικ, ή χρησιμοποιήστε ένα πρόσθετο αντιγράφων ασφαλείας για WordPress.
  2. Στην περιοχή διαχείρισης του WordPress, πηγαίνετε στον Πίνακα ελέγχου και μετά Ενημερώσεις, ή στα Πρόσθετα και μετά Εγκατεστημένα πρόσθετα. Αν εμφανίζεται ενημέρωση για το Link Library, εγκαταστήστε την από εκεί.
  3. Αν προτιμάτε τη γραμμή εντολών, το WP-CLI κάνει το ίδιο: wp plugin update link-library.
  4. Αν δεν εμφανίζεται ενημέρωση, μπορείτε να πάρετε την τελευταία έκδοση απευθείας από τη σελίδα του πρόσθετου στον κατάλογο του WordPress.org, Link Library, και να ενημερώσετε μέσω Πρόσθετα, μετά Προσθήκη νέου πρόσθετου, μετά Μεταφόρτωση πρόσθετου.
  5. Μετά την ενημέρωση, επιβεβαιώστε τον νέο αριθμό έκδοσης (7.9.3 ή νεότερη) με τα παραπάνω βήματα, και ελέγξτε ότι οι κατάλογοι συνδέσμων σας εξακολουθούν να εμφανίζονται και να λειτουργούν κανονικά.

Όσο βρίσκεστε εκεί, αξίζει να επιβεβαιώσετε ότι ο πυρήνας του WordPress και τα υπόλοιπα πρόσθετά σας είναι ενημερωμένα, καθώς η ίδια αρχή ισχύει για όλα τους.

Μετά την ενημέρωση

Η ενημέρωση στην 7.9.3 ή νεότερη κλείνει το ζήτημα: ο έλεγχος υποβολής εκτελείται πλέον ως προετοιμασμένη δήλωση, οπότε οι υποβληθείσες τιμές αντιμετωπίζονται ως δεδομένα και όχι ως μέρος του ερωτήματος.

Τι δεν μπορεί να κάνει η ενημέρωση, διατυπωμένο προσεκτικά. Η ενημέρωση σταματά την ανάγνωση οτιδήποτε από τη βάση δεδομένων σας στο μέλλον. Δεν μπορεί να αναιρέσει την ανάγνωση όσων ενδεχομένως διαβάστηκαν ήδη όσο ο ιστότοπος βρισκόταν σε επηρεαζόμενη έκδοση. Δεν έχω καμία ορατότητα στο αν αυτό συνέβη στον ιστότοπό σας, και δεν κοίταξα. Οι περισσότεροι ιστότοποι στο επηρεαζόμενο εύρος πιθανότατα δεν έχουν αγγιχθεί ποτέ. Επειδή όμως δεν μπορώ να σας το πω με βεβαιότητα, λίγη προφύλαξη είναι λογική, ανάλογα με το τι περιέχει η βάση δεδομένων σας:

  • Αν ο ιστότοπός σας είναι ένας απλός ιστότοπος δημοσιεύσεων, όπου η βάση δεδομένων περιέχει τα άρθρα σας, τις σελίδες σας και μια χούφτα λογαριασμούς χρηστών, το λογικό βήμα είναι να ζητήσετε από τους χρήστες σας (και ιδίως από τους διαχειριστές σας) να αλλάξουν τους κωδικούς τους. Το WordPress αποθηκεύει τους κωδικούς σε μορφή hash, όχι σε απλό κείμενο, αλλά τα hash αδύναμων κωδικών μπορούν να σπάσουν εκτός σύνδεσης, οπότε ένας φρέσκος κωδικός εξαλείφει αυτή την ανησυχία.
  • Αν ο ιστότοπός σας αποθηκεύει οτιδήποτε πιο ευαίσθητο (εγγραφές μελών, στοιχεία πελατών, κλειδιά API ή άλλα διαπιστευτήρια που κρατούν πρόσθετα), θεωρήστε ότι αξίζει να αλλάξουν και αυτά.
  • Η εκ νέου δημιουργία των μυστικών κλειδιών και των «salts» του WordPress στο wp-config.php (οι νέες τιμές απέχουν ένα κλικ από την επίσημη γεννήτρια κλειδιών) αποσυνδέει μία φορά όλους τους χρήστες και ακυρώνει τυχόν κλεμμένα διακριτικά συνεδρίας.

Για να είμαστε σαφείς ως προς το πλαίσιο: πρόκειται για προφύλαξη, όχι για δήλωση ότι τα δεδομένα σας υποκλάπηκαν. Αυτή η ειδοποίηση βασίζεται σε έναν αριθμό έκδοσης, όχι σε κάποια ένδειξη επίθεσης.

Τι έκανα και τι δεν έκανα

Για πλήρη διαφάνεια σχετικά με τον έλεγχο πίσω από το email μου: διάβασα μόνο δημόσια αρχεία που ο ιστότοπός σας παρέχει ήδη σε κάθε επισκέπτη, συγκεκριμένα το δημόσιο αρχείο readme.txt του πρόσθετου και την αρχική σας σελίδα. Δεν απέκτησα πρόσβαση στην περιοχή διαχείρισης WordPress, στη βάση δεδομένων ή σε οποιοδήποτε ιδιωτικό τμήμα του ιστότοπου.

Ειδικότερα, δεν υπέβαλα ποτέ τίποτε στη λειτουργία υποβολής συνδέσμων του πρόσθετου, ούτε στον δικό σας ιστότοπο ούτε οπουδήποτε αλλού. Τίποτα δεν υποβλήθηκε, δεν αποθηκεύτηκε, δεν δοκιμάστηκε και δεν αξιοποιήθηκε. Αυτό έχει μεγαλύτερη σημασία εδώ από ό,τι στις περισσότερες από αυτές τις σελίδες, επειδή η διαχείριση των υποβολών είναι ακριβώς αυτό που αφορά το ζήτημα, οπότε το «δεν την άγγιξα» είναι όλη η διαφορά ανάμεσα σε μια γνωστοποίηση και μια εισβολή.

Επίσης δεν δημοσιεύω σκόπιμα τις λεπτομέρειες που θα βοηθούσαν κάποιον να δράσει πάνω σε αυτό το ζήτημα. Η παραπάνω περιγραφή σταματά στο επίπεδο που χρειάζεται ένας ιδιοκτήτης ιστότοπου, και δεν παραπέμπω σε κανέναν κώδικα απόδειξης εκμετάλλευσης.

Πρόκειται για παρατήρηση βασισμένη στην έκδοση: ο ιστότοπός σας δηλώνει έκδοση παλαιότερη από την 7.9.3. Ένας ιστότοπος σε αυτό το εύρος μπορεί να προστατεύεται ήδη με άλλα μέσα, όπως ένα τείχος προστασίας εφαρμογών ιστού ή μια διόρθωση που έχει μεταφερθεί πίσω. Αυτή η ειδοποίηση δεν αποτελεί δήλωση ότι ο ιστότοπός σας ήταν εκμεταλλεύσιμος τη στιγμή που έκανα τον έλεγχο.

Δεν έχω webmaster / έχω κολλήσει

Αν δεν συντηρείτε εσείς τον ιστότοπο, προωθήστε αυτή τη σελίδα σε όποιον τον συντηρεί (τον προγραμματιστή σας, την εταιρεία σας ή τον πάροχο φιλοξενίας). Θα αναγνωρίσουν γρήγορα τα παραπάνω βήματα.

Αν συντηρείτε τον ιστότοπο μόνοι σας και κολλήσετε, ευχαρίστως να σας κατευθύνω χωρίς κόστος. Επικοινωνήστε με τα στοιχεία παρακάτω.

Επικοινωνία

Evan Harris, ερευνητής ασφαλείας

Επικοινωνώ για ζητήματα σαν αυτό αποκλειστικά για να βοηθήσω τους διαχειριστές να ασφαλίσουν τους ιστότοπούς τους. Αν προτιμάτε να μην ξαναέρθω σε επαφή, απλώς ενημερώστε με και θα το σεβαστώ.

Αναφορές

Επίσημες ανακοινώσεις και παρακολούθηση

Κατασκευαστής / πρόσθετο