Ιστολόγιο

Ελέγχετε το WordPress; Ξεκινήστε με τα Πρόσθετά σας

Σταματήστε να ελέγχετε τον πυρήνα του WordPress και ξεκινήστε να ελέγχετε τα πρόσθετά σας: ένας πρακτικός έλεγχος ασφάλειας με επίκεντρο τα πρόσθετα για μικρές ομάδες.

Σύνοψη

Οι περισσότεροι έλεγχοι ασφάλειας του WordPress είναι ανάποδοι: δίνουν έμφαση στις ενημερώσεις του πυρήνα και στις αναφορές σαρωτών, ενώ οι ευπάθειες που πραγματικά χτυπούν ζουν στα πρόσθετα. Μια λευκή βίβλος της SANS διαπίστωσε ότι πάνω από το 96% των ευπαθειών του οικοσυστήματος προέρχονται από πρόσθετα τρίτων κατασκευαστών, και περίπου το 43% δεν απαιτεί ταυτοποίηση. Αυτό το άρθρο παρουσιάζει έναν έλεγχο με προτεραιότητα στα πρόσθετα για μια μικρή εσωτερική ομάδα μάρκετινγκ, χρησιμοποιώντας την ιστορία ενός ιστότοπου που παραβιάστηκε επειδή όλοι σάρρωναν το λάθος επίπεδο. Θα μάθετε να καταγράφετε και να ταξινομείτε κάθε πρόσθετο, να ελέγχετε επιφάνειες επίθεσης χωρίς ταυτοποίηση, να εξετάζετε χειροκίνητα χρήστες και αρχεία καταγραφής, και να μεταφράζετε τα ευρήματα σε γλώσσα κινδύνου που καταλαβαίνει ένα αφεντικό χωρίς τεχνικές γνώσεις. Το αποτέλεσμα είναι ένα τριμηνιαίο τελετουργικό διαλογής αντί για μια άσκηση με checkbox.

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

Τα νούμερα το επιβεβαιώνουν. Μια λευκή βίβλος της SANS για τη σάρωση προσθέτων του WordPress διαπίστωσε ότι περισσότερο από το 96% των ευπαθειών στο οικοσύστημα του WordPress προέρχονται από πρόσθετα τρίτων, με τα θέματα στο 4% και τον πυρήνα κάτω από 1%. Περίπου το 43% αυτών των ελαττωμάτων μπορεί να αξιοποιηθεί χωρίς καμία ταυτοποίηση. Έτσι, όταν ο έλεγχός σας ξοδεύει το μεγαλύτερο μέρος της ενέργειάς του στον πυρήνα, εξετάζετε τα δέντρα ενώ μια πυρκαγιά ξεκινά στον κατάλογο προσθέτων δίπλα.

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

Φανταστείτε το σενάριο πριν: ένα πρωί Κυριακής, ο ιστότοπός σας ανακατευθύνεται σε μια σελίδα καζίνο, και το αφεντικό σας στέλνει email, "Νόμιζα ότι είχαμε ασφάλεια." Είχατε ασφάλεια — είχατε έναν έλεγχο με checkbox. Το σενάριο μετά είναι ένα σύστημα διαλογής που αντιμετωπίζει τα πρόσθετα ως την επιφάνεια επίθεσης που πραγματικά είναι, τα δοκιμάζει από έξω και ελέγχει τα πράγματα που οι σαρωτές δεν μπορούν να δουν.

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


Η καταγραφή προσθέτων είναι η πολιτική ασφάλειας σας

Καταγράψτε κάθε πρόσθετο και θέμα. Σημειώστε την έκδοση, την ημερομηνία τελευταίας ενημέρωσης, το αν ο πωλητής είναι ακόμα ενεργός και το αν κάποιος το χρησιμοποιεί πραγματικά. Στη συνέχεια, ταξινομήστε το καθένα σε μια κατηγορία: συντηρημένο και χρησιμοποιούμενο, συντηρημένο και μη χρησιμοποιούμενο, εγκαταλελειμμένο αλλά χρησιμοποιούμενο, εγκαταλελειμμένο και μη χρησιμοποιούμενο. Αφαιρέστε τα μη χρησιμοποιούμενα αμέσως. Αγνοήστε την υπεράσπιση "είναι μόνο $50/μήνα" — ένα μη χρησιμοποιούμενο πρόσθετο είναι υποχρέωση, όχι λειτουργία. Για τα εγκαταλελειμμένα αλλά χρησιμοποιούμενα, αποφασίστε: αντικαταστήστε το ή αποδεχτείτε τον κίνδυνο και σημειώστε το σε ένα μητρώο κινδύνου που έχει δει το αφεντικό σας.

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

Επιφάνεια επίθεσηςΜερίδιο γνωστών ευπαθειών WordPressΠροτεραιότητα ελέγχου
Πρόσθετα τρίτωνΠάνω από 96%Υψηλότερη — καταγραφή, σάρωση, δοκιμή, αντικατάσταση
ΘέματαΠερίπου 4%Μεσαία — μόνο αν προσαρμοσμένα ή ξεπερασμένα
Πυρήνας WordPressΚάτω από 1%Χαμηλή — διατηρήστε ενημερωμένο, προχωρήστε

Όταν το SecurityWeek μέτρησε περισσότερες από 8.000 νέες ευπάθειες WordPress το 2024, η συντριπτική πλειονότητα ήταν αυτού του τύπου: ζητήματα προσθέτων, όχι ενημερώσεις πυρήνα. Ένας σαρωτής θα σας πει για εκείνες που έχουν δημοσιοποιηθεί και έχουν λάβει CVE. Δεν θα σας πει για τον προσαρμοσμένο κώδικα ελεύθερου επαγγελματία χωρίς CVE, επειδή κανείς δεν τον έχει εξετάσει προσεκτικά. Αυτή η χειροκίνητη εξέταση είναι δική σας δουλειά. Για μια πιο εμπεριστατωμένη περιγραφή των ελέγχων προσθέτων, δείτε αυτόν τον οδηγό για τον έλεγχο των προσθέτων του WordPress για ευπάθειες.


Δοκιμάστε το σαν ξένος: το 43% που δεν χρειάζεται κωδικό

Ο σαρωτής σας έχει ήδη πει ότι δεν υπάρχει τίποτα λάθος. Τώρα κάντε αυτό που δεν μπορεί: εξετάστε τον ιστότοπο από έξω, χωρίς σύνδεση. Ξεκινήστε με κάθε πεδίο ανεβάσματος αρχείων, κάθε φόρμα που επεξεργάζεται ένα POST, κάθε τελικό σημείο admin-ajax. Το ανέβασμα ελέγχει πραγματικά το περιεχόμενο του αρχείου ή μόνο την επέκταση; Πού καταλήγουν τα ανεβασμένα αρχεία και μπορεί ο διακομιστής ιστού να εκτελέσει PHP σε αυτόν τον κατάλογο; Το 43% των ελαττωμάτων προσθέτων που δεν απαιτούν ταυτοποίηση συνήθως βρίσκονται ακριβώς σε αυτά τα σημεία: μη ταυτοποιημένο αποθηκευμένο XSS, αυθαίρετο ανέβασμα αρχείων και ένεση αντικειμένων PHP.

Το πρόσθετο φόρμας επικοινωνίας επιτρέπει στους επισκέπτες να επισυνάπτουν βιογραφικό. Μετονομάζει το αρχείο χρησιμοποιώντας το αρχικό όνομα του επισκέπτη, οπότε ανεβάζετε το "resume.php" και αποθηκεύεται σε έναν φάκελο /uploads/contact/ που είναι εγγράψιμος από σχεδιασμό. Εάν ο διακομιστής επιτρέπει επίσης την εκτέλεση PHP σε αυτόν τον κατάλογο, ο εισβολέας μόλις απέκτησε webshell. Η Fastly έχει τεκμηριώσει ενεργή εκμετάλλευση μη ταυτοποιημένου αποθηκευμένου XSS σε πρόσθετα WordPress — αυτός δεν είναι ένας εξειδικευμένος κίνδυνος διαφανειών. Η δοκιμή σας είναι απλή: δημιουργήστε ένα αρχείο με γνωστό περιεχόμενο, ανεβάστε το και δείτε αν επιστρέφει με το αρχικό του όνομα και τύπο. Στη συνέχεια, δοκιμάστε να ανεβάσετε ένα αρχείο .php. Αν επιστρέψει ως .php, μόλις βρήκατε μια εκμεταλλεύσιμη τρύπα.

Εδώ καταρρέει και το επιχείρημα "αλλά το πρόσθετό μας ασφάλειας έχει WAF". Ένα WAF μπορεί να μπλοκάρει ένα γνωστό ωφέλιμο φορτίο, αλλά οι κανόνες εξομάλυνσης διαδρομής στους οποίους βασίζεται συχνά αποκλίνουν από αυτό που πραγματικά κάνει ο διακομιστής. Ο Οδηγός Δοκιμών Ασφάλειας Ιστού του OWASP είναι καλύτερη αναφορά από οποιονδήποτε πίνακα ελέγχου: περιγράφει πώς να ελέγξετε τα ελαττώματα ανεβάσματος αρχείων και το αποθηκευμένο XSS με μεθοδικό τρόπο. Και αν ανακαλύψετε ότι το πρόσθετο είναι εγκαταλελειμμένο, ήρθε η ώρα να εφαρμόσετε το πρωτόκολλο εκκαθάρισης: ο κρυφός κίνδυνος των εγκαταλελειμμένων προσθέτων WordPress εξηγεί γιατί το να αφήνετε μια νεκρή επέκταση στη θέση της είναι χειρότερο από το να την αφαιρείτε και να προσαρμόζετε τη ροή εργασίας σας.


Τι δεν μπορεί να δει ο σαρωτής: χρήστες, αρχεία καταγραφής και παλιός κώδικας

Οι δυναμικές δοκιμές πιάνουν ό,τι είναι εκτεθειμένο αυτή τη στιγμή. Η χειροκίνητη ανασκόπηση πιάνει ό,τι είναι ήδη μέσα. Ξεκινήστε με τους λογαριασμούς χρηστών: ανοίξτε τη λίστα διαχειριστή και ψάξτε για λογαριασμούς που δεν δημιουργήσατε εσείς. Ένας διαχειριστής με το όνομα "support" με διεύθυνση δωρεάν email και κανέναν άνθρωπο από πίσω είναι πίσω πόρτα, όχι συνάδελφος. Ελέγξτε τις χρονικές σημάνσεις αρχείων στο wp-content/uploads για οτιδήποτε τροποποιήθηκε πρόσφατα που δεν είναι το περιεχόμενό σας. Ελέγξτε το αρχείο καταγραφής πρόσβασης του διακομιστή για αιτήματα που μοιάζουν με εντολή curl ενός bot παρά με πρόγραμμα περιήγησης ενός ατόμου.

Το πρόσθετο εκδηλώσεων έχει ένα ανέβασμα "φωτογραφίας ομιλητή" που αποθηκεύει στο uploads/event-headshots/. Κατά τη διάρκεια της δοκιμής βρίσκετε ένα αρχείο που δεν είναι δικό σας — ένα μικρό αρχείο PHP με τυχαίο όνομα. Αυτό είναι το webshell σας. Έφτασε εκεί μέσω του ίδιου ελαττώματος ανεβάσματος που δοκιμάσατε πριν από δύο εβδομάδες, και μέχρι τώρα ένας σαρωτής δεν θα το "έβλεπε" επειδή δεν είναι ευπάθεια προσθέτου· είναι απόδειξη μιας. Η χειροκίνητη ανασκόπηση το βρίσκει, το διαγράφει και ελέγχει το αρχείο καταγραφής για τη διεύθυνση IP που το έβαλε εκεί. Η Invicti έχει σημειώσει ότι η ένεση αντικειμένων PHP στα πρόσθετα αυξάνεται και είναι σχεδόν αόρατη στις μαύρες-κουτί σαρώσεις επειδή το κακόβουλο αντικείμενο υλοποιείται μόνο κατά την εκτέλεση. Ο μόνος τρόπος να την εντοπίσετε είναι να διαβάσετε κώδικα για επικίνδυνα μοτίβα όπως η κλήση unserialize() σε δεδομένα εισόδου από τον χρήστη. Το να διαβάσετε μερικές εκατοντάδες γραμμές του προσαρμοσμένου προσθέτου είναι φθηνότερο από το να πληρώνετε ρήτρα απόκρισης σε περιστατικό.

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


Λέγοντας την αλήθεια στο αφεντικό σας χωρίς να προκαλέσετε πανικό

Το αφεντικό σας δεν ενδιαφέρεται για τις βαθμολογίες CVSS ή την ένεση αντικειμένων PHP. Ενδιαφέρεται για το αν ο ιστότοπος πέσει, το αν το κατάστημα δεν δέχεται παραγγελίες και τον προϋπολογισμό πληροφορικής. Η μετάφραση είναι απλή: "Αυτό το πρόσθετο έχει ένα γνωστό ελάττωμα εκτέλεσης κώδικα εξ αποστάσεως χωρίς ταυτοποίηση. Ένας ξένος μπορεί να διαγράψει το περιεχόμενο του ιστότοπού μας ή να εγκαταστήσει μια πίσω πόρτα. Πρέπει να το αντικαταστήσουμε αυτό το τρίμηνο." Στη συνέχεια δείξτε τη λίστα προτεραιοτήτων: αντικαταστήστε το πρόσθετο εκδηλώσεων, απενεργοποιήστε το ανέβασμα αρχείων της φόρμας επικοινωνίας έως ότου επικυρώνει σωστά τους τύπους αρχείων, αλλάξτε όλα τα διαπιστευτήρια διαχειριστή και προγραμματίστε την επόμενη τριμηνιαία ανασκόπηση.

Έχετε επίσης ένα γλωσσικό πλεονέκτημα: η CISA διατηρεί τον κατάλογο Known Exploited Vulnerabilities, ο οποίος σας λέει ακριβώς ποια δημοσιευμένα ελαττώματα χρησιμοποιούνται ενεργά στην πράξη. Αν κάποιο από τα πρόσθετά σας εμφανίζεται εκεί, το επιχείρημα δεν είναι πλέον θεωρητικό — υπάρχει γνωστό exploit και το ρολόι τρέχει. Αν δεν εμφανίζεται, χρησιμοποιήστε το έτσι κι αλλιώς ως πρότυπο για το τι σημαίνει "επείγον". Η παρακολούθηση της CISA διευκολύνει την πειθώ ενός μη τεχνικού αφεντικού ότι αυτό δεν είναι ένα email ηλεκτρονικού ψαρέματος· είναι μια δημόσια βάση δεδομένων για το τι κάνουν οι επιτιθέμενοι αυτή τη στιγμή. Όταν τελειώσει το τρίμηνο, θα έχετε μια ροή εργασιών αποκατάστασης, όχι μια άσκηση checkbox μιας χρήσης. Μια ροή εργασιών για τη μετατροπή των ευπαθειών σε κύκλο ενημερώσεων κρατά τη συνήθεια ζωντανή.


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

Sources (5)