Στις 21 Οκτωβρίου 2026 το έργο PHP κυκλοφόρησε διορθώσεις για δύο κρίσιμα σφάλματα και το CERT-EU δημοσίευσε την ίδια ημέρα τη συμβουλή ασφαλείας 2026-018. Και τα δύο έχουν βαθμολογία 9,2 και περιγράφονται ως εκτέλεση κώδικα εξ αποστάσεως χωρίς έλεγχο ταυτότητας. Αν διατηρείτε έναν ιστότοπο WordPress, ένα ηλεκτρονικό κατάστημα ή οποιαδήποτε άλλη εφαρμογή PHP, αυτό σας αφορά, και η λύση είναι μια ενημέρωση, όχι μια ρύθμιση. Το άρθρο εξηγεί τι είναι γνωστό, πώς εισέρχεται η επίθεση και τι να κάνετε. Κατάσταση: 22 Οκτωβρίου 2026, με βάση την έκδοση 1.1 της συμβουλής του CERT-EU.
Τι συνέβη
- Ανακοινώθηκε έκδοση ασφαλείαςΗ PHP ανακοινώνει εκ των προτέρων μια έκδοση ασφαλείας
- Δημοσιεύθηκαν οι διορθώσεις8.5.12, 8.4.27, 8.3.36 και 8.2.35
- Συμβουλή 2026-018 του CERT-EUΚαι τα δύο σφάλματα με βαθμολογία 9,2
- Κυκλοφορεί κώδικας απόδειξης της ιδέαςΕπιθέσεις δεν επιβεβαιώνονται, αλλά είναι πιθανότερες
Η PHP ανακοίνωσε μια έκδοση ασφαλείας στις 20 Οκτωβρίου και δημοσίευσε τις διορθώσεις στις 21 Οκτωβρίου στις 13:30 UTC. Το CERT-EU τιτλοφόρησε τη συμβουλή του «Κρίσιμες ευπάθειες στην PHP» και αναφέρει δύο CVE: CVE-2026-109618 και CVE-2026-109619, με βαθμολογία 9,2 το καθένα. Το CERT-EU γράφει επίσης ότι οι τεχνικές λεπτομέρειες συζητούνται πλέον δημόσια και ότι έχει αρχίσει να κυκλοφορεί ο πρώτος κώδικας απόδειξης της ιδέας. Η συμβουλή δεν επιβεβαιώνει επιθέσεις στην πράξη, αλλά αναφέρει ότι αυτό καθιστά πιθανότερο οι επιτιθέμενοι να εκμεταλλεύονται ήδη τα σφάλματα. Αντιμετωπίστε το ως επείγον.
Ποιοι επηρεάζονται
Επηρεάζονται όλες οι εκδόσεις της PHP χαμηλότερες από τη διορθωμένη σε έναν υποστηριζόμενο κλάδο, καθώς και κάθε κλάδος που έχει φτάσει στο τέλος της υποστήριξής του.
| Κλάδος | Επηρεάζεται κάτω από | Διορθώθηκε στην |
|---|---|---|
| PHP 8.5 | 8.5.12 | 8.5.12 |
| PHP 8.4 | 8.4.27 | 8.4.27 |
| PHP 8.3 | 8.3.36 | 8.3.36 |
| PHP 8.2 | 8.2.35 | 8.2.35 |
| PHP 8.1 και παλαιότερες | όλες οι εκδόσεις | καμία τακτική ενημέρωση· η ομάδα ασφαλείας της PHP δημοσίευσε ελάχιστες μεταφορές διορθώσεων στον πηγαίο κώδικα για τις 7.4, 8.0 και 8.1 |
Το CERT-EU αναφέρει PHP-FPM, Apache με mod_php, php-cgi, FrankenPHP και LiteSpeed. Σύμφωνα με την ομάδα της PHP, το mod_php φέρει τον υψηλότερο κίνδυνο. Μπορεί να επηρεάζονται και προϊόντα που ενσωματώνουν την PHP· το CERT-EU παραπέμπει σε έναν κατάλογο του ολλανδικού NCSC στο τέλος αυτού του άρθρου. Μετράει κάθε εγκατάσταση που εξυπηρετεί αιτήματα ιστού, ανεξάρτητα από το αν διαθέτει φόρμα μεταφόρτωσης.
Πώς φτάνει ο επιτιθέμενος στο πρώτο σφάλμα
Κανείς δεν χρειάζεται να συνδεθεί. Σύμφωνα με το CERT-EU, μια επιδειχθείσα εκμετάλλευση δείχνει ότι ένα μόνο αίτημα χωρίς έλεγχο ταυτότητας μπορεί να πυροδοτήσει την επίθεση πριν εκτελεστεί οποιοσδήποτε κώδικας της εφαρμογής. Αυτό είναι το σημείο που οι περισσότεροι παραβλέπουν: δεν έχει σημασία αν το WordPress σας είναι ενημερωμένο, αν τα πρόσθετά σας έχουν διορθωθεί ή αν η φόρμα επικοινωνίας σας είναι προστατευμένη. Το αίτημα φτάνει πρώτα στη μηχανή της PHP.
Το πρώτο σφάλμα, CVE-2026-109618, λειτουργεί ως εξής:
- Ένα αίτημα φτάνει σε μια διεύθυνση που εξυπηρετείται από την PHP. Χωρίς σύνδεση, χωρίς λογαριασμό.
- Η PHP αρχίζει να διαβάζει το σώμα του αιτήματος. Το CERT-EU αναφέρει ως παράδειγμα την ανάλυση μεταφορτώσεων αρχείων μέσω φόρμας.
- Η PHP επιβάλλει το
memory_limitτης μεlongjmp(). Όταν το όριο ξεπεραστεί, εγκαταλείπει απότομα ό,τι έκανε και τερματίζει το αίτημα. - Αν αυτό συμβεί στη μέση της δημιουργίας των εσωτερικών δεδομένων του αιτήματος, τα δεδομένα αυτά έχουν κατασκευαστεί μόνο κατά το ήμισυ.
- Ο καθαρισμός που ακολουθεί θεωρεί τα άκυρα δεδομένα έγκυρα και αποδεσμεύει μνήμη που δεν αρχικοποιήθηκε ποτέ. Η μνήμη αυτή μπορεί ακόμη να περιέχει δεδομένα από προηγούμενες δεσμεύσεις που ο επιτιθέμενος ελέγχει.
- Από εκεί και πέρα, η συμβουλή περιγράφει εκτέλεση κώδικα εξ αποστάσεως στον διακομιστή.
Σκόπιμα δεν περιγράφουμε πώς ο επιτιθέμενος καθοδηγεί το τελευταίο βήμα. Αρκεί να γνωρίζετε ότι το σημείο εισόδου δεν είναι η εφαρμογή σας, και γι' αυτό τίποτα μέσα στην εφαρμογή σας δεν μπορεί να το σταματήσει.
Το δεύτερο σφάλμα: κατάσταση που επιβιώνει της μνήμης της
Το CVE-2026-109619 είναι διαφορετικός μηχανισμός με το ίδιο αποτέλεσμα. Η PHP διατηρεί εσωτερική κατάσταση για κάθε αίτημα. Μετά από ορισμένες αποτυχίες, όπως ένα μοιραίο σφάλμα, η κατάσταση αυτή μπορεί να παραμείνει ενώ η μνήμη από κάτω της έχει αποδεσμευτεί. Το επόμενο αίτημα που εξυπηρετεί η ίδια διεργασία εργασίας μπορεί τότε να χρησιμοποιήσει αυτή την απαρχαιωμένη κατάσταση πριν επαναφερθεί με τον συνήθη τρόπο. Ο επιτιθέμενος χρειάζεται δύο αιτήματα που καταλήγουν στην ίδια διεργασία εργασίας· το CERT-EU βαθμολογεί το αποτέλεσμα όπως και στο πρώτο σφάλμα: εκτέλεση κώδικα εξ αποστάσεως.
Τι να κάνετε σήμερα
Είναι η PHP στον διακομιστή σας παλαιότερη από 8.5.12, 8.4.27, 8.3.36 ή 8.2.35, ή 8.1 και παλαιότερη;
- ΝαιΕπηρεάζεται και από τα δύο σφάλματα. Συνεχίστε στην επόμενη ερώτηση.
- ΌχιΔιορθωμένη και για τα δύο σφάλματα, αν αυτή είναι πράγματι η έκδοση που τρέχει ο διακομιστής ιστού σας.
Μπορείτε να ενημερώσετε σήμερα;
- ΝαιΕνημερώστε, επανεκκινήστε κάθε διεργασία εργασίας της PHP, ελέγξτε την έκδοση που εκτελείται.
- ΌχιΑποσυνδέστε τον διακομιστή από τα δημόσια δίκτυα μέχρι να διορθωθεί. Τα όρια μόνο μειώνουν τον κίνδυνο.
- Εντοπίστε ποια έκδοση της PHP εξυπηρετεί πραγματικά τον ιστότοπό σας. Το
php -vστη γραμμή εντολών δείχνει την έκδοση της γραμμής εντολών, που μπορεί να διαφέρει από αυτήν που χρησιμοποιεί ο διακομιστής ιστού σας. Ελέγξτε τοphp-fpm -v, τον πίνακα ελέγχου του πάροχου φιλοξενίας ή μια σελίδα που καλεί τοphpinfo(). Σε κοινόχρηστη φιλοξενία, ρωτήστε τον πάροχό σας. - Ενημερώστε σε διορθωμένη έκδοση: 8.5.12, 8.4.27, 8.3.36 ή 8.2.35. Οι διανομές συχνά μεταφέρουν διορθώσεις χωρίς να αλλάζουν τον αριθμό έκδοσης, γι' αυτό αναζητήστε τους αριθμούς CVE στην ανακοίνωση ασφαλείας του προμηθευτή σας. Στα κοντέινερ, δημιουργήστε ξανά την εικόνα από μια ενημερωμένη βασική εικόνα. Η ομάδα της PHP σημειώνει ότι το rpms.remirepo.net δεν είχε ενημερώσεις την ημέρα της κυκλοφορίας και συνιστά πακέτα διανομής ή μεταγλώττιση από τον πηγαίο κώδικα.
- Επανεκκινήστε κάθε διεργασία εργασίας της PHP. Μια ενημέρωση στον δίσκο δεν αλλάζει τις διεργασίες που ήδη τρέχουν. Επανεκκινήστε το PHP-FPM ή τον διακομιστή ιστού και ελέγξτε ξανά την έκδοση που εκτελείται.
- Αν δεν μπορείτε να ενημερώσετε σήμερα, απομονώστε τον διακομιστή από τα δημόσια δίκτυα μέχρι να εφαρμοστεί και να ελεγχθεί η διόρθωση. Το CERT-EU είναι σαφές ότι μόνο μια ενημέρωση διορθώνει πλήρως αυτά τα σφάλματα.
- Αν χρησιμοποιείτε PHP 8.1 ή παλαιότερη, ζητήστε από τον προμηθευτή σας τη μεταφερμένη διόρθωση ή μεταβείτε σε υποστηριζόμενο κλάδο. Οι εκδόσεις αυτές δεν λαμβάνουν τακτικές ενημερώσεις.
Παρακάμψεις που μειώνουν τον κίνδυνο αλλά δεν διορθώνουν το πρόβλημα
Το CERT-EU απαριθμεί μέτρα που δυσκολεύουν μια επίθεση. Δηλώνει ρητά ότι δεν καθιστούν μια εγκατάσταση ασφαλή. Χρησιμοποιήστε τα όσο προετοιμάζετε την ενημέρωση, όχι αντί για αυτήν.
- Κατά του CVE-2026-109618: ορίστε
memory_limit=-1με τρόπο που οι εφαρμογές δεν μπορούν να παρακάμψουν, για παράδειγμα μεphp_admin_valueστο pool του FPM, και βεβαιωθείτε ότι κανένα pool, κατάλογος ή καταχώριση εφαρμογής δεν ορίζει ξανά πεπερασμένο όριο. Ορίστε χαμηλόpost_max_size(8M χωρίς μεταφορτώσεις, 32M με μεταφορτώσεις) και κρατήστε τοupload_max_filesizeκάτω από αυτό. Περιορίστε το μέγεθος του αιτήματος, τον αριθμό των πεδίων, τα τμήματα πολλαπλών μερών, τον αριθμό των κεφαλίδων και το βάθος εμφώλευσης στον διακομιστή ιστού ή στον διαμεσολαβητή. Χρησιμοποιήστε όριο μνήμης κοντέινερ ή cgroup ως όριο διαθεσιμότητας, αλλά όχιRLIMIT_ASήRLIMIT_DATA, που μπορούν να προκαλέσουν την ευάλωτη αποτυχία δέσμευσης μνήμης. - Κατά του CVE-2026-109619: ορίστε
session.upload_progress.enabled=0στοphp.ini, στο pool του FPM ή σε μια ρύθμιση του διακομιστή που ισχύει πριν από την ανάλυση του αιτήματος (όχι μεini_set()ή.user.ini) και επανεκκινήστε όλες τις διεργασίες εργασίας. Στην PHP 8.5 ορίστε επίσηςfatal_error_backtraces=0. Αφαιρέστε άκυρες ή παρωχημένες ρυθμίσεις ανά αίτημα που εκτυπώνουν διαγνωστικά μηνύματα πριν από την αρχικοποίηση και διορθώστε τα μοιραία σφάλματα και τις υπερβάσεις χρόνου εκτέλεσης που μπορεί να προκαλέσει ο επιτιθέμενος.
Τι μπορεί και τι δεν μπορεί να κάνει εδώ το SilentShield
Αυτό δεν είναι πρόβλημα ρομπότ και προτιμούμε να το πούμε ξεκάθαρα παρά να αφήσει μια σελίδα προϊόντος την αντίθετη εντύπωση. Η επίθεση πλήττει τη μηχανή της PHP πριν το αίτημα το δει οτιδήποτε δικό μας ή οποιοδήποτε CAPTCHA, πρόσθετο ή κανόνας τείχους προστασίας μέσα στην εφαρμογή σας. Μια προστασία από ρομπότ σε μια φόρμα δεν τη σταματά και κανείς δεν πρέπει να σας λέει ότι τη σταματά. Η μόνη πλήρης λύση είναι η ενημέρωση της PHP.
Το API και ο πίνακας ελέγχου του SilentShield δεν είναι γραμμένα σε PHP. Το πρόσθετο WordPress και το PHP SDK τρέχουν μέσα στη δική σας PHP, οπότε για αυτά η ενημέρωση πρέπει να γίνει στον δικό σας διακομιστή. Αφού ενημερώσετε, η συνήθης προστασία από ρομπότ και από ανεπιθύμητα μηνύματα φορμών είναι εξίσου χρήσιμη με πριν· απλώς δεν ήταν ποτέ η απάντηση σε αυτό το πρόβλημα.