Αν λάβατε ένα email από εμένα που σας παρέπεμψε σε αυτή τη σελίδα, είναι επειδή ο ιστότοπός σας φαίνεται να εκτελεί μια έκδοση του Welcart e-Commerce (του δωρεάν προσθέτου ηλεκτρονικού εμπορίου για WordPress από την Welcart / Collne, που βρίσκεται στα αρχεία σας στο /wp-content/plugins/usc-e-shop/) που εμπίπτει στο επηρεαζόμενο εύρος ενός γνωστού ζητήματος ασφαλείας. Αυτή η σελίδα εξηγεί ποιο είναι το ζήτημα, πόσο σημαντικό είναι για τον ιστότοπό σας, πώς να διαβάσετε την έκδοσή σας χωρίς να παραπλανηθείτε και πώς να ενημερώσετε.

Το ζήτημα είναι το CVE-2026-19914, ένα μη πιστοποιημένο αποθηκευμένο σφάλμα cross-site scripting (XSS). Επηρεάζει κάθε κυκλοφορία έως και την 2.12.1 και διορθώθηκε στην 2.12.2, που κυκλοφόρησε στις 31 Αυγούστου 2026. Αν εκτελείτε την 2.12.1 ή παλαιότερη, ενημερώστε το Welcart στην 2.12.2 ή νεότερη. Το ζήτημα βαθμολογείται ως CVSS 7.2 (High), σύμφωνα με τη Wordfence. Δεν γνωρίζω κανέναν δημόσιο κώδικα εκμετάλλευσης γι’ αυτό.

Δεν υπάρχει παλαιότερη έκδοση που να είναι ασφαλής. Δεν πρόκειται για σφάλμα που εισήχθη κάπου στην πορεία της ιστορίας του προσθέτου και διορθώθηκε αργότερα. Η απόδοση χωρίς διαφυγή χαρακτήρων που βρίσκεται πίσω από αυτό το ζήτημα υπήρχε καθ’ όλη την ιστορία του προσθέτου - επιβεβαίωσα ότι υπάρχει ήδη από την έκδοση 1.7.0 - οπότε το «η εγκατάστασή μου είναι πολύ παλιά για να επηρεάζεται» δεν αποτελεί διέξοδο εδώ. Οι μόνες εκδόσεις που δεν επηρεάζονται είναι η 2.12.2 και νεότερες.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Καταλήγει σε ένα ερώτημα: Ποια έκδοση του Welcart εκτελείτε;

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

  1. Συνδεθείτε στον πίνακα ελέγχου του WordPress σας (συνήθως στο yourdomain.com/wp-admin).
  2. Μεταβείτε στα Πρόσθετα και μετά Εγκατεστημένα πρόσθετα.
  3. Βρείτε το Welcart e-Commerce, την καταχώριση της οποίας ο φάκελος είναι usc-e-shop, και σημειώστε την έκδοση που εμφανίζεται κάτω από το όνομά του.

Από το δημόσιο manifest (χωρίς σύνδεση): ανοίξτε

yourdomain.com/wp-content/plugins/usc-e-shop/readme.txt

σε ένα πρόγραμμα περιήγησης και διαβάστε τη γραμμή Stable tag: κοντά στην αρχή. Αν αυτή η διεύθυνση επιστρέψει «δεν βρέθηκε», δοκιμάστε README.txt με κεφαλαία γράμματα - ορισμένοι διακομιστές κάνουν διάκριση πεζών-κεφαλαίων και μερικά πακέτα παραδίδουν το αρχείο με κεφαλαία.

Από τον πηγαίο κώδικα της σελίδας σας (χωρίς σύνδεση): δείτε τον πηγαίο κώδικα της αρχικής σας σελίδας και αναζητήστε το ίδιο το φύλλο στυλ του προσθέτου ακριβώς σε αυτή τη διαδρομή:

/wp-content/plugins/usc-e-shop/css/usces_default.css?ver=...

Ο αριθμός ?ver= που είναι συνδεδεμένος με αυτό το αρχείο είναι η ίδια η έκδοση του προσθέτου και είναι η δημόσια πηγή που διάβασα. Το Welcart φορτώνει αυτό το φύλλο στυλ στις σελίδες του καταστήματός του, οπότε μια σελίδα καταστήματος ή καλαθιού είναι ένα αξιόπιστο μέρος για να το βρείτε. Διαβάστε την έκδοση μόνο από το usces_default.css: άλλα αρχεία που γράφονται στη σελίδα σας φέρουν τους δικούς τους, εντελώς άσχετους αριθμούς ?ver=, και η ανάγνωση του πρώτου που θα βρείτε μπορεί να σας αφήσει με την έκδοση ενός διαφορετικού λογισμικού. Αν δεν μπορείτε να βγάλετε καθόλου έναν αναγνώσιμο αριθμό από τον πηγαίο κώδικα της σελίδας, αυτό είναι σύνηθες και δεν αποτελεί ένδειξη τίποτε - τα πρόσθετα προσωρινής μνήμης και βελτιστοποίησης αφαιρούν συχνά την τιμή ?ver= από τις διευθύνσεις URL των πόρων - οπότε χρησιμοποιήστε το readme.txt ή την οθόνη διαχείρισης.

Στη συνέχεια εφαρμόστε αυτόν τον κανόνα, και σημειώστε ότι οι εκδόσεις συγκρίνονται αριθμητικά, όχι αλφαβητικά, οπότε η 2.12.1 είναι νεότερη από την 2.9.1 παρόλο που το «12» φαίνεται μικρότερο από το «9» ως κείμενο:

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

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

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

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

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

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

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

Ένα μικρό πράγμα αξίζει να γίνει όσο η ενημέρωση είναι πρόσφατη:

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

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

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

Για να είμαι πλήρως διαφανής σχετικά με τον έλεγχο πίσω από το email μου: διάβασα μόνο αρχεία που ο ιστότοπός σας ήδη παρέχει σε κάθε επισκέπτη, συγκεκριμένα την αρχική σας σελίδα και τη διεύθυνση του φύλλου στυλ του Welcart που είναι γραμμένη σε αυτήν, και το δημόσιο readme.txt του προσθέτου μέσα στο wp-content/plugins/usc-e-shop/. Δεν απέκτησα πρόσβαση στην περιοχή διαχείρισης του WordPress σας, στη βάση δεδομένων σας, στις παραγγελίες σας ή σε οποιοδήποτε ιδιωτικό τμήμα του ιστότοπου.

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

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

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

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

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

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

Επικοινωνία

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

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

Αναφορές

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

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