Εν συντομία: Το CVE-2026-109619 είναι η δεύτερη ευπάθεια πίσω από το PHP2Shell. Εσωτερική κατάσταση που ανήκει σε ένα αίτημα μπορεί να παραμείνει μετά την αποδέσμευση της μνήμης· ένα μεταγενέστερο αίτημα στον ίδιο worker μπορεί να την αξιοποιήσει προτού επανέλθει στην αρχική της τιμή. Η συνέπεια είναι εκτέλεση κώδικα χωρίς σύνδεση. Λύση: ενημέρωση στις PHP 8.5.12, 8.4.27, 8.3.36 ή 8.2.35 και επανεκκίνηση όλων των workers.
Τι είναι το CVE-2026-109619;
Το CVE-2026-109619 (αναγνωριστικό GitHub GHSA-6wmf-4rv5-p3rp) έχει βαθμολογία CVSS v4.0 9,2. Μαζί με το CVE-2026-109618 αποτελεί το PHP2Shell. Και οι δύο ευπάθειες βρίσκονται στην ίδια την PHP και όχι σε μια εφαρμογή.
Η επίπτωση είναι η ίδια με την αδελφή ευπάθεια: ένας επιτιθέμενος μπορεί να εκτελέσει εξ αποστάσεως, χωρίς κωδικό και χωρίς λογαριασμό χρήστη, κώδικα στον διακομιστή. Η αιτία όμως είναι διαφορετική.
Γιατί είναι επικίνδυνη η παρωχημένη κατάσταση στον worker
Ένας διακομιστής ιστού PHP δεν ξεκινά νέα διεργασία για κάθε αίτημα. Στο PHP-FPM, στον Apache με mod_php, στο LiteSpeed ή στο FrankenPHP, ένας worker εξυπηρετεί διαδοχικά πολλά αιτήματα. Ανάμεσα σε δύο αιτήματα η PHP επαναφέρει την εσωτερική της κατάσταση, ώστε τίποτα από το αίτημα Α να μην περάσει στο αίτημα Β.
Στο CVE-2026-109619 αυτή η επαναφορά δεν γίνεται πλήρως. Σύμφωνα με το php.net, εσωτερική κατάσταση που ανήκει στο αίτημα μπορεί να παραμείνει μετά την αποδέσμευση της μνήμης. Ένα μεταγενέστερο αίτημα στον ίδιο worker μπορεί να χρησιμοποιήσει αυτή την παρωχημένη κατάσταση προτού επανέλθει στην αρχική της τιμή. Απλοποιημένα: κάτι εξακολουθεί να χρησιμοποιείται, ενώ ουσιαστικά δεν ισχύει πια.
Από τη σκοπιά της λειτουργίας αυτό είναι αξιοσημείωτο. Η επαναχρησιμοποίηση των workers είναι επιθυμητή, επειδή κάνει γρήγορους τους διακομιστές ιστού: ένας worker δεν χρειάζεται να επανεκκινείται για κάθε αίτημα, να φορτώνει επεκτάσεις και να δεσμεύει μνήμη. Η ευπάθεια πλήττει επομένως ένα χαρακτηριστικό που έχει πρακτικά κάθε παραγωγική εγκατάσταση PHP. Το php.net δεν αναφέρει διαμόρφωση που να αποφεύγει πλήρως το πρόβλημα· γι' αυτό ο δρόμος περνά από την ενημέρωση.
Λεπτομέρειες για την εκμετάλλευση δεν δημοσιεύουμε. Για τους διαχειριστές μετρά το εξής: κάθε τρόπος λειτουργίας όπου οι workers εξυπηρετούν πολλά αιτήματα πρέπει να βρίσκεται στο στόχαστρο, και αυτοί ακριβώς είναι οι συνήθεις τρόποι λειτουργίας.
Οι δύο ευπάθειες του PHP2Shell σε σύγκριση
| Χαρακτηριστικό | CVE-2026-109618 | CVE-2026-109619 |
|---|---|---|
| Αναγνωριστικό GitHub | GHSA-w8hw-w9fx-j79w | GHSA-6wmf-4rv5-p3rp |
| Βαθμολογία | CVSS v4.0 9,2 | CVSS v4.0 9,2 |
| Αιτία ενεργοποίησης | Out-of-Memory κατά την αρχικοποίηση των δεδομένων του αιτήματος | Η εσωτερική κατάσταση παραμένει μετά την αποδέσμευση |
| Επίπτωση | Εκτέλεση κώδικα χωρίς σύνδεση | Εκτέλεση κώδικα χωρίς σύνδεση |
| Διορθώθηκε σε | 8.5.12, 8.4.27, 8.3.36, 8.2.35 | 8.5.12, 8.4.27, 8.3.36, 8.2.35 |
Επηρεάζονται το PHP-FPM, ο Apache με mod_php, το php-cgi, το FrankenPHP και το LiteSpeed. Τον υψηλότερο κίνδυνο βλέπει η ομάδα της PHP στο mod_php· γιατί, το εξηγούμε στο Γιατί το mod_php φέρει τον υψηλότερο κίνδυνο.
Κλείσιμο του CVE-2026-109619: ενημέρωση και μετά επανεκκίνηση όλων των workers
Ειδικά σε αυτή την ευπάθεια η επανεκκίνηση είναι αποφασιστική. Όσο παλιοί workers εκτελούνται στη μνήμη, ο διακομιστής συνεχίζει να εργάζεται με τον ελαττωματικό κώδικα, ακόμη και αν τα νέα αρχεία βρίσκονται εδώ και καιρό στον δίσκο.
Ελέγξτε την έκδοση και το επίπεδο των πακέτων. Τα ονόματα των πακέτων διαφέρουν ανά διανομή και διεπαφή παρόχου:
php -v
php-fpm8.3 -v # το δυαδικό αρχείο FPM μπορεί να έχει διαφορετική έκδοση από το CLI
apt policy php8.3-fpm # Debian/Ubuntu
dnf info php-fpm # οικογένεια RHEL
rpm -q --changelog php-fpm | grep -i "CVE-2026-109619"
Στη συνέχεια επανεκκινήστε όλες τις επηρεαζόμενες υπηρεσίες:
sudo systemctl restart php8.3-fpm # ανά εγκατεστημένη έκδοση PHP
sudo systemctl restart apache2 # για mod_php· στο RHEL η υπηρεσία ονομάζεται httpd
Αν η διανομή ή ο πάροχός σας εφαρμόζει ένα backport, ο αριθμός έκδοσης που εμφανίζεται ίσως παραμένει ο ίδιος. Τότε μετρούν το changelog του πακέτου και η γραπτή επιβεβαίωση του παρόχου. Έναν έλεγχο βήμα προς βήμα θα βρείτε στο Επανεκκίνηση του PHP-FPM και όλων των workers.
Σημειώστε ημερομηνία και ώρα της επανεκκίνησης. Για τη μεταγενέστερη αξιολόγηση του αν μια επίθεση έγινε πριν ή μετά το patch, αυτή η χρονική στιγμή είναι το σημαντικότερο σημείο αναφοράς.
Τι μένει να γίνει μετά το patch
Ένα patch δεν αποδεικνύει ότι δεν συνέβη τίποτα νωρίτερα. Σύμφωνα με δημοσιεύματα, μια πρώτη απόπειρα επίθεσης παρατηρήθηκε στις 17 Οκτωβρίου, τέσσερις ημέρες πριν από τα patches. Φυλάξτε τα logs του διακομιστή από τις 20 Οκτωβρίου, όπως συνιστά ο ειδικός τύπος, και ελέγξτε τον διακομιστή για ανωμαλίες. Υποδείξεις δίνει η σελίδα Έχω ήδη παραβιαστεί;.
Σκεφτείτε σχετικά την εμβέλεια: σε μια επιτυχή εκτέλεση κώδικα ο επιτιθέμενος έχει τα δικαιώματα της διεργασίας PHP. Μπορεί να διαβάσει ό,τι επιτρέπεται να διαβάσει η εφαρμογή, για παράδειγμα αρχεία διαμόρφωσης με προσβάσεις σε βάσεις δεδομένων ή κλειδιά API. Αν επιβεβαιωθεί ένα περιστατικό, αυτά τα στοιχεία πρόσβασης πρέπει να ανανεωθούν μετά τον καθαρισμό.
Πώς βοηθά συγκεκριμένα η PHP SOS;
Με την υπηρεσία PHP patch υλοποιούμε τη διόρθωση με ανιχνεύσιμο τρόπο:
- Καταγραφή: Ποιες εκδόσεις PHP και τρόποι λειτουργίας εκτελούνται σε ποιον διακομιστή και ποια πηγή πακέτων τα παρέχει;
- Patch: Ενημέρωση από τη σωστή πηγή ή προσωρινά μέτρα σύμφωνα με το php.net, όπου η ενημέρωση εμποδίζεται ακόμη.
- Έλεγχος της επανεκκίνησης: Ελέγχουμε διεργασία προς διεργασία ότι εκτελείται πλέον μόνο η διορθωμένη έκδοση.
- Τεκμηρίωση: Εκδόσεις, επίπεδα πακέτων και χρονικές στιγμές επανεκκίνησης, ώστε να μπορείτε να αποδείξετε την κατάσταση.
Συχνές ερωτήσεις
Τι ξεχωρίζει το CVE-2026-109619 από το CVE-2026-109618;
Το CVE-2026-109618 προκύπτει όταν μια κατάσταση Out-of-Memory διακόπτει το αίτημα στη μέση της αρχικοποίησης. Το CVE-2026-109619 αφορά κατάσταση που μένει στον worker μετά το τέλος ενός αιτήματος. Και τα δύο οδηγούν σε εκτέλεση κώδικα χωρίς σύνδεση και έχουν διορθωθεί στις ίδιες εκδόσεις PHP.
Βοηθά η συχνότερη επανεκκίνηση των workers του PHP-FPM;
Ως υποκατάστατο της ενημέρωσης δεν ενδείκνυται. Το php.net δεν αναφέρει τις συχνότερες επανεκκινήσεις των workers ως προσωρινό μέτρο. Τους workers πρέπει όμως να τους επανεκκινήσετε μετά την ενημέρωση, ώστε να εκτελείται πράγματι η διορθωμένη έκδοση.
Προστατεύομαι από το CVE-2026-109619 με μια ενημέρωση του CMS;
Όχι. Η ευπάθεια βρίσκεται στην PHP και όχι στο WordPress, το Shopware, το TYPO3 ή άλλο σύστημα. Μόνο μια ενημέρωση της PHP ή ένα επιβεβαιωμένο backport του παρόχου την κλείνει.
Υπάρχουν γνωστά ίχνη μιας επίθεσης μέσω του CVE-2026-109619;
Επιβεβαιωμένα Indicators of Compromise δεν έχουν δημοσιευθεί μέχρι στιγμής. Ο εντοπισμός βασίζεται σε ανάλυση συμπεριφοράς, για παράδειγμα νέα αρχεία PHP, ασυνήθιστες εξερχόμενες συνδέσεις ή άγνωστα cronjobs.