PHP2Shell — Δύο Critical Pre-Auth RCE στο PHP (CVSS 9.2) και Επείγον Patch Σήμερα
Δύο ευπάθειες pre-auth Remote Code Execution (CVE-2026-109618 / CVE-2026-109619,
CVSS v4.0: 9.2) διέρρηξαν πριν το coordinated disclosure. Root cause: heap use-after-free
στον handler του session.upload_progress — επηρεάζει PHP 5.4.0 έως 8.5.x, ενώ τα EOL branches
δεν θα πάρουν ποτέ patch. PoCs δημόσια σε ώρες, επείγον patch προγραμματισμένο για σήμερα 21/10.
TL;DR — Τι να κάνεις ΤΩΡΑ (3 βήματα)
- Patch μόλις βγει: νέες διορθωτικές εκδόσεις PHP στα ενεργά branches 8.2–8.5 αναμένονταν ~14:00 UTC σήμερα. Δες php.net.
- Δεν μπορείς να κάνεις patch; Απενεργοποίησε το upload progress:
session.upload_progress.enabled = 0στο php.ini (βλ. §8) και μπλόκαρε multipart POSTs στο WAF. - Κυνήγησε ήδη απόψε: grep στα logs για
PHP_SESSION_UPLOAD_PROGRESSκαι ύποπτα multipart POSTs (βλ. §9).
1. Περίληψη (Executive Summary)
Στις 20 Οκτωβρίου 2026, λεπτομέρειες για δύο critical ευπάθειες του PHP διέρρευσαν δημόσια
πριν από το προγραμματισμένο coordinated disclosure. Πρόκειται για δύο
pre-auth Remote Code Execution (RCE) ευπάθειες — ο επιτιθέμενος δεν χρειάζεται λογαριασμό, συνθηματικό ή ρόλο —
με καταχωρημένα IDs CVE-2026-109618 και CVE-2026-109619 και βαθμολογία
CVSS v4.0: 9.2 (Critical).
Η κοινότητα τους βάφτισε συλλογικά «PHP2Shell» — PHP σε shell: από ένα απλό POST request στην εκτέλεση εντολών στον server. Η PHP Team αντέδρασε με έκτακτο security release προγραμματισμένο για τις 21 Οκτωβρίου, γύρω στις 14:00 UTC, ενώ το php.net υποχώρησε προσωρινά κάτω από την πίεση της κίνησης της ανακοίνωσης.
session.upload_progress
είναι ενεργό από προεπιλογή σε κάθε σύγχρονη εγκατάσταση PHP και το χτυπιέται πριν από την αυθεντικοποίηση.
Συνδυάζεται δε με κοινότατα λάθη εφαρμογών (π.χ. Local File Inclusion) για πλήρη RCE.
2. Τι είναι το PHP2Shell
«PHP2Shell» είναι η ονομασία που επικράτησε στην κοινότητα ασφαλείας για το ζεύγος των ευπαθειών
CVE-2026-109618 / CVE-2026-109619: δύο ξεχωριστά καταχωρημένα αλλά συναφή ευρήματα που
οδηγούν και τα δύο σε unauthenticated RCE σε προεπιλεγμένες ρυθμίσεις PHP.
| Στοιχείο | Λεπτομέρεια |
|---|---|
| CVEs | CVE-2026-109618 & CVE-2026-109619 |
| Τύπος | Pre-Auth Remote Code Execution (δεν απαιτείται αυθεντικοποίηση) |
| Βαθμολογία | CVSS v4.0: 9.2 — Critical |
| Root cause | Heap use-after-free στον handler session.upload_progress (php_session_rfc1867_callback, ext/session/session.c) |
| Επηρεάζει | PHP 5.4.0 έως 8.5.x (η ρύθμιση εισήχθη στην 5.4) |
| Προεπιλογή | Ενεργό: session.upload_progress.enabled = 1 είναι default |
| Patch | Έκτακτο release 21/10/2026 ~14:00 UTC για branches 8.2–8.5 |
| Επιβεβαίωση | watchTowr (ανέπαψε την ευπάθεια), Huntress, Florian Roth (threat intel) |
2.1 Τι είναι το session.upload_progress
Πρόκειται για feature του PHP από την έκδοση 5.4 (2012): όταν ο χρήστης ανεβάζει αρχείο
μέσω multipart/form-data φόρμας, η PHP μπορεί να γράφει στην session την πρόοδο του upload,
ώστε μια JavaScript μπάρα να τη δείχνει ζωντανά. Ο μηχανισμός ενεργοποιείται όταν το POST περιλαμβάνει
το ειδικό πεδίο PHP_SESSION_UPLOAD_PROGRESS.
3. Τεχνική Ανάλυση: Το Heap Use-After-Free
Η ρίζα της ευπάθειας βρίσκεται στο php_session_rfc1867_callback μέσα στο
ext/session/session.c του PHP core — τον κώδικα που διαχειρίζεται το upload progress.
Κατά την επεξεργασία multipart uploads, ο handler δουλεύει με raw δείκτες σε zval buckets
(τις εσωτερικές δομές μεταβλητών του PHP Engine). Σε συγκεκριμένες ακολουθίες,
η μνήμη απελευθερώνεται ενώ εξακολουθεί να αναφέρεται — ένα κλασικό
use-after-free.
3.1 Γιατί ένα UAF είναι τόσο σοβαρό
Σε ένα use-after-free, ο επιτιθέμενος μπορεί να επανακαταλάβει την ελεύθερη μνήμη με δικά του δεδομένα (heap grooming): στέλνοντας στοχευμένα POST bodies, γεμίζει τον allocator με ελεγχόμενο περιεχόμενο που καταλαμβάνει το freed slot. Όταν ο handler γράψει/διαβάσει ξανά από τον stale δείκτη, διαχειρίζεται δεδομένα του επιτιθέμενου σαν να ήταν εσωτερική δομή του PHP — συμπεριλαμβανομένων function pointers που μπορεί να παραποιήσει, οδηγώντας στην εκτέλεση αυθαίρετου κώδικα στη διεργασία του PHP-FPM.
3.2 Το χρονικό παράθυρο της διαρροής
Το χειρότερο σενάριο coordinated disclosure υλοποιήθηκε: οι λεπτομέρειες και PoC εκμεταλλεύσεις βγήκαν δημόσια πριν υπάρχει patch διαθέσιμο. Από εκεί και πέρα, ο χρονικός «διαγωνισμός» ανάμεσα σε defenders και attackers ξεκίνησε αμέσως — με τα PoCs να πολλαπλασιάζονται στο GitHub μέσα σε ώρες (βλ. §7).
4. Χρονολόγιο
Λεπτομέρειες των δύο ευπαθειών βγαίνουν δημόσια πριν από το προγραμματισμένο release. Μέσα σε ώρες εμφανίζονται PoC repos στο GitHub (Zer061/CVE-2026-109618 ★29, ikow/php2shell-poc ★11, eness/php2shell-PoC ★5) με verified αλυσίδες εκμετάλλευσης.
Η PHP Team δημοσιεύει επίσημη ανακοίνωση για επείγουσες διορθώσεις. Ειδησιογραφικά outlets (BleepingComputer, Ars Technica, Aikido, SecurityWeek, Cyber Daily) καλύπτουν την εξέλιξη μέσα στη νύχτα.
Η watchTowr επιβεβαιώνει ότι ανέπαψε την ευπάθεια (CVE-2026-109618), η Huntress κάνει own telemetric checks και ο Florian Roth (threat intel) παρακολουθεί το θέμα. Μέσα στη νύχτα το php.net υποχωρεί προσωρινά από την κίνηση.
Κυκλοφορούν Nginx/Apache κανόνες αποκλεισμού (Pasquale Pillitteri), μαζί με defensive repos: mikensec/php2shell-lab, yetDevs/php2shell-triage, ghostinthecable/php-hunting. Ο Mattias Geniar (ma.ttias.be) δημοσιεύει early mitigations.
Τη στιγμή συγγραφής του άρθρου, το patch δεν έχει δημοσιευτεί. Τα PoCs είναι δημόσια εδώ και ~12–16 ώρες. Ο χρονικός «διαγωνισμός» τρέχει.
Σύμφωνα με το κοινοποιημένο χρονοδιάγραμμα, νέες διορθωτικές εκδόσεις για τα ενεργά branches. Ο υποστηρικμένος κώδικας θα διορθωθεί — τα EOL branches όχι ποτέ.
5. Αλυσίδες Εκμετάλλευσης (Attack Chains)
Οι ερευνητές που ανέλυσαν τα PoCs (μεταξύ αυτών το εργαστήριο του Qi Deng στο ikow/php2shell-poc) τεκμηρίωσαν πέντε διαφορετικές αλυσίδες — από το «απλό» session poisoning έως πλήρες RCE. Παρακάτω τις περιγράφουμε εννοιολογικά, χωρίς κώδικα εκμετάλλευσης:
| # | Αλυσίδα | Προαπαίτηση | Αποτέλεσμα | Κατάσταση |
|---|---|---|---|---|
| 1 | Session File Injection + LFI | upload_progress = On (default) + LFI στην εφαρμογή | RCE | Verified |
| 2 | UAF στο var_destroy → handler overwrite | Στόχευση freed slot με groomed data | Υπεργραφή handler → RCE | ASAN-confirmed |
| 3 | Handler mismatch → deserialization POP | Ασυνέπεια serializer/handler κατάσταση | POP gadget → RCE | Verified |
| 4 | Session fixation μέσω POST | Bypass του session.use_only_cookies (php-src PR #22113) |
Κατάληψη session ταυτότητας | Ερευνητικό |
| 5 | Serializer δεν reset στο RSHUTDOWN | PHP-FPM, διαδοχικά requests | Διαρροή κατάστασης μεταξύ requests | Ερευνητικό |
5.1 Η πιο «εφικτή» αλυσίδα: Session Injection + LFI
Η αλυσίδα 1 είναι αυτή που ανησυχεί περισσότερο τους defenders, γιατί δεν απαιτεί memory corruption: το upload_progress επιτρέπει στον επιτιθέμενο να γράψει ελεγχόμενο περιεχόμενο μέσα στο αρχείο session. Αν η εφαρμογή έχει ένα LFI (Local File Inclusion) — ένα από τα πιο συνηθισμένα λάθη στον κόσμο της PHP — μπορεί να «συμπεριλάβει» το session αρχείο και το περιεχόμενο του επιτιθέμενου να εκτελεστεί ως κώδικας.
6. Ποιοι Κινδυνεύουν
Η PHP τροφοδοτεί ακόμη το συντριπτικό μέρος του web (κατά τη W3Techs, ~74–75% των sites με γνωστή server-side γλώσσα). Επειδή το upload_progress είναι default-On και η επίθεση pre-auth, το εύρος στόχων είναι σχεδόν κάθε PHP server που δέχεται POST requests.
| Έκδοση PHP | Κατάσταση υποστήριξης | Θα πάρει patch; | Ενέργεια |
|---|---|---|---|
| PHP 8.5.x | Ενεργό branch | ✅ Ναι (21/10) | Ενημέρωση μόλις βγει |
| PHP 8.4.x | Ενεργό branch | ✅ Ναι (21/10) | Ενημέρωση μόλις βγει |
| PHP 8.3.x | Ενεργό branch | ✅ Ναι (21/10) | Ενημέρωση μόλις βγει |
| PHP 8.2.x | Ενεργό branch (security-only) | ✅ Ναι (21/10) | Ενημέρωση μόλις βγει |
| PHP 8.1.x | EOL | ❌ Όχι ποτέ | Άμεση αναβάθμιση ή απομάκρυνση |
| PHP 8.0.x | EOL | ❌ Όχι ποτέ | Άμεση αναβάθμιση ή απομάκρυνση |
| PHP 7.x | EOL | ❌ Όχι ποτέ | Άμεση αναβάθμιση ή απομάκρυνση |
| PHP 5.4–5.6 | EOL | ❌ Όχι ποτέ | Άμεση αναβάθμιση ή απομάκρυνση |
6.1 Η ευρωπαϊκή οδηγία: «κατέβασε το site offline»
Σύμφωνα με ρεπορτάζ της Reuters, ευρωπαϊκοί αξιωματούχοι κυβερνοασφάλειας συμβούλευσαν οργανισμούς που δεν μπορούν να διορθώσουν έγκαιρα τα συστήματά τους να τα αποσύρουν προσωρινά από το internet μέχρι να διορθωθούν. Πρόκειται για απευθείας αναγνώριση ότι το παράθυρο πριν τη μαζική εκμετάλλευση είναι κρίσιμο — και ότι ένα site εκτός αέρα είναι φθηνότερο από ένα site με webshell.
7. Τι Συμβαίνει Τώρα: Το Οικοσύστημα των PoCs
Μέσα σε ~12 ώρες από τη διαρροή, το GitHub γέμισε PoC repos και defensive tools — ενδεικτικά (λίστα τη στιγμή συγγραφής, τα αστέρια αλλάζουν ραγδαία):
| Repo | Τύπος | Τι περιέχει |
|---|---|---|
| Zer061/CVE-2026-109618 ★29 | PoC bundle | Δουλειά των J4ck3LSyN, Andrew Dorman (@acd421) και Arch&Yuki — διορθωμένα offsets για Debian/Ubuntu binaries. Writeup |
| ikow/php2shell-poc ★11 | Research + PoC | Επίσημες αλυσίδες 1–3 (§5) τεκμηριωμένες. Writeup του Qi Deng στο Substack. |
| eness/php2shell-PoC ★5 | PoC RCE | Αυτόνομο PoC για τις δύο CVEs. |
| mikensec/php2shell-lab | Defensive | Offline lab για ανάλυση του PoC και συγγραφή detection rules. |
| yetDevs/php2shell-triage | Defensive | Tool triage: audit Plesk setup, ανίχνευση ύποπτων child-processes. |
| ghostinthecable/php-hunting | Defensive | Hunter για Apache logs — εύρεση σημαδιών απόπειρας εκμετάλλευσης. |
7.1 «Mass exploitation looms»
Ο τίτλος του SecurityWeek αποτυπώνει την κατάσταση: «PHP2Shell: Mass Exploitation Looms for Leaked Critical PHP Flaws». Τη στιγμή συγγραφής δεν έχουμε επιβεβαιωμένα εκτεταμένα incident σε παραγωγικά συστήματα — αλλά το “looms” είναι η λέξη-κλειδί: δημόσια PoCs + pre-auth + default-On ρύθμιση = κύμα scanning/recon που είναι σχεδόν βέβαιο. Ιστορικά (Log4Shell, ProxyShell, Spring4Shell), το παράθυρο ανάμεσα στο δημόσιο PoC και τη μαζική σάρωση μετριέται σε ώρες, όχι μέρες.
8. Playbook Προστασίας
8.1 Άμεσες ενέργειες (0–24 ώρες)
- Πάρε το patch μόλις βγει για τα branches 8.2–8.5 και κάνε restart το PHP-FPM/Apache module (το σφάλμα ζει στη μνήμη της διεργασίας).
- Αν ΔΕΝ μπορείς να κάνεις patch: απενεργοποίησε το upload progress (κάτω) και σκέψου αποσύνδεση από το internet (βλ. ευρωπαϊκή οδηγία, §6.1).
- Κυνήγησε ήδη: έλεγξε τα logs με βάση το §9 πριν το patch φτάσει σε εσένα.
- Απογραφή: βρες ΠΟΥ τρέχει PHP και σε ποια έκδοση (βλ. §15.1) — συμπεριλαμβανομένων servers που «λοιποί» διαχειρίζονται.
- Ενημέρωσε ομάδες: dev, hosting, SOC/on-call.
8.2 Early mitigation: κλείσε το upload_progress
; php.ini (ή conf.d/*.ini) — επανεκκίνηση PHP-FPM μετά
session.upload_progress.enabled = 0
# Επαλήθευση σε CLI
php -i | grep -i upload_progress
# Επιθυμητό αποτέλεσμα: session.upload_progress.enabled => 0
8.3 WAF level: μπλόκαρε multipart POSTs (προσωρινά)
# NGINX (στον server block που σερβίρει PHP):
# ΠΡΟΣΟΧΗ: κόβει και νόμιμα uploads! Χρησιμοποίησε μόνο
# σε endpoints χωρίς upload ανάγκες, ή scope-άρισέ το ανά location.
if ($content_type ~* "multipart/form-data") {
return 403;
}
Έχουν κυκλοφορήσει και πιο προσεγμένα Nginx/Apache rule-sets από την κοινότητα
(ενδεικτικά άρθρα του Pasquale Pillitteri) που στοχεύουν το pattern PHP_SESSION_UPLOAD_PROGRESS.
Αν έχεις ModSecurity, φτιάξε rule που κόβει POST bodies/params που περιέχουν
PHP_SESSION_UPLOAD_PROGRESS εκτός ρητά επιτρεπόμενων εφαρμογών.
8.4 Σκλήρυνση sessions (καλό μέτρο — μειώνει τις αλυσίδες 4–5)
; php.ini
session.use_only_cookies = 1
session.use_strict_mode = 1
; και σκέψου: session.upload_progress.prefix / cleanup_freq review
8.5 Βραχυπρόθεσμες ενέργειες (1–7 ημέρες)
- Χαρτογράφηση EOL PHP σε κάθε υποδομή (production, staging, forgotten boxes).
- Σχέδιο migration σε 8.3+ για ό,τι μείνει σε 8.1 ή παλαιότερο — με χρονοδιάγραμμα και owner.
- Deployment των defensive tools (php2shell-triage, php-hunting) στα κρίσιμα hosts.
- Ενημέρωσε hosting/provider σου και δώσε τους το κείμενο §8.2 αν δεν το έχουν κάνει.
- Θέσε κανόνα alerting για multipart traffic anomalies στα PHP endpoints.
8.6 Μακροπρόθεσμα (1–4 εβδομάδες)
- Policy: υποστηριζόμενα PHP branches μόνο — nothing older than N-1 in production.
- Patch SLA για κρίσιμα PHP CVEs (π.χ. ≤48h για RCE).
- Review session usage στις εφαρμογές σου: ποιος χρειάζεται πραγματικά upload progress;
- WAF rules permanent (περιορισμός multipart ανά endpoint, όχι blanket).
- Tabletop exercise: «PHP2Shell hits 47 servers at 03:00» — ποιος κάνει τι;
9. Ανίχνευση & Δείγματα IOCs
Τι να ψάξεις στα logs σου — τόσο πριν όσο και μετά το patch:
9.1 Το πιο θορυβώδες σημάδι: PHP_SESSION_UPLOAD_PROGRESS
# Apache/Nginx access logs — ύποπτα multipart POSTs
grep -i "PHP_SESSION_UPLOAD_PROGRESS" /var/log/apache2/access.log
grep -i "PHP_SESSION_UPLOAD_PROGRESS" /var/log/nginx/access.log
# ModSecurity audit logs
grep -ri "PHP_SESSION_UPLOAD_PROGRESS" /var/log/modsec_audit/
# FPM error/slow logs
grep -ri "upload_progress" /var/log/php*-fpm*
Το PHP_SESSION_UPLOAD_PROGRESS είναι νόμιμο για εφαρμογές με upload progress bars —
αλλά αν δεν έχεις τέτοιες εφαρμογές και το βλέπεις στα logs, κάθε εμφάνιση
είναι ύποπτη απόπειρα. Πρόσεξε και ύποπτα POST bodies με πολλά κενά/μη-unicode
γέμισμα (heap grooming pattern) σε endpoints με sessions.
9.2 Σημάδια επιτυχημένης παραβίασης
- Απρόσμενες child processes του PHP-FPM (sh, bash, python, curl, wget, nc) — κλασικό RCE footprint.
- Νέα/τροποποιημένα αρχεία σε writable directories (uploads, tmp, cache) με PHP περιεχόμενο.
- Εξόδυνες συνδέσεις από PHP worker processes (reverse shell patterns).
- Ανωμαλίες σε session αρχεία: ασυνήθιστα μεγάλα, με μη-κανονικά strings στο εσωτερικό τους.
- Απότομη αύξηση POST requests στο ίδιο endpoint από διαφορετικές IPs (recon wave).
10. Γιατί είναι Σημαντικό
- Υποδομή δεν ευθύνεται η εφαρμογή: η ευπάθεια είναι στο PHP core, όχι σε plugin/framework. Δεν «ανήκει» στον developer — αλλά το RCE ανήκει στον server.
- Pre-auth + default-On: δεν χρειάζεται λάθος configuration για να εκτεθείς. Χρειάζεσαι μόνο να τρέχεις PHP με sessions.
- Ο μόνιμος κατάλογος EOL: το τεράστιο long-tail των PHP 5.x/7.x/8.0/8.1 installations δεν θα διορθωθεί ποτέ. Η ανανέωση αυτών είναι η πραγματική δουλειά των επόμενων εβδομάδων.
- Διαρροή πριν το patch: το χειρότερο σενάριο disclosure. Η διαφορά ανάμεσα σε «sophisticated APT» και «script kiddie wave» είναι απλά 24–48 ώρες.
- LFI as force multiplier: η αλυσίδα 1 δείχνει πώς ένα «μικρό» LFI γίνεται πλήρες RCE όταν το core σου σερβίρει attack surface. Defense in depth, γιατί τα layers συνδυάζονται.
- Institutional response: η ευρωπαϊκή οδηγία «κατέβασε το offline αν δεν μπορείς να διορθώσεις» είναι σπάνια τόσο blunt — και δείχνει πού πηγαίνουν οι μαζικές ζώνες κινδύνου.
Συχνές Ερωτήσεις (FAQ)
Το κοινοποιημένο πρόγραμμα έλεγε 21 Οκτωβρίου 2026, ~14:00 UTC (17:00 ώρα Ελλάδας), για τα ενεργά branches 8.2–8.5. Τη στιγμή της δημοσίευσης (~09:35 UTC) δεν είχε ακόμη εμφανιστεί — έλεγξε το php.net για την τρέχουσα κατάσταση.
Αν τρέχεις PHP 5.4.0 έως 8.5.x με sessions και δέχεσαι POST requests, θεωρητικά ναι: το upload_progress είναι default-On. Έλεγξε με php -v και php -i | grep upload_progress.
Απενεργοποίησε το upload_progress, μπλόκαρε multipart POSTs στο WAF, σκλήρυνε τα sessions και σχεδίασε άμεση αναβάθμιση. Αν το σύστημα είναι κρίσιμο και αδύνατο να διορθωθεί, η ευρωπαϊκή σύσταση (Reuters) είναι να το αποσύρεις προσωρινά από το internet.
Καλύπτουν τον κύριο pre-auth δρόμο, αλλά δεν υπάρχει επίσημη επιβεβαίωση ότι μπλοκάρουν όλες τις αλυσίδες. Το patch είναι η μόνη πλήρης λύση — τα mitigations αγοράζουν χρόνο.
Δεν έχουμε επιβεβαιωμένα μαζικά incident τη στιγμή συγγραφής — αλλά τα PoCs είναι δημόσια και watchTowr/Huntress/Florian Roth προειδοποιούν. Πρόσεξε το τοπίο σαν ενεργό zero-day.
Feature του PHP (από την 5.4) που γράφει την πρόοδο multipart uploads στην session, ώστε UI progress bars να τη δείχνουν. Ενεργοποιείται με το πεδίο PHP_SESSION_UPLOAD_PROGRESS και είναι On από προεπιλογή — γι' αυτό η ευπάθεια είναι τόσο ευρεία.
13. Γλωσσάρι
| Όρος | Επεξήγηση |
|---|---|
| Pre-Auth RCE | Εκτέλεση κώδικα στον server χωρίς αυθεντικοποίηση (χωρίς λογαριασμό/συνθηματικό). |
| Heap Use-After-Free | Ευπάθεια μνήμης: χρήση δείκτη μετά την απελευθέρωση της μνήμης που δείχνει — ο επιτιθέμενος «ξανανοικιάζει» το freed slot με δικά του δεδομένα. |
| session.upload_progress | Feature PHP (5.4+) που καταγράφει την πρόοδο multipart uploads στην session. Default: On. |
| PHP_SESSION_UPLOAD_PROGRESS | Το POST πεδίο που ενεργοποιεί τον μηχανισμό — και το fingerprint στα logs. |
| LFI | Local File Inclusion — η εφαρμογή συμπεριλαμβάνει αρχεία με βάση είσοδο χρήστη. |
| POP gadget | Αλυσίδα αντικειμένων σε deserialization που οδηγεί σε εκτέλεση κώδικα. |
| Session fixation | Επιβολή γνωστού session ID στον θύμα ώστε ο επιτιθέμενος να «μοιράζεται» την ταυτότητά του. |
| PHP-FPM | FastCGI Process Manager — ο worker που εκτελεί τα PHP scripts (εκεί ζει το RCE). |
| EOL branch | Έκδοση που δεν λαμβάνει πια security updates από την upstream. |
| Coordinated disclosure | Συμφωνημένο χρονοδιάγραμμα δημοσίευσης ευπάθειας μαζί με patch. |
| ASAN | AddressSanitizer — εργαλείο που εντοπίζει μνημονικές ευπάθειες σε runtime (μάρτυρας του UAF). |
| WAF | Web Application Firewall — φίλτρο αιτημάτων μπροστά από την εφαρμογή. |
15. Παράρτημα: Εντολές Ελέγχου
15.1 Απογραφή εκδόσεων PHP
# Ποια έκδοση τρέχει στο CLI (πρόσεξε: CLI ≠ FPM runtime!)
php -v
# Ποια έκδοση τρέχει ΜΕΣΑ στο web (FPM/module):
echo "<?php phpinfo();" > /var/www/html/info.php
# …άνοιξε το info.php μέσω browser, δες "PHP Version",
# και ΣΒΗΣΕ ΤΟ αρχείο αμέσως μετά.
# Σε hosting farms — βρες όλες τις εκδόσεις που ζουν:
ls /etc/php/ # Debian/Ubuntu: φάκελοι ανά branch
find / -name "php-fpm" -type f 2>/dev/null
15.2 Έλεγχος ρύθμισης upload_progress
php -i | grep -i upload_progress
# Επιθυμητό (mitigation):
# session.upload_progress.enabled => 0
# Αν είναι 1 και δεν μπορείς να πιάσεις patch:
# γράψε στο php.ini: session.upload_progress.enabled = 0
# μετά: systemctl restart php8.*-fpm
15.3 Κυνηγητό στα logs
# Ύποπτα multipart POSTs με session progress πεδίο:
grep -i "PHP_SESSION_UPLOAD_PROGRESS" /var/log/nginx/access.log
# Ύποπτα child processes του FPM (τυπικά RCE footprints):
ps aux | grep -E "php-fpm.*(sh|bash|python|curl|nc) "
# Πρόσφατα τροποποιημένα .php σε writable dirs:
find /var/www -name "*.php" -mtime -2 -ls
15.4 Post-patch checklist
# 1. Ενημέρωση
sudo apt update && sudo apt install --only-upgrade php8.\*
# 2. Επιβεβαίωση έκδοσης
php -v
# 3. Restart FPM (η μνήμη της διεργασίας πρέπει να ξαναπέσει)
sudo systemctl restart php8.4-fpm php8.3-fpm
# 4. Smoke test εφαρμογών (login, upload, session flows)
Πηγές & Διαφάνεια
- php.net — επίσημη ανακοίνωση «Upcoming Critical PHP Security Release» (20/10/2026, φάκελος ειδήσεων: archive/2026)
- PoC bundle Zer061/CVE-2026-109618 + writeup jackalsyn.com (J4ck3LSyN, A. Dorman, Arch&Yuki)
- ikow/php2shell-poc — verified αλυσίδες εκμετάλλευσης (Qi Deng, writeup στο Substack)
- eness/php2shell PoC — αυτόνομο RCE PoC
- Defensive tools: php2shell-lab · php2shell-triage · php-hunting
- php-src PR #22113 — session fixation hardening (ερευνητικό εύρημα)
- NVD: CVE-2026-109618 · NVD: CVE-2026-109619
- ma.ttias.be (Mattias Geniar) — early mitigations (disable upload_progress / block multipart)
- Aikido Security — advisory & παρακολούθηση mitigation/patches
- Ρεπορτάζ επιβεβαιώσεων: watchTowr (reproduction), Huntress, Florian Roth — και ευρωπαϊκή οδηγία «take offline» μέσω Reuters. Επιπλέον κάλυψη: BleepingComputer, Ars Technica, SecurityWeek, Cyber Daily, Techzine, CyberSecurityNews, Pasquale Pillitteri (WAF rules).
Διαφάνεια: Το άρθρο γράφτηκε εν μέσω εξελισσόμενου γεγονότος (21/10/2026, ~09:35 UTC), πριν τη δημοσίευση του patch. Οι τεχνικές λεπτομέρειες προέρχονται από researcher writeups και δημόσια PoC repos — όχι ακόμη από πλήρες επίσημο security advisory. Στοιχεία που είναι ερευνητικά και όχι επίσημα (αλυσίδες 4–5, ακριβείς μηχανισμοί παραβίασης) σημειώνονται ως τέτοια. Το χρονοδιάγραμμα κυκλοφορίας του patch (~14:00 UTC) βασίζεται στις δημόσιες ανακοινώσεις και μπορεί να μετατοπιστεί. Δεν παρέχουμε κώδικα εκμετάλλευσης — μόνο defensive ανάλυση. Θα ενημερώσουμε το άρθρο όταν δημοσιευτούν οι διορθωτικές εκδόσεις και τα επίσημα advisories.