Τρέχουσα κατάσταση: PHP2Shell. Δύο κρίσιμες ευπάθειες της PHP (CVSS 9.2) επιτρέπουν κακόβουλο κώδικα χωρίς σύνδεση. Patches από τις 21/10/2026.Τι πρέπει να γίνει τώρα →

php-cgi: μια παρωχημένη λύση με κίνδυνο

Το php-cgi κρύβεται συχνά απαρατήρητο σε παλιές διατάξεις, panels και στα Windows. Δείτε πώς το βρίσκετε, κάνετε patch μετά το PHP2Shell και σχεδιάζετε τη μετάβαση στο PHP-FPM.

Ημερομηνία 5 λεπτά ανάγνωσηςΔιακομιστές και φιλοξενία

Εν συντομία: Το php-cgi είναι ο παλαιότερος τρόπος λειτουργίας της PHP πίσω από έναν διακομιστή ιστού και εξακολουθεί να εκτελείται σε πολλούς διακομιστές, συχνά απαρατήρητο. Η ευπάθεια php-cgi του PHP2Shell επηρεάζει ρητά αυτόν τον τρόπο λειτουργίας. Κάντε patch, τερματίστε όλες τις διεργασίες php-cgi που εκτελούνται και σχεδιάστε τη μετάβαση στο PHP-FPM.

Τι είναι το php-cgi και πού εκτελείται ακόμη

Η PHP υπάρχει σε πολλές παραλλαγές: ως πρόγραμμα γραμμής εντολών, ως μονάδα Apache, ως PHP-FPM και ως php-cgi. Το php-cgi είναι ένα πρόγραμμα που ξεκινά ο διακομιστής ιστού και στο οποίο παραδίδει αιτήματα μέσω CGI ή FastCGI. Χωρίς δική του διαχείριση διεργασιών είναι απλούστερο από το PHP-FPM, αλλά και λιγότερο ελέγξιμο.

Τυπικά σημεία εύρεσης είναι παλαιότερα panels φιλοξενίας, ο Apache με mod_fcgid, δικά σας σενάρια wrapper για πολλές εκδόσεις PHP και η PHP στα Windows με IIS μέσω FastCGI. Σε πρακτορεία και αρχές βρίσκονται επιπλέον διακομιστές που στήθηκαν πριν από χρόνια και από τότε απλώς λειτουργούν.

Η ευπάθεια php-cgi στο PHP2Shell

Το PHP2Shell περιλαμβάνει τις ευπάθειες CVE-2026-109618 και CVE-2026-109619 στην ίδια την PHP, με CVSS v4.0 9,2 η καθεμία. Και οι δύο επιτρέπουν την εκτέλεση κακόβουλου κώδικα χωρίς σύνδεση. Το έργο PHP αναφέρει ρητά το php-cgi ανάμεσα στους επηρεαζόμενους τρόπους λειτουργίας, δίπλα στα PHP-FPM, mod_php, FrankenPHP και LiteSpeed.

Διορθωμένες είναι οι PHP 8.5.12, 8.4.27, 8.3.36 και 8.2.35. Για την PHP 8.1 και παλαιότερες δεν υπάρχουν πλέον επίσημες ενημερώσεις, μόνο ελάχιστα backports πηγαίου κώδικα για τις 7.4, 8.0 και 8.1. Ιδιαίτερα οι διατάξεις php-cgi εκτελούνται πάνω από το μέσο όρο σε παλιές εκδόσεις. Το php-cgi δεν επηρεάζεται επιπλέον για πρώτη φορά: ήδη το 2024 μια ευπάθεια στο php-cgi στα Windows (CVE-2024-4577) προκάλεσε αίσθηση. Παρωχημένες λύσεις αυτού του είδους αξίζουν γι' αυτό ιδιαίτερη προσοχή.

Εντοπισμός του php-cgi στον διακομιστή

Οι παρακάτω εντολές μόνο διαβάζουν και βοηθούν να εντοπιστεί το php-cgi. Οι διαδρομές και τα ονόματα μονάδων είναι παραδείγματα.

# Διεργασίες php-cgi που εκτελούνται, με ώρα εκκίνησης και χρήστη
ps -eo pid,lstart,user,cmd | grep -E 'php-cgi|php[0-9.]*-cgi' | grep -v grep

# Εγκατεστημένα προγράμματα php-cgi
ls /usr/bin/php*-cgi /usr/lib/cgi-bin/php* 2>/dev/null

# Apache: είναι φορτωμένο το mod_fcgid ή το mod_cgi;
apache2ctl -M 2>/dev/null | grep -Ei 'fcgid|cgi'
grep -RniE 'FcgidWrapper|AddHandler.*php|Action.*php' /etc/apache2 /etc/httpd 2>/dev/null

Αν βρείτε καταχωρίσεις FcgidWrapper ή handlers που δείχνουν σε πρόγραμμα php-cgi, εκτελείται αυτός ο τρόπος λειτουργίας. Ελέγξτε για κάθε πρόγραμμα που βρέθηκε την έκδοση με -v. Στα πακέτα διανομής το patch το τεκμηριώνει το changelog με τους αριθμούς CVE, επειδή τα backports συχνά δεν αλλάζουν τον αριθμό έκδοσης.

Patch και τερματισμός όλων των διεργασιών

Εφαρμόστε την ενημέρωση μέσω του διαχειριστή πακέτων ή της πηγής από την οποία προέρχεται το php-cgi. Στη συνέχεια πρέπει να εξαφανιστούν όλες οι διεργασίες php-cgi που εκτελούνται. Με το mod_fcgid ο Apache κρατά διεργασίες για κάποιο διάστημα· μια πλήρης επανεκκίνηση του Apache τις τερματίζει.

# Πλήρης επανεκκίνηση του Apache (Debian/Ubuntu ή οικογένεια RHEL)
systemctl restart apache2   # ή: systemctl restart httpd

# Έλεγχος: υπάρχουν ακόμη διεργασίες php-cgi παλαιότερες από την ενημέρωση;
ps -eo pid,lstart,cmd | grep -E 'php-cgi' | grep -v grep

Αν το php-cgi εκτελείται μέσω δικού του διαχειριστή διεργασιών ή υπηρεσίας panel, επανεκκινήστε αυτό. Στα Windows με IIS ανακυκλώνετε τα application pools, δείτε τη σελίδα PHP στα Windows και στο IIS.

Δράστε άμεσα

Αν το php-cgi εκτελείται με PHP 8.1 ή παλαιότερη σε διακομιστή προσβάσιμο δημόσια, λείπει ένα επίσημο patch. Εφαρμόστε αμέσως τα προσωρινά μέτρα και εξετάστε, σύμφωνα με τη σύσταση του BSI (Ομοσπονδιακή Υπηρεσία Ασφάλειας Πληροφοριών της Γερμανίας), να αποσυνδέσετε προσωρινά τον διακομιστή από το δίκτυο.

Προσωρινά μέτρα στο php-cgi

Το php.net συνιστά προσωρινά μέτρα που δεν προσφέρουν πλήρη προστασία. Στο php-cgi οι τιμές ανήκουν στο php.ini που φορτώνει το αντίστοιχο πρόγραμμα ή στη διαμόρφωση του διακομιστή. Αρχεία .user.ini και ini_set() δεν αρκούν για το session.upload_progress.enabled σύμφωνα με το php.net.

; php.ini της εγκατάστασης php-cgi
session.upload_progress.enabled = 0
post_max_size = 8M
upload_max_filesize = 6M

Με λειτουργία upload το php.net αναφέρει post_max_size = 32M. Στην PHP 8.5 προστίθεται το fatal_error_backtraces=0. Τα όρια μνήμης τα ορίζετε μέσω cgroups για την υπηρεσία του διακομιστή ιστού και όχι μέσω RLIMIT_AS ή RLIMIT_DATA. Στη συνέχεια επανεκκινήστε όλες τις διεργασίες.

Ο δρόμος προς το PHP-FPM

Μακροπρόθεσμα το php-cgi δεν είναι καλή επιλογή. Το PHP-FPM προσφέρει pools ανά ιστότοπο, δικούς χρήστες, όρια ανά pool, σελίδες κατάστασης και ελεγχόμενες επανεκκινήσεις. Η μετάβαση προγραμματίζεται συνήθως εύκολα: εγκατάσταση του PHP-FPM, δημιουργία pools, μετάβαση του διακομιστή ιστού σε FastCGI προς το PHP-FPM, αφαίρεση των σεναρίων wrapper. Πώς μοιάζει μια σωστή δομή, δείχνει η σελίδα Ασφάλεια Nginx με PHP-FPM. Αν εκτελείται επιπλέον μια παλιά έκδοση PHP, συνδέστε τη μετάβαση με την αναβάθμιση.

Μέχρι να γίνει η μετάβαση, ελέγξτε κριτικά την υπάρχουσα διαμόρφωση. Ο διακομιστής ιστού πρέπει να παραδίδει στο php-cgi μόνο αρχεία με την κατάληξη .php και όχι διαδρομές που δείχνουν σε ανύπαρκτα αρχεία. Στους καταλόγους uploads δεν επιτρέπεται να είναι δυνατή η εκτέλεση PHP. Τα σενάρια wrapper που φορτώνουν ανά ιστότοπο δικό τους php.ini ελέγξτε αν αυτά τα αρχεία ακυρώνουν ξανά τις προσωρινές τιμές. Αν ένα πρόγραμμα php-cgi βρίσκεται απευθείας σε δημόσια προσβάσιμο κατάλογο όπως το cgi-bin, πρέπει να αφαιρεθεί από εκεί. Τέτοιες παρωχημένες λύσεις προέρχονται συχνά από οδηγίες εγκατάστασης παλαιότερων ετών και απλώς ξεχνιούνται σε μεταγενέστερες αλλαγές. Τεκμηριώστε κάθε εύρημα με διαδρομή και σκοπό, ώστε η μεταγενέστερη μετατροπή να μην παραλείψει τίποτα.

Παραμένει σημαντικό: ένα patch δεν αφαιρεί κακόβουλο λογισμικό που εισήχθη νωρίτερα. Διατηρήστε τα logs από τις 20/10/2026.

Πώς βοηθά συγκεκριμένα το PHP SOS;

  • Εντοπίζουμε εγκαταστάσεις php-cgi, wrappers και handlers και τα αντιστοιχίζουμε στους ιστοτόπους.
  • Κάνουμε patch, τερματίζουμε όλες τις παλιές διεργασίες και τεκμηριώνουμε την κατάσταση.
  • Για την PHP 8.1 και παλαιότερες σχεδιάζουμε μαζί σας τη μετάβαση σε υποστηριζόμενη έκδοση PHP.
  • Στο πλαίσιο της σκλήρυνσης διακομιστών αντικαθιστούμε το php-cgi με PHP-FPM με ξεχωριστά pools.

Συχνές ερωτήσεις

Χρησιμοποιώ php-cgi χωρίς να το γνωρίζω;

Συμβαίνει συχνότερα απ' ό,τι νομίζει κανείς. Παλαιότερα panels, διατάξεις FastCGI με mod_fcgid και η PHP στα Windows με IIS ξεκινούν συχνά την PHP ως php-cgi. Μια λίστα διεργασιών ή το Server API στο phpinfo το δείχνει αξιόπιστα.

Είναι το FastCGI το ίδιο με το php-cgi;

Όχι ακριβώς. Το FastCGI είναι ένα πρωτόκολλο. Και το PHP-FPM και το php-cgi μπορούν να μιλούν FastCGI, το php-cgi όμως είναι το παλαιότερο, απλούστερο πρόγραμμα, χωρίς pools και διαχείριση διεργασιών. Το PHP2Shell επηρεάζει ρητά το php-cgi.

Τι σημαίνει κλασικό CGI στην PHP;

Στο κλασικό CGI ο διακομιστής ιστού ξεκινά για κάθε αίτημα μια νέα διεργασία PHP. Αυτό είναι αργό και σήμερα σπάνιο. Συχνότερο είναι το php-cgi πίσω από mod_fcgid ή FastCGI, όπου οι διεργασίες εξυπηρετούν πολλά αιτήματα.

Πρέπει να επανεκκινήσω κάτι μετά την ενημέρωση;

Ναι. Στις διατάξεις FastCGI οι διεργασίες php-cgi συνεχίζουν να εκτελούνται για κάποιο διάστημα. Επανεκκινήστε τον διακομιστή ιστού ή τον διαχειριστή διεργασιών και ελέγξτε ότι καμία διεργασία php-cgi δεν είναι παλαιότερη από την ενημέρωση.

Πηγές

Άμεση επικοινωνία

Κάθε ώρα μετράει. Γράψτε μας τώρα.

Περιγράψτε σύντομα το σύστημα, την έκδοση PHP και ό,τι παρατηρείτε. Θα επικοινωνήσουμε μαζί σας, θα διευκρινίσουμε την κατάσταση και θα εργαστούμε εξ αποστάσεως μέχρι το περιστατικό να κλείσει και να τεκμηριωθεί.

Άμεση βοήθεια