PHP2Shell adalah nama yang digunakan untuk dua kerentanan kritis pada runtime PHP, yaitu CVE-2026-109618 dan CVE-2026-109619. Pada konfigurasi dan jalur permintaan tertentu, keduanya dapat membuka peluang eksekusi kode jarak jauh (RCE). Risiko praktisnya serius: jika berhasil dieksploitasi, penyerang dapat menjalankan perintah dengan hak akses proses PHP pada server.
Nama PHP2Shell bukan nama satu fungsi atau paket yang bisa dihapus dari aplikasi. Masalahnya berada pada implementasi inti PHP dan berkaitan dengan pengelolaan memori saat menangani permintaan. Karena itu, memperbarui WordPress, Laravel, atau framework saja tidak memperbaiki runtime PHP yang rentan.
Apa dampaknya bagi situs?
Dampaknya bergantung pada versi PHP, cara PHP dijalankan, konfigurasi server, serta jalur aplikasi yang dapat dipicu dari luar. Jangan menyimpulkan server aman hanya karena belum melihat gejala atau memakai CMS populer. Sebaliknya, keberadaan versi rentan juga belum membuktikan bahwa server telah disusupi. Pemeriksaan versi dan log tetap diperlukan.
Jika eksekusi kode terjadi, penyerang berpotensi membaca data yang dapat diakses akun layanan web, mengubah berkas aplikasi, memasang persistence, atau bergerak ke sistem lain apabila segmentasi dan hak akses server lemah. Dampak tersebut merupakan kemungkinan setelah kompromi, bukan efek otomatis pada setiap instalasi PHP.
Siapa yang perlu memeriksa?
Administrator perlu menginventarisasi semua runtime PHP: server web, PHP-FPM, container, panel hosting, worker antrean, lingkungan staging, dan mesin yang jarang dipakai. PHP CLI dan PHP yang dipakai web bisa memiliki versi berbeda. Jalankan php -v untuk CLI, lalu periksa versi PHP-FPM atau modul web dari panel hosting maupun konfigurasi layanan.
Advisori dan paket vendor menjadi rujukan akhir untuk distribusi Linux atau layanan hosting, karena sebagian vendor dapat menerapkan perbaikan melalui backport tanpa mengubah nomor versi upstream. Cocokkan nomor paket dan catatan keamanan vendor, bukan hanya banner versi.
Langkah awal yang disarankan
- Catat semua versi dan lokasi runtime PHP yang digunakan.
- Pasang rilis perbaikan yang sesuai dari PHP atau vendor sistem operasi/hosting.
- Restart PHP-FPM, Apache, container, dan worker yang memuat runtime lama agar patch benar-benar aktif.
- Tinjau log akses dan proses untuk aktivitas mencurigakan pada periode paparan.
- Jika ditemukan tanda kompromi, isolasi host sesuai prosedur insiden, rotasi kredensial yang mungkin terbaca, dan pulihkan dari sumber tepercaya.
Firewall aplikasi web dapat membantu mengurangi sebagian pola permintaan, tetapi bukan pengganti pembaruan. Untuk memahami cara memeriksa dan memperbarui runtime, lanjutkan ke panduan cara mengecek versi PHP dan mengamankan server dari PHP2Shell.
Ringkasan
PHP2Shell merujuk pada CVE-2026-109618 dan CVE-2026-109619 di inti PHP. Periksa semua runtime, terapkan pembaruan vendor yang sudah tersedia, lalu restart layanan. Jangan mengandalkan nama framework atau aturan WAF sebagai bukti bahwa runtime sudah aman.
Rujukan: Advisori keamanan resmi PHP, 21 Oktober 2026.
Mengapa kerentanan pada inti PHP perlu diperhatikan?
PHP berada di bawah banyak aplikasi web. CMS, framework, dan kode bisnis biasanya berjalan di atas runtime yang sama, sehingga perbaikan pada aplikasi tidak otomatis memperbaiki cara runtime memproses permintaan HTTP. Jika beberapa situs berbagi satu instalasi PHP-FPM, paparan perlu diperiksa pada tingkat pool dan server, bukan hanya satu proyek.
Advisori PHP menyebut dua jalur masalah yang berbeda. CVE-2026-109618 berkaitan dengan penanganan kondisi kehabisan memori (out-of-memory/OOM) ketika data internal permintaan belum sepenuhnya siap. Jalur pembersihan permintaan kemudian dapat memperlakukan data yang tidak valid seolah valid. CVE-2026-109619 berkaitan dengan state internal yang seharusnya hanya hidup selama satu permintaan, tetapi dapat tertinggal setelah memorinya dibebaskan dan berpotensi dipakai oleh permintaan berikutnya pada worker yang sama. Penjelasan ini memberi konteks tentang sebab teknis, tanpa berarti setiap konfigurasi dapat dieksploitasi dengan cara yang sama.
Berlangganan gratis. Artikel & tutorial coding terbaru langsung ke email kamu. Tanpa spam.
Apakah semua situs PHP langsung dapat dieksploitasi?
Tidak ada satu jawaban yang berlaku untuk semua server. Perangkat lunak server, handler PHP, konfigurasi worker, batas permintaan, dan perilaku aplikasi memengaruhi jalur yang tersedia. Tim PHP menyebut instalasi PHP yang melayani permintaan web, termasuk PHP-FPM, Apache mod_php, php-cgi, FrankenPHP, dan LiteSpeed, sebagai hal yang harus diperiksa; advisori menyebut risiko tertinggi pada mod_php. Artinya, penggunaan framework tertentu atau fakta bahwa kode aplikasi tidak memakai fitur tertentu saja tidak cukup untuk menyimpulkan aman.
Pembedaan penting lainnya adalah antara “rentan”, “terpapar”, dan “terkompromi”. Runtime rentan berarti belum terbukti menerima perbaikan. Runtime terpapar berarti dapat dijangkau lewat jalur yang relevan. Terkompromi berarti ada bukti aktivitas penyerang berhasil. Ketiganya membutuhkan pemeriksaan berbeda: inventaris dan paket untuk status patch, konfigurasi serta arsitektur untuk paparan, dan bukti host/log untuk kompromi.
Versi perbaikan dan dukungan lama
Rilis PHP upstream yang memperbaiki dua CVE ini adalah 8.5.12, 8.4.27, 8.3.36, dan 8.2.35. Untuk distribusi Linux, paket hosting, dan image container, vendor bisa menerapkan patch melalui backport. Karena itu, cocokkan identitas paket dan advisori vendor, bukan hanya angka versi yang ditampilkan aplikasi. PHP 8.1 dan cabang yang lebih lama tidak lagi menerima pembaruan reguler dari proyek PHP; bila vendor tidak menyediakan backport, rencanakan upgrade ke cabang yang didukung.
FAQ singkat
Apakah memperbarui Laravel atau WordPress cukup?
Tidak. Perbarui aplikasi untuk menjaga keamanan keseluruhan, tetapi PHP runtime juga perlu diperbarui secara terpisah.
Apakah WAF bisa menggantikan patch?
Tidak. WAF dapat membantu membatasi pola tertentu, tetapi tidak memperbaiki bug di runtime dan tidak menjamin semua jalur tertutup.
Bagaimana jika versi saya terlihat sudah baru?
Pastikan yang diperiksa adalah runtime web, bukan hanya PHP CLI. Lalu cocokkan paket aktual dengan advisori vendor dan restart semua proses yang masih memuat runtime lama.
Apakah perlu menghapus situs?
Biasanya tindakan pertama adalah memasang paket yang sudah diperbaiki dan memuat ulang layanan. Jika ada indikator kompromi, ikuti prosedur respons insiden dan pertimbangkan isolasi atau rebuild host berdasarkan bukti.
Gunakan panduan cara memeriksa versi PHP dan mengamankan server untuk checklist teknis, lalu baca panduan deteksi dan respons insiden PHP2Shell bila server sempat terpapar.