Tim Keamanan PHP merilis pembaruan darurat (emergency patch) untuk mengatasi dua celah keamanan tingkat kritis pada core engine PHP. Komunitas keamanan siber menjuluki pasangan kerentanan ini sebagai PHP2Shell.
Dua kerentanan tersebut terdaftar dengan kode identifikasi CVE-2026-109618 dan CVE-2026-109619. Keduanya mengantongi skor keparahan CVSS v4.0 9.2 (Critical) karena memungkinkan penyerang mengeksekusi kode berbahaya dari jarak jauh (Unauthenticated Remote Code Execution / RCE) tanpa memerlukan akses akun atau login terlebih dahulu.
Memahami Cara Kerja Kerentanan
Bahaya utama dari PHP2Shell terletak pada lokasinya: celah ini mengeksploitasi mekanisme internal alokasi memori runtime PHP di tingkat core engine. Penyerang dapat mengambil alih worker process aplikasi web bahkan sebelum skrip utama (seperti WordPress, Laravel, atau kerangka kerja lainnya) sempat diproses.
1. CVE-2026-109618: Out-of-Memory Handling & Data Corruption
-
Mekanisme: Kerentanan ini terjadi saat terjadi kondisi kehabisan memori (Out-of-Memory / OOM) selama pemrosesan request (seperti pengiriman payload
multipart/form-databerukuran besar). -
Dampak: Ketika batas memori tercapai, PHP mengeksekusi instruksi pembersihan (cleanup) via
longjmp()saat struktur data internal baru terinisialisasi sebagian. Proses pembersihan secara keliru menganggap data yang belum valid tersebut sebagai data valid, yang memicu memory corruption dan membuka jalan bagi penyerang untuk mengeksekusi kode arbitrer.
2. CVE-2026-109619: Stale Global State & Use-After-Free
-
Mekanisme: Terjadi akibat kegagalan pembersihan global state pada worker process. Saat suatu request selesai atau mengalami kesalahan, memori yang dialokasikan dihapus (freed). Namun, pointer global state internal masih merujuk ke lokasi memori lama tersebut (stale reference).
-
Dampak: Kondisi Use-After-Free (UAF) ini dapat dimanfaatkan oleh request berikutnya yang dilayani oleh worker yang sama (misalnya melalui manipulasi fitur
session.upload_progress) untuk membaca atau menulis ulang memori internal dan mengambil kontrol penuh atas process runtime.
Lingkup Dampak dan Versi Terdampak
Kerentanan ini berdampak pada seluruh infrastruktur server web yang menjalankan PHP, seperti PHP-FPM, Apache mod_php, LiteSpeed, php-cgi, maupun FrankenPHP.
-
Versi Terdampak: Seluruh versi PHP dari seri lama hingga 8.5.11, 8.4.26, 8.3.35, dan 8.2.34. Versi EOL (End-of-Life) seperti PHP 5.x, 7.x, 8.0, dan 8.1 juga dikonfirmasi rentan.
-
Eksploitasi Aktif: Aktivitas eksploitasi di alam liar (in-the-wild) telah terdeteksi, dan lembaga keamanan siber seperti CISA telah memasukkan isu stale state terkait ke dalam katalog Known Exploited Vulnerabilities (KEV).
Versi Perbaikan (Patched Release)
Tim pengembang PHP telah merilis versi perbaikan resmi. Pengguna disarankan untuk segera memperbarui runtime PHP mereka ke versi berikut:
| Seri PHP | Versi Aman (Rilis Perbaikan) | Status Dukungan |
| PHP 8.5 | 8.5.12 |
Didukung |
| PHP 8.4 | 8.4.27 |
Didukung |
| PHP 8.3 | 8.3.36 |
Didukung |
| PHP 8.2 | 8.2.35 |
Didukung |
| PHP 8.1 ke bawah | Tidak ada rilis resmi | End-of-Life (EOL) |
Catatan untuk PHP Versi EOL: PHP tidak merilis pembaruan untuk versi 8.1 ke bawah. Pengguna PHP versi lama disarankan segera bermigrasi ke versi 8.2+ atau mengandalkan paket backport patch dari vendor OS (seperti Ubuntu LTS, RHEL, atau Debian).
Langkah Mitigasi yang Direkomendasikan
Pengembang tidak memberikan solusi berbasis konfigurasi murni yang dapat menggantikan pembaruan versi sepenuhnya. Namun, kombinasi pembaruan dan mitigasi sementara berikut perlu dilakukan:
1. Jalankan Pembaruan (Langkah Utama)
-
Perbarui runtime PHP ke rilis aman yang sesuai dengan cabangnya (
8.5.12,8.4.27,8.3.36, atau8.2.35). -
PENTING: Lakukan restart pada service PHP (
php-fpm,apache2,nginx, dll.) setelah proses pembaruan agar worker process yang sedang berjalan disegarkan.
2. Pengaturan Konfigurasi Sementara (Temporary Workaround)
Jika sistem belum memungkinkan untuk diperbarui dalam waktu dekat:
-
Reset Worker Process: Atur parameter
pm.max_requests = 1pada konfigurasi PHP-FPM (www.conf). Langkah ini memaksa worker process untuk hancur dan melakukan pemuatan ulang setelah melayani 1 request, sehingga memutus skenario pemanfaatan memori yang persisten (stale state execution). -
Atur Batas Request pada WAF / Reverse Proxy: Konfigurasikan batas ukuran payload (body request) pada reverse proxy (Nginx/Apache) atau Web Application Firewall (WAF) guna mencegah pengiriman request raksasa yang dirancang untuk memicu Out-of-Memory (OOM).
-
Pusatkan Konfigurasi: Pindahkan semua aturan konfigurasi ke file utama
php.inidan hindari penggunaan per-directory config (seperti.htaccess) untuk meminimalisasi warning/error handler yang berjalan terlalu dini.
Dampak pada Ekosistem Aplikasi Web & CMS
Kerentanan PHP2Shell tidak membedakan jenis framework atau aplikasi web yang digunakan. Karena eksekusi celah ini terjadi pada alokasi memori internal core engine PHP, seluruh platform berbasis PHP berisiko tinggi terkena dampak langsung jika server belum diperbarui.
1. Content Management System (CMS) & E-Commerce
-
WordPress & WooCommerce: Sebagai platform dengan pangsa pasar terbesar, instalasi WordPress menjadi target utama pemindaian massal (mass scanning). Penyerang menggunakan eksekusi RCE untuk menyuntikkan skrip backdoor, memodifikasi file
wp-config.php, membuat akun administrator siluman, atau memasang skimmer kartu kredit pada halaman checkout. -
Drupal, Joomla, & Magento (Adobe Commerce): Portal berita, platform enterprise, dan toko online berisiko mengalami kebocoran data sensitif (data breach) pada database serta pengambilalihan kontrol server secara total.
2. Modern Web Frameworks (Laravel, Symfony, CodeIgniter)
-
Mitos bahwa framework modern aman dari kerentanan ini tidak benar. Walaupun aplikasi telah menerapkan arsitektur MVC, sanitasi input yang ketat, dan enkripsi data, kerentanan terjadi sebelum skrip aplikasi (routing & controller) sempat dieksekusi oleh PHP-FPM.
Indikator Kompromi (Indicators of Compromise / IoC) & Teknik Deteksi
Tim Security Operations Center (SOC) dan administrator sistem dapat memantau beberapa indikator log dan aktivitas sistem untuk mendeteksi percobaan eksploitasi:
1. Anomali pada Log Web Server & PHP-FPM
-
Crash Log Berulang pada PHP-FPM: Ditemukan pesan Segmentation fault (
SIGSEGV) atau bus error (SIGBUS) secara beruntun pada log PHP-FPM (/var/log/php-fpm/error.log):Plaintext[WARNING] child 12345 exited on signal 11 (SIGSEGV) after 0.001200 seconds from start -
Payload HTTP Multipart Berukuran Tidak Lazim: Header
Content-Type: multipart/form-datadengan jumlah boundary yang sangat besar atau ukuran header yang sengaja dibuat membengkak dalam hitungan milidetik. -
Aktivitas Memori Melonjak Tiba-Tiba: Terjadi lonjakan penggunaan RAM (spike) yang instan diikuti penurunan drastis karena worker process PHP gugur (crash).
2. Jejak Aktivitas Post-Exploitation
Jika penyerang berhasil mengeksekusi kode, jejak berikut dapat ditemukan di server:
-
Pembuatan file PHP baru berukuran kecil dengan nama acak di direktori publik (seperti
/wp-content/uploads/atau/tmp/). -
Eksekusi reverse shell yang menghubungkan proses
php-fpmatauwww-datake alamat IP eksternal yang tidak dikenal melalui port tak lazim (misalnya:4444,8080,1337). -
Perubahan hak akses file atau modifikasi file sistem utama melalui eksekusi perintah shell.
Langkah Tanggap Darurat (Incident Response Playbook)
Jika Anda mencurigai atau menemukan indikasi bahwa server Anda telah dipindai atau dikompromikan oleh eksploitasi PHP2Shell, segera lakukan langkah-langkah darurat berikut:
Langkah 1: Isolasi dan Containment
-
Isolasi Server dari Jaringan Luar: Putus koneksi lalu lintas masuk (inbound traffic) sementara melalui WAF, security group, atau firewall (iptables/ufw) untuk mencegah perintah lanjutan dari server Command & Control (C2) penyerang.
-
Hentikan dan Reset Service PHP:
Bashsudo systemctl stop php8.x-fpm # atau untuk Apache sudo systemctl stop apache2
Langkah 2: Analisis dan Pembersihan (Remediation)
-
Lakukan Pembaruan Package PHP: Perbarui runtime ke versi aman yang direkomendasikan.
Bash# Contoh pada Ubuntu/Debian sudo apt-get update && sudo apt-get install --only-upgrade php8.3-fpm php8.3-cli -
Auditing File & Integritas Kode: Gunakan alat bantu seperti
maldet(Linux Malware Detect),ClamAV, atau pemindai integritas git untuk memeriksa perubahan pada direktori aplikasi.Bashgit status # Jika repositori menggunakan Git -
Periksa Proses Berjalan: Pastikan tidak ada proses asing yang berjalan di bawah pengguna
www-dataataunginx.Bashps aux | grep -E "www-data|nginx|apache"
Langkah 3: Recovery dan Hardening
-
Ganti Kredensial: Perbarui kunci rahasia (secret keys), kata sandi database, API key, dan kredensial SSH yang tersimpan di lingkungan server (
.env,wp-config.php). -
Aktifkan Pemantauan Berkelanjutan: Pasang aturan (ruleset) WAF terbaru dari vendor (seperti ModSecurity, Cloudflare, atau AWS WAF) yang memblokir pola payload pemicu OOM dan manipulasi stale memory state.
Kesimpulan
Kasus PHP2Shell (CVE-2026-109618 & CVE-2026-109619) menegaskan kembali pentingnya manajemen kerentanan pada tingkat infrastruktur runtime. Karena celah ini berada di level core engine, tidak ada proteksi tingkat kode aplikasi yang dapat menggantikan pembaruan (patching).
Organisasi disarankan untuk segera memperbarui runtime PHP ke versi patch terbaru (8.5.12, 8.4.27, 8.3.36, atau 8.2.35) dan memastikan seluruh server web menggunakan mekanisme auto-restart worker sebagai bentuk mitigasi tambahan.