PHP2Shell: patch today, then ask why your store still runs on PHP
Γράφει ο Panagiotis Athanasakopoulos · Παναγιώτης Αθανασακόπουλος
Security22 Οκτωβρίου 20264 min
Στις 20 Οκτωβρίου η ομάδα ασφαλείας της PHP ανακοίνωσε ότι την επόμενη μέρα θα κυκλοφορούσε έκδοση που διορθώνει δύο κρίσιμα κενά ασφαλείας. Ζήτησε από όσους τρέχουν PHP να είναι έτοιμοι να ενημερώσουν. Οι διορθώσεις ήρθαν στις 21 Οκτωβρίου, στις εκδόσεις PHP 8.5.12, 8.4.27, 8.3.36 και 8.2.35. Τα δύο κενά, CVE-2026-109618 και CVE-2026-109619, είναι πλέον γνωστά μαζί ως PHP2Shell. Και τα δύο βαθμολογούνται με 9,2 στα 10.
Η σοβαρότητά τους οφείλεται στο πού βρίσκονται. Δεν πρόκειται για plugin ή theme. Πρόκειται για τη γλώσσα πάνω στην οποία τρέχει το site. Σύμφωνα με το CERT-EU, ένα μόνο αίτημα από κάποιον χωρίς κωδικό μπορεί να ξεκινήσει την επίθεση πριν τρέξει οποιοσδήποτε κώδικας του site. Εκτεθειμένοι είναι όλοι οι τρόποι με τους οποίους τρέχει η PHP στο web: PHP-FPM, Apache mod_php, php-cgi, FrankenPHP και LiteSpeed. Ερευνητές έδειξαν επίσης ότι με τον ίδιο τρόπο μπορεί να διαβαστεί η μνήμη ενός PHP worker, και αυτή η μνήμη κρατά κωδικούς, tokens και κλειδιά API. Η Qualys αναφέρει επιθέσεις που εντόπισαν η Amazon και η Cloudflare. Το CERT-EU αναφέρει ότι κυκλοφορούν proofs of concept, δηλαδή δείγματα κώδικα που δείχνουν ότι η επίθεση δουλεύει.
Με απλά λόγια: αν το website ή το e-shop σας τρέχει σε WordPress, WooCommerce, OpenCart, PrestaShop, Magento, Joomla ή Drupal, τρέχει σε PHP. Μέχρι να ενημερωθεί, κινδυνεύουν και τα στοιχεία των πελατών σας, οι κωδικοί διαχείρισης και τα κλειδιά για τον πάροχο πληρωμών σας.
Πρώτο βήμα, σήμερα: μάθετε ποια έκδοση PHP τρέχει το site. Τα περισσότερα πάνελ hosting τη δείχνουν στις ρυθμίσεις του site. Ο developer σας ή ο πάροχος hosting μπορεί να σας την πει σε ένα λεπτό. Αν είναι παλαιότερη από τις παραπάνω εκδόσεις, ενημερώστε την ή ζητήστε να ενημερωθεί. Αν είναι 8.1 ή παλαιότερη, δεν παίρνει πια καθόλου τακτικές ενημερώσεις. Η ομάδα της PHP δημοσίευσε περιορισμένα backports, δηλαδή διορθώσεις μεταφερμένες σε παλιές εκδόσεις, για τις 7.4, 8.0 και 8.1. Αυτό όμως είναι μπάλωμα σε μια έκδοση που έχει ήδη μείνει πίσω. Αν η ενημέρωση δεν μπορεί να γίνει σήμερα, το CERT-EU προτείνει προσωρινά μέτρα, όπως να απενεργοποιηθεί το session upload progress και να γίνουν αυστηρότερα τα όρια στα αιτήματα. Ξεκαθαρίζει όμως ότι αυτά δεν κάνουν ένα site ασφαλές.
Τώρα το δυσάρεστο κομμάτι. Η ενημέρωση κλείνει αυτά τα δύο κενά. Δεν αλλάζει όμως τίποτα στον λόγο που θα διαβάσετε ένα παρόμοιο άρθρο και του χρόνου, και τον μεθεπόμενο χρόνο.
Δείτε τι είναι στην πράξη ένα τυπικό ελληνικό e-shop. Στη βάση, PHP. Από πάνω μια πλατφόρμα, συχνά σε έκδοση που οι ίδιοι οι δημιουργοί της έχουν σταματήσει να συντηρούν. Ένα εμπορικό theme που ενημερώθηκε τελευταία φορά πριν από χρόνια. Και είκοσι ή τριάντα plugins για πληρωμές, courier, τιμολόγια, myDATA και feeds. Το καθένα το έγραψε κάποιος που ο ιδιοκτήτης δεν έχει γνωρίσει ποτέ. Το καθένα έχει τα δικά του κενά και τη δική του αντίληψη για το πότε θα τα διορθώσει. Ρωτήστε τους περισσότερους ιδιοκτήτες ποιος είναι υπεύθυνος να τα ενημερώνει όλα αυτά. Η ειλικρινής απάντηση είναι: κανείς συγκεκριμένα. Αυτό δεν είναι μοντέλο ασφάλειας. Είναι ελπίδα, που ανανεώνεται κάθε φορά που βγαίνει μια διόρθωση.
Αυτή η εβδομάδα το έδειξε καλύτερα απ' ό,τι θα μπορούσαμε εμείς. Κάποιοι πάροχοι hosting είχαν ήδη βάλει κανόνες στους servers τους πριν καν ακούσουν οι περισσότεροι πελάτες τους για το PHP2Shell. Σωστά έκαναν. Και αυτό δείχνει ακριβώς από πού έρχεται στην πραγματικότητα η προστασία των περισσότερων sites σε PHP: από την τύχη να έχετε διαλέξει έναν επιμελή πάροχο, όχι από κάποιον που έχει την ευθύνη του site.
Στην TWENTYONE το λέμε εδώ και καιρό, αν και όχι για την PHP ονομαστικά. Τον Σεπτέμβριο, στο άρθρο γιατί σταματήσαμε να φτιάχνουμε καταστήματα σε open-source πλατφόρμες, περιγράψαμε την παγίδα των ενημερώσεων. Ή ενημερώνετε αμέσως και ανακαλύπτετε στο live site τι χάλασε, ή περιμένετε και μένετε με ένα γνωστό κενό ανοιχτό, που έχει ήδη ανακοινωθεί δημόσια και για το οποίο κυκλοφορεί έτοιμο proof of concept. Κάθε πλατφόρμα που αναφέραμε τότε, WooCommerce, Magento, PrestaShop και OpenCart, τρέχει σε PHP. Τότε υποστηρίξαμε ότι ο κίνδυνος βρίσκεται κυρίως στα plugins και στα themes. Το PHP2Shell δείχνει ότι μπορεί να βρίσκεται και ένα επίπεδο πιο κάτω, στη γλώσσα που μοιράζονται όλα αυτά τα plugins. Εκεί καμία προσεκτική επιλογή plugin δεν μπορεί να σας προστατέψει.
Η μόνη μόνιμη λύση είναι αυτή που υποστηρίζουμε από την αρχή: ένα κατάστημα που όλο το stack του έχει έναν ιδιοκτήτη. Γι' αυτό καμία από τις πλατφόρμες που φτιάχνει η ομάδα μου δεν τρέχει σε PHP. Το NEXTCOMMERCE, η μηχανή e-commerce πίσω από το Topharmakeio.gr και τη Rellas Jewellery, η πλατφόρμα κρατήσεων του TRVL και το app της, το Voyage και το website της TWENTYONE είναι γραμμένα σε Node.js, React και Next.js, με PostgreSQL για τα δεδομένα. Είναι ένας ενιαίος κώδικας που εμείς γράφουμε, εμείς διορθώνουμε και για τον οποίο εμείς λογοδοτούμε. Πληρωμές, courier, τιμολόγια και myDATA είναι λειτουργίες αυτού του κώδικα, όχι plugins που τα έγραψε κάποιος τρίτος και απλώς ελπίζετε ότι θα δουλεύουν.
Κανένα runtime, δηλαδή κανένα περιβάλλον όπου τρέχει ο κώδικας, δεν είναι χωρίς κενά ασφαλείας. Δεν θα εμπιστευόμουν όποιον έλεγε το αντίθετο. Και το Node.js έχει. Όταν εμφανίζεται ένα, εφαρμόζουμε τη διόρθωση σε όλα τα καταστήματα μαζί, την ίδια μέρα, γιατί δεν υπάρχει κανείς άλλος να περιμένουμε. Αυτή είναι όλη η διαφορά: όχι μια καλύτερη γλώσσα, αλλά μια σύντομη αλυσίδα ευθύνης. Σε μια μέρα σαν την 21η Οκτωβρίου, το ερώτημα δεν είναι αν το λογισμικό σας έχει κενά. Είναι ποιος τα διορθώνει, πόσο γρήγορα, και πόσοι άγνωστοι μεσολαβούν.
Όταν φέτος μεταφέραμε το Topharmakeio.gr και τη Rellas από το OpenCart, τα παλιά τους καταστήματα σε PHP απενεργοποιήθηκαν. Δεν τα αφήσαμε να τρέχουν ξεχασμένα κάπου. Οι παλιές τους διευθύνσεις index.php απλώς ανακατευθύνονται πλέον από τον web server. Αν το κατάστημά σας είναι ουσιαστικό κομμάτι της επιχείρησής σας, ενημερώστε την PHP σήμερα, γιατί πρέπει. Μετά δείτε το PHP2Shell ως αυτό που είναι: μια προειδοποίηση. Ο οδηγός μετάβασης εξηγεί πώς έρχονται μαζί σας τα προϊόντα, οι πελάτες, οι παλιές παραγγελίες και οι θέσεις σας στην αναζήτηση.
Common questions
- Τι είναι το PHP2Shell;
- Το όνομα που δόθηκε σε δύο κρίσιμα κενά ασφαλείας στην ίδια την PHP, τα CVE-2026-109618 και CVE-2026-109619, και τα δύο με βαθμολογία 9,2. Μπορούν να επιτρέψουν απομακρυσμένη εκτέλεση κώδικα χωρίς σύνδεση, με ένα μόνο αίτημα, πριν τρέξει ο κώδικας της εφαρμογής. Διορθώθηκαν στις 21 Οκτωβρίου 2026.
- Ποιες εκδόσεις PHP διορθώνουν το PHP2Shell;
- Οι PHP 8.5.12, 8.4.27, 8.3.36 και 8.2.35. Η PHP 8.1 και οι παλαιότερες είναι εκτός τακτικής υποστήριξης. Η ομάδα της PHP δημοσίευσε περιορισμένα backports σε πηγαίο κώδικα για τις 7.4, 8.0 και 8.1, και οι διανομές Linux μπορεί να δίνουν τη διόρθωση με δικούς τους αριθμούς έκδοσης.
- Επηρεάζεται το site μου σε WordPress, WooCommerce ή OpenCart;
- Ναι, αν τρέχει σε έκδοση PHP παλαιότερη από τις διορθωμένες. Αυτές οι πλατφόρμες είναι γραμμένες σε PHP, οπότε το κενό βρίσκεται κάτω από κάθε theme και κάθε plugin. Δείτε την έκδοση PHP στο πάνελ hosting και ενημερώστε την, ή ρωτήστε τον πάροχό σας αν έχει ήδη διορθώσει ή προστατέψει τους servers.
- Αρκεί να ενημερώσω την PHP;
- Κλείνει το PHP2Shell, και πρέπει να γίνει αμέσως. Δεν αλλάζει όμως τη δομή ενός τυπικού καταστήματος σε PHP. Εκεί η γλώσσα, η πλατφόρμα, το theme και δεκάδες plugins έχουν ο καθένας τους δικούς του δημιουργούς και τους δικούς του ρυθμούς ενημέρωσης, και κανείς συγκεκριμένα δεν είναι υπεύθυνος για όλα. Η μόνιμη λύση είναι ένα stack με έναν ιδιοκτήτη.
- Χρησιμοποιεί η TWENTYONE PHP;
- Καμία από τις πλατφόρμες που φτιάχνει η TWENTYONE δεν τρέχει σε PHP. Το NEXTCOMMERCE, η πλατφόρμα κρατήσεων του TRVL, το Voyage και το twenty-one.co είναι γραμμένα σε Node.js, React και Next.js με PostgreSQL. Τα καταστήματα που μεταφέρθηκαν από το OpenCart, όπως το Topharmakeio.gr και η Rellas Jewellery, δεν τρέχουν πια καθόλου PHP.