PHP2Shell: patch today, then ask why your store still runs on PHP
Engineering22 Οκτωβρίου 20266 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 server: 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 ή ο πάροχός σας μπορεί να σας την πει σε ένα λεπτό. Αν είναι χαμηλότερη από τις παραπάνω εκδόσεις, ενημερώστε την ή ζητήστε να ενημερωθεί. Αν είναι 8.1 ή παλαιότερη, δεν παίρνει πια καθόλου τακτικές ενημερώσεις. Η ομάδα της PHP έβγαλε περιορισμένες διορθώσεις για τις 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 προστατεύονται επειδή έτυχε να έχουν προσεκτικό πάροχο, όχι επειδή κάποιος έχει την ευθύνη τους.
Γράφουμε γι' αυτό εδώ και καιρό, αν και όχι για την PHP ονομαστικά. Τον Σεπτέμβριο, στο κείμενο γιατί σταματήσαμε να φτιάχνουμε καταστήματα σε open source πλατφόρμες, περιγράψαμε την παγίδα των ενημερώσεων. Είτε ενημερώνετε αμέσως και ανακαλύπτετε στο live κατάστημα τι χάλασε, είτε περιμένετε και τρέχετε ένα γνωστό κενό ασφαλείας, με δημόσια ανακοίνωση και έτοιμο proof of concept. Όλες οι πλατφόρμες που αναφέραμε τότε, WooCommerce, Magento, PrestaShop και OpenCart, τρέχουν σε PHP. Τότε υποστηρίξαμε ότι ο κίνδυνος βρίσκεται κυρίως στα plugins και στα themes. Το PHP2Shell δείχνει ότι μπορεί να βρίσκεται και ένα επίπεδο πιο κάτω: στη γλώσσα που μοιράζονται όλα αυτά τα plugins. Εκεί, όσο προσεκτικά κι αν διαλέξετε plugins, δεν σας προστατεύει τίποτα.
Η μόνη μόνιμη λύση είναι αυτή που υποστηρίζουμε από την αρχή: ένα κατάστημα που ολόκληρο το stack του έχει έναν υπεύθυνο. Γι' αυτό καμία από τις πλατφόρμες που φτιάχνουμε δεν τρέχει σε PHP. Το NEXTCOMMERCE, η μηχανή e-commerce πίσω από το Topharmakeio.gr και το Rellas Jewellery, η πλατφόρμα κρατήσεων TRVL και το app της, το Voyage και αυτό εδώ το site είναι γραμμένα σε Node.js, React και Next.js, με PostgreSQL για τα δεδομένα. Είναι ένας ενιαίος κώδικας. Τον γράφουμε, τον ενημερώνουμε και έχουμε την ευθύνη του εμείς. Πληρωμές, courier, τιμολόγια και myDATA είναι λειτουργίες αυτού του κώδικα, όχι plugins ενός μόνο δημιουργού που απλώς ελπίζετε να συνεχίσει να τα συντηρεί.
Καμία γλώσσα δεν είναι χωρίς κενά ασφαλείας. Έχει και το 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 έβγαλε περιορισμένες διορθώσεις στον κώδικα για τις 7.4, 8.0 και 8.1, και οι διανομές Linux μπορεί να δίνουν τη διόρθωση με δικούς τους αριθμούς έκδοσης.
- Επηρεάζεται το site μου σε WordPress, WooCommerce ή OpenCart;
- Ναι, αν τρέχει σε έκδοση PHP παλαιότερη από τις διορθωμένες. Αυτές οι πλατφόρμες είναι γραμμένες σε PHP, άρα το κενό βρίσκεται κάτω από κάθε theme και plugin. Δείτε την έκδοση PHP στον πίνακα ελέγχου του hosting και ενημερώστε την, ή ρωτήστε τον πάροχό σας αν έχει ήδη διορθώσει ή θωρακίσει τους servers.
- Αρκεί να ενημερώσω την PHP;
- Η ενημέρωση κλείνει το PHP2Shell και πρέπει να γίνει αμέσως. Δεν αλλάζει όμως τη δομή ενός τυπικού καταστήματος σε PHP. Εκεί η γλώσσα, η πλατφόρμα, το theme και δεκάδες plugins έχουν ο καθένας τους δικούς του δημιουργούς και τους δικούς του ρυθμούς ενημέρωσης, και κανείς συγκεκριμένα δεν έχει την ευθύνη για όλα. Η μόνιμη λύση είναι ένα stack με έναν υπεύθυνο.
- Χρησιμοποιεί PHP η TWENTYONE;
- Καμία από τις πλατφόρμες που φτιάχνει η TWENTYONE δεν τρέχει σε PHP. Το NEXTCOMMERCE, η πλατφόρμα κρατήσεων TRVL, το Voyage και το twenty-one.co είναι γραμμένα σε Node.js, React και Next.js με PostgreSQL. Τα καταστήματα που μεταφέρθηκαν από το OpenCart, όπως το Topharmakeio.gr και το Rellas Jewellery, δεν τρέχουν πια καθόλου PHP.
The service behind it
Custom Web Development
Κατασκευή ιστοσελίδων στην Αθήνα με custom web development: μοναδικά, πολύ γρήγορα websites, γραμμένα από το μηδέν σε React και Next.js για το brand στο οποίο ανήκουν. Χωρίς templates.