Vulnerabilitas PHP2Shell membuka jalan bagi penyerang untuk menjalankan kode di server tanpa login. Tim keamanan PHP merilis pembaruan darurat pada 21 Oktober 2026 untuk menutup dua celah kritis ini. Pemilik situs perlu segera memeriksa versi PHP yang mereka pakai.
Apa Itu Vulnerabilitas PHP2Shell
PHP2Shell adalah nama untuk dua celah eksekusi kode jarak jauh (RCE) di PHP. Keduanya tercatat sebagai CVE-2026-109618 dan CVE-2026-109619. Skor CVSS v4.0 kedua celah ini mencapai 9,2, masuk kategori kritis.
Celah ini berada di interpreter PHP, bukan di kode aplikasi. Karena itu WordPress, Drupal, Joomla, Magento, Laravel, dan MediaWiki ikut berisiko. Perkiraan menyebut PHP menjalankan sekitar 70% situs web di dunia.
Bahaya Eksekusi Kode Jarak Jauh
RCE berarti penyerang bisa menjalankan perintah di server dari lokasi mana pun. Mereka tidak perlu mencuri akun admin lebih dulu. Satu request berbahaya sudah cukup untuk membuka akses.
Setelah masuk, penyerang bisa memasang backdoor, mencuri data pelanggan, atau mengubah isi situs. Penyerang juga sering memanfaatkan server yang sudah mereka kuasai untuk mengirim spam dan menyerang situs lain. Karena itu, kerugian tidak berhenti di satu situs saja.
Cara Kerja Celah di Memori PHP
Masalah muncul saat PHP menangani fatal error, terutama ketika memori server habis. Kesalahan itu meninggalkan status internal yang usang. Request atau worker berikutnya bisa memakai status tersebut lagi.
Penyerang bisa menjalankan kode tanpa akun dan tanpa otentikasi. Mereka juga bisa membaca memori proses worker PHP. Memori itu dapat menyimpan kata sandi, token, kunci API, dan sertifikat milik permintaan lain.
Server Apache dengan modul mod_php menghadapi risiko paling tinggi. Satu request saja bisa memicu serangan sebelum kode aplikasi berjalan. Penyerang bahkan bisa menyerang halaman Hello World yang paling sederhana.
PHP-FPM, php-cgi, FrankenPHP, dan LiteSpeed juga terdampak. Celah ini sudah bersembunyi di kode sumber PHP lebih dari satu dekade. Hampir semua rilis sejak PHP 5.4 rentan.
Kronologi Penemuan dan Eksploitasi Aktif
Peneliti Wiz Research menemukan celah ini pada 19 Agustus 2026 dengan bantuan model AI. Mereka melapor secara privat ke tim PHP pada 24 Agustus. Mereka semula berencana mengungkap celah ini secara resmi pada 22 Oktober.
Seorang peneliti memakai Wiz Atlas, Gemini 4 Argon, dan GPT-5.6 Sol untuk membuat exploit lintas aplikasi. Pekerjaan itu selesai dalam sekitar satu minggu. Tanpa AI, tim peneliti kelas dunia butuh waktu berbulan-bulan.
Detail celah bocor di media sosial dan Hacker News pada malam 20 Oktober. Firma riset Calif juga tanpa sengaja menerbitkan video proof-of-concept yang berfungsi. Tim PHP lalu merilis patch resmi pada 21 Oktober pukul 14:00 UTC.
Serangan aktif langsung terpantau. watchTowr, Patchstack, Aikido, dan Cloudflare mengonfirmasi adanya lalu lintas eksploitasi. Cloudflare mencatat penyerang terus mengubah payload agar lolos dari aturan WAF.
Layanan yang Ikut Terdampak
Beberapa layanan memilih berhenti sementara. BambooHR menghentikan layanannya di Amerika Serikat, Kanada, dan Irlandia. Pemerintah Belanda juga menonaktifkan situs DigiD dan MijnOverheid.
BreachForums dan Dread ikut offline. PHP Foundation mengakui bahwa tanda awal masalah memori ini sudah terdeteksi saat audit eksternal 2024. Saat itu, eksploitasi eksekusi kode belum terbukti.
Perbaikan tertahan berbulan-bulan karena kekhawatiran soal kompatibilitas. Foundation menyebut keterlambatan itu sebagai kegagalan struktural.
Versi PHP yang Harus Anda Pasang
Vulnerabilitas PHP2Shell menyasar hampir semua cabang PHP. Semua versi di bawah rilis berikut rentan terhadap serangan. Setelah memperbarui, restart layanan web server seperti Apache atau worker PHP-FPM.
| Cabang PHP | Versi aman | Catatan |
|---|---|---|
| PHP 8.5 | 8.5.12 | Perbarui ke rilis ini |
| PHP 8.4 | 8.4.27 | Perbarui ke rilis ini |
| PHP 8.3 | 8.3.36 | Perbarui ke rilis ini |
| PHP 8.2 | 8.2.35 | Dukungan berakhir 31 Desember 2026 |
| PHP 8.1, 8.0, 7.4 | Tidak ada rilis biner | Sudah end-of-life, hanya ada backport minimal di GitHub |
| PHP 7.3 ke bawah | Tidak ada | Tidak mendapat perbaikan sama sekali |
Tim PHP menyediakan backport minimal di GitHub bagi pengguna yang mengompilasi dari kode sumber. Pengguna versi end-of-life sebaiknya pindah ke cabang yang masih mendapat dukungan.
Pengguna Debian dan distribusi LTS lain perlu memeriksa changelog paket untuk nomor CVE. Jangan hanya melihat string versi PHP, karena vendor sering melakukan backport.
Siapa yang Paling Berisiko
Pemilik VPS dan server dedicated memegang tanggung jawab penuh atas pembaruan PHP. Jika Anda belum menjalankan update, server Anda tetap terbuka. Cek jadwal patch otomatis di sistem operasi Anda, lalu pastikan paket PHP benar-benar naik versi.
Pengguna shared hosting bergantung pada penyedia layanan. Hubungi support hosting dan minta konfirmasi tertulis bahwa mereka sudah menambal PHP. Developer yang memakai lingkungan lokal seperti XAMPP, Laragon, atau Herd sebaiknya ikut memperbarui PHP, meski risikonya lebih kecil.
Tim yang mengelola banyak situs klien perlu mendata semua server lebih dulu. Mulai dari server dengan Apache mod_php, karena kelompok ini menghadapi risiko tertinggi.
Cara Mengecek Versi PHP di Server
Buka terminal server lalu jalankan perintah php -v. Hasilnya menampilkan versi PHP untuk command line. Versi itu bisa berbeda dari versi yang melayani situs Anda.
Untuk memastikan, buat file phpinfo() sementara dan buka lewat browser. Hapus file itu setelah selesai. Di shared hosting, tanyakan langsung ke penyedia hosting apakah mereka sudah menambal server.
Patch untuk Pengguna Laravel
Laravel Cloud menambal aplikasi secara otomatis. Pengguna Laravel Forge harus memperbarui PHP manual lewat dashboard.
Laravel Vapor menjalankan ulang pembaruan otomatis untuk aplikasi di PHP 8. Aplikasi yang masih memakai PHP 7 harus upgrade manual ke PHP 8, karena PHP 7 tidak punya patch.
Langkah Setelah Update PHP
Update PHP saja belum cukup bila server Anda sempat terbuka. Penyerang bisa saja sudah membaca memori worker sebelum Anda menambal. Ganti semua kata sandi, token, dan kunci API yang pernah lewat di server tersebut.
Periksa juga log akses dan log error sejak 20 Oktober 2026. Cari lonjakan error memory-limit atau respons HTTP 500 yang tidak biasa. Jika menemukan file asing di direktori web, isolasi server dan pulihkan dari backup yang bersih.
Jangan menaruh harapan pada WAF semata. Cloudflare mencatat penyerang terus mengubah payload agar lolos dari aturan yang ada. Patch resmi tetap menjadi perlindungan paling kuat.
Mitigasi Sementara dan Tanda Serangan
Langkah berikut hanya penahan sementara dan tidak membuat server aman. Tim PHP menegaskan bahwa upgrade adalah satu-satunya solusi. Pengembang inti PHP, Gina Peter Banyard, juga menyebut menambal PHP sebagai satu-satunya mitigasi.
Untuk CVE-2026-109618
- Setel memory_limit = -1 di tingkat yang tidak bisa aplikasi ubah, misalnya php_admin_value pada pool FPM atau konfigurasi Apache.
- Turunkan post_max_size menjadi 8M, atau 32M jika aplikasi butuh unggah berkas. Pastikan upload_max_filesize lebih kecil.
- Batasi ukuran request di reverse proxy atau web server.
- Pasang batas memori container atau cgroup yang mematikan worker terdampak. Hindari RLIMIT_AS atau RLIMIT_DATA, karena justru memicu kegagalan alokasi memori.
Untuk CVE-2026-109619
- Matikan session upload progress dengan session.upload_progress.enabled = Off di php.ini atau konfigurasi server, lalu restart semua worker.
- Di PHP 8.5, setel fatal_error_backtraces = 0 lalu restart worker.
- Perbaiki fatal error dan execution timeout yang bisa penyerang jangkau.
Pengaturan lewat ini_set() atau .user.ini tidak berlaku cukup awal, jadi jangan memakainya. Fitur progress bar unggahan berhenti bekerja setelah Anda mematikan pengaturan itu. Proses unggah berkas tetap berjalan normal.
Tanda Serangan yang Perlu Anda Pantau
- Request multipart HTTP yang tidak biasa, diikuti error memory-limit atau respons HTTP 500 berulang
- Cookie PHPSESSID berukuran sangat besar atau berformat tidak wajar
- Restart atau churn worker PHP tanpa alasan jelas
Cek versi PHP server Anda hari ini. Penyerang sudah mengeksploitasi vulnerabilitas PHP2Shell secara aktif, jadi menunda update hanya memperbesar risiko. Baca artikel menarik lainya hanya di Ruangbacaku