Εν ολίγοις: Στους παρόχους cloud και PaaS το patch δεν γίνεται αυτόματα από τον πάροχο. Αν διαχειρίζεται το runtime PHP, το ενημερώνει, συχνά όμως μόνο με το επόμενο deployment. Αν χτίζετε μόνοι σας images ή builds ή λειτουργείτε μόνοι την πλατφόρμα, πρέπει να ξαναχτίσετε και να διανείμετε εκ νέου. Καθοριστικό είναι πάντα το runtime που εξυπηρετεί αυτή τη στιγμή ο ιστότοπός σας.
Ενημέρωση PHP σε PaaS: σε ποιον ανήκει το runtime;
Οι υπηρεσίες πλατφόρμας, στην τεχνική γλώσσα PaaS (Platform as a Service), απαλλάσσουν τις επιχειρήσεις από τη λειτουργία διακομιστών. Ανεβάζετε κώδικα, η πλατφόρμα τον χτίζει και τον λειτουργεί. Στο PHP2Shell προκύπτει από αυτό μια τυπική αβεβαιότητα: ποιος πρέπει τελικά να ενημερώσει την PHP;
Η Vercel το συνοψίζει στο bulletin της για το PHP2Shell: μια ενημέρωση του τοπικού περιβάλλοντος ανάπτυξης, του κώδικα της εφαρμογής ή των plugins δεν αρκεί. Καθοριστικό είναι το runtime PHP του deployment που απαντά πραγματικά στα αιτήματα. Το αν αυτό το runtime έχει patch, εξαρτάται από το ποιος το παρέχει και πότε χτίστηκε τελευταία φορά.
Τέσσερα μοντέλα λειτουργίας σε σύγκριση
Οι ονομασίες των παρόχων διαφέρουν. Για το ζήτημα του patch οι περισσότερες προσφορές μπορούν να αντιστοιχιστούν σε ένα από αυτά τα μοντέλα:
| Μοντέλο | Ποιος ενημερώνει την PHP; | Τι πρέπει να κάνετε |
|---|---|---|
| Runtime που διαχειρίζεται ο πάροχος | Ο πάροχος | Εξασφαλίστε επιβεβαίωση, ενδεχομένως νέο deployment ώστε να ισχύσει το νέο runtime |
| Runtime βασισμένο σε build (buildpack) | Ο πάροχος παρέχει νέα έκδοση, το build σας την καθηλώνει | Ενεργοποιήστε νέο build, ελέγξτε την έκδοση στο πρωτόκολλο του build |
| Δικό σας image container | Εσείς | Ξαναχτίστε το image με διορθωμένη PHP και διανείμετέ το εκ νέου |
| Πλατφόρμα που λειτουργείτε μόνοι | Εσείς, για την πλατφόρμα και τις εφαρμογές | Patch στην πλατφόρμα και σε κάθε εφαρμογή ξεχωριστά |
Πολλές επιχειρήσεις χρησιμοποιούν ταυτόχρονα περισσότερα μοντέλα, για παράδειγμα ένα runtime υπό διαχείριση για τον ιστότοπο και δικά containers για εσωτερικά εργαλεία. Κάθε εφαρμογή χρειάζεται γι' αυτό τη δική της απάντηση.
Μια παγίδα κρύβεται στη λέξη «διαχειριζόμενο». Ακόμη κι αν ο πάροχος συντηρεί το runtime, μια εφαρμογή που έχει ήδη διανεμηθεί συνεχίζει συχνά να τρέχει με το επίπεδο με το οποίο χτίστηκε. Η νέα έκδοση ισχύει τότε μόνο στο επόμενο build ή deployment. Ορισμένες πλατφόρμες διατηρούν επιπλέον παλαιότερα deployments ή περιβάλλοντα προεπισκόπησης προσβάσιμα σε δικές τους διευθύνσεις. Ρωτήστε γι' αυτό όχι μόνο αν ο πάροχος έκανε patch, αλλά και από πότε οι εν λειτουργία παρουσίες σας χρησιμοποιούν το patch και τι γίνεται με τα παλιά deployments.
Τι λένε η Vercel και το Coolify για το PHP2Shell
Δύο πάροχοι δημοσιοποίησαν τις υποδείξεις τους. Είναι διδακτικές, επειδή κατονομάζουν καθαρά τα όρια των δικών τους μέτρων προστασίας.
Η Vercel ενεργοποίησε, σύμφωνα με το δικό της bulletin, πριν από τη δημοσίευση κανόνες προστασίας στο Web Application Firewall (WAF) της, ένα φίλτρο για αιτήματα ιστού. Ισχύουν αυτόματα για τις συναρτήσεις PHP στη Vercel και για αιτήματα που η Vercel προωθεί σε εξωτερικούς διακομιστές PHP. Ταυτόχρονα η Vercel ζητά να ενημερωθεί αμέσως το runtime PHP σε διορθωμένη έκδοση. Τα deployments container πρέπει να ξαναχτιστούν με ενημερωμένο βασικό image PHP και να διανεμηθούν εκ νέου. Αιτήματα που παρακάμπτουν τη Vercel και πηγαίνουν απευθείας σε εξωτερικό διακομιστή PHP, το WAF δεν τα καλύπτει.
Το Coolify, μια πλατφόρμα που μπορείτε να λειτουργήσετε μόνοι σας, επηρεάστηκε σύμφωνα με το δικό του advisory το ίδιο: όλοι οι κλάδοι της έκδοσης 4. Ως πρώτα διορθωμένα επίπεδα το Coolify αναφέρει τις 4.0.1, 4.1.3, 4.2.1, 4.3.24 και 4.4.7 και συνιστά την 4.4.7. Σημαντική είναι η προσθήκη: η ενημέρωση του Coolify δεν ενημερώνει τις εφαρμογές PHP που λειτουργείτε μέσω αυτού. Τα runtimes ή τα images τους πρέπει να τα ενημερώσετε χωριστά και να τα ξαναχτίσετε ή να τα διανείμετε εκ νέου. Αυτό ισχύει, σύμφωνα με το Coolify, και για πελάτες του Coolify Cloud και πίσω από το Cloudflare, επειδή οι κανόνες του Cloudflare ελέγχουν μόνο την κίνηση που περνά από το Cloudflare.
Τι προσφέρουν οι κανόνες του Cloudflare, κατατάσσει το άρθρο Κανόνες προστασίας Cloudflare απέναντι στο PHP2Shell.
Έτσι ελέγχετε το runtime που εξυπηρετεί
Τα παρακάτω βήματα λειτουργούν ανεξάρτητα από τον πάροχο. Στοχεύουν σε τεκμήριο και όχι σε αίσθηση.
- Απαριθμήστε όλα τα περιβάλλοντα: παραγωγή, staging, deployments προεπισκόπησης και υπηρεσίες παρασκηνίου όπως workers ουράς. Κάθε περιβάλλον μπορεί να έχει διαφορετικό runtime.
- Διαβάστε την έκδοση runtime ανά περιβάλλον: στην κονσόλα του παρόχου, στο πρωτόκολλο του build ή στο αρχείο διαμόρφωσης του έργου.
- Ελέγξτε την ημερομηνία του τελευταίου deployment: αν είναι πριν από τις 21.10.2026, τρέχει με μεγάλη πιθανότητα ακόμη το παλιό runtime, εκτός αν ο πάροχος επιβεβαιώσει ρητά κάτι διαφορετικό.
- Κοιτάξτε στην παρουσία που τρέχει: αν η πλατφόρμα προσφέρει κονσόλα, η παρακάτω εντολή δείχνει την έκδοση της παρουσίας.
- Συμπεριλάβετε εξωτερικούς διακομιστές PHP: οι διακομιστές στους οποίους η πλατφόρμα προωθεί αιτήματα χρειάζονται δική τους ενημέρωση και δεν πρέπει να είναι άμεσα προσβάσιμοι από το διαδίκτυο.
# Στην κονσόλα της παρουσίας που τρέχει (αν την προσφέρει ο πάροχος)
php -v
php -r 'echo PHP_VERSION, " ", PHP_SAPI, PHP_EOL;'
Αναμένονται 8.5.12, 8.4.27, 8.3.36 ή 8.2.35 ή backport που επιβεβαιώθηκε από τον πάροχο. Σημειώστε ότι η γραμμή εντολών μιας παρουσίας δεν χρησιμοποιεί πάντα το ίδιο runtime με τη διεργασία ιστού. Μη δημιουργείτε για τον έλεγχο δημόσια προσβάσιμο αρχείο phpinfo. Πώς ερμηνεύετε σωστά τον αριθμό έκδοσης και το επίπεδο backport, περιγράφει ο Έλεγχος έκδοσης PHP και επιπέδου patch.
Ένα νέο deployment δεν αφαιρεί κακόβουλο λογισμικό που έχει φτάσει νωρίτερα σε μόνιμους χώρους αποθήκευσης, όπως volumes upload ή η βάση δεδομένων. Αυτούς τους χώρους τους ελέγχετε χωριστά.
Καταγράψτε γραπτά την ευθύνη
Το PHP2Shell δείχνει πόσο ασαφές είναι συχνά το όριο ανάμεσα στην πλατφόρμα και τον πελάτη. Καταγράψτε για κάθε εφαρμογή ποιος παρέχει το runtime, ποιος ξαναχτίζει σε ανακοινώσεις ασφαλείας και πώς ανακοινώνει ο πάροχος τα patches. Εδώ ανήκει και το ποιος έχει πρόσβαση στην κονσόλα της πλατφόρμας όταν πιέζει ο χρόνος και ποιος επιτρέπεται να ενεργοποιήσει νέο build εκτός ωρών εργασίας.
Για τη δική σας τεκμηρίωση αρκεί ένας σύντομος πίνακας ανά εφαρμογή: πλατφόρμα, μοντέλο λειτουργίας, κλάδος PHP, ημερομηνία του τελευταίου build, υπεύθυνος. Όποιος έχει αυτή τη λίστα πρόχειρη στην επόμενη ανακοίνωση, γλιτώνει τις ημέρες που πολλές ομάδες πέρασαν ψάχνοντας μετά τις 21 Οκτωβρίου. Στις εφαρμογές container ανήκει εδώ και το ποιος συντηρεί το βασικό image· το υπόβαθρο εξηγεί το PHP σε containers.
Για διαχειριζόμενους διακομιστές χωρίς χαρακτήρα PaaS ισχύουν παρόμοιες ερωτήσεις, τις οποίες συνοψίσαμε στο Managed Server: διευκρίνιση της ευθύνης.
Πώς βοηθά συγκεκριμένα η PHP SOS;
- Αντιστοίχιση: Αντιστοιχίζουμε κάθε εφαρμογή σας σε ένα μοντέλο λειτουργίας και διευκρινίζουμε ποιος παρέχει το runtime PHP.
- Τεκμηρίωση: Ελέγχουμε runtime, ημερομηνία build και deployment ανά περιβάλλον και τεκμηριώνουμε το αποτέλεσμα.
- Νέο build και διανομή: Μέσω της υπηρεσίας patch PHP ενημερώνουμε images και builds και τα διανέμουμε ελεγχόμενα.
- Κλείσιμο κενών: Ελέγχουμε αν οι εξωτερικοί διακομιστές PHP είναι άμεσα προσβάσιμοι και περιορίζουμε την πρόσβαση.
Συχνές ερωτήσεις
Κάνει ο πάροχος PaaS μου αυτόματα patch στην PHP;
Αυτό εξαρτάται από το μοντέλο. Αν ο πάροχος διαχειρίζεται το runtime, το ενημερώνει, συχνά όμως μόνο για νέα deployments. Αν χτίζετε μόνοι σας images ή builds, πρέπει να τα ξαναχτίσετε και να τα ξαναδιανείμετε. Ζητήστε επιβεβαίωση του επιπέδου για την εφαρμογή σας.
Αρκεί το WAF του παρόχου πλατφόρμας απέναντι στο PHP2Shell;
Όχι. Η Vercel και το Coolify γράφουν ρητά ότι οι κανόνες προστασίας δεν υποκαθιστούν την ενημέρωση του runtime PHP. Επιπλέον ισχύουν μόνο για την κίνηση που περνά μέσω της πλατφόρμας.
Πρέπει μετά το patch να κάνω νέο deployment;
Συχνά ναι. Η Vercel αναφέρει για deployments container την επανακατασκευή με ενημερωμένο βασικό image PHP και νέο deployment. Στις πλατφόρμες που βασίζονται σε build το runtime καθηλώνεται κατά το build· μόνο ένα νέο build υιοθετεί το patch.
Χρησιμοποιώ το Coolify. Αρκεί η ενημέρωση του Coolify;
Όχι. Σύμφωνα με το advisory του Coolify, η ενημέρωση ενημερώνει μόνο το ίδιο το Coolify. Τα runtimes PHP ή τα images container των εφαρμογών σας πρέπει να τα ενημερώσετε χωριστά και να τα ξαναχτίσετε ή να τα ξαναδιανείμετε.