Dua celah keamanan kritis yang dikenal sebagai PHP2Shell telah ditemukan pada interpreter PHP. Celah ini memungkinkan eksekusi kode jarak jauh tanpa memerlukan autentikasi, bahkan dalam beberapa konfigurasi sebelum kode aplikasi dijalankan.
Pihak pengembang PHP segera meluncurkan rilis keamanan darurat pada hari Rabu, 21 Oktober 2026 pukul 2 p.m. UTC. Pembaruan ini langsung dibungkus dalam versi PHP 8.5.12, 8.4.27, 8.3.36, dan 8.2.35 untuk menambal kerentanan yang bersumber langsung dari dalam interpreter itu sendiri.
Anatomi Kerentanan Manajemen Memori
Kerentanan pertama berakar dari cara interpreter PHP menangani kesalahan kehabisan memori atau out-of-memory. Ketika kondisi OOM terjadi, interpreter menggunakan fungsi longjmp untuk keluar dari konteks saat itu, meskipun memori permintaan saat itu baru diinisialisasi sebagian. Prosedur penutupan kemudian membaca status tersebut sebagai sesuatu yang valid.
Penyerang dapat memicu kondisi OOM ini melalui permintaan multipart yang tetap berada di bawah batas postmaxsize. Contohnya meliputi jumlah header per bagian yang tidak terbatas, kolom file kosong yang tidak dihitung terhadap maxfileuploads, atau nama kolom bersarang. Solusi dalam tambalan ini menggantikan longjmp dengan OOM lunak pada titik aman mesin virtual berikutnya serta _exit keras di atas ambang batas kedua yang lebih tinggi.
Celah kedua melibatkan status global yang bertahan melampaui suatu permintaan. Jika sebuah kesalahan fatal menghentikan suatu operasi sebelum statusnya sempat disetel ulang, bidang global akan terus menunjuk ke memori heap yang telah dibebaskan. Ketika permintaan berikutnya pada worker yang sama membaca nilai tersebut sebelum inisialisasi normal, hasilnya adalah kerentanan use-after-free.
Server mod_php Paling Terdampak
Apache dengan modphp menjalankan prosedur penutupan permintaan bahkan ketika proses permulaan permintaan telah gagal. Kehabisan memori saat PHP mengurai isi permintaan saja sudah cukup untuk memicu masalah, tanpa perlu menjalankan kode aplikasi apa pun. PHP memvalidasi eksekusi kode penuh terhadap modphp dengan batas memori dan masukan bawaan.
Sebaliknya, PHP-FPM menghentikan proses anak yang permulaannya gagal, sehingga jalur langsung tersebut dapat diblokir. Untuk kerentanan kedua, PHP tetap mengonfirmasi adanya eksploitasi terhadap pool FPM normal, meskipun hal ini bergantung pada operasi yang sesuai di dalam aplikasi. Analisis kode sumber menunjukkan bahwa FrankenPHP berperilaku serupa dengan mod_php, sementara LSAPI menjadi kandidat bersyarat.
Mitigasi Sementara dan Langkah Administratif
Memperbarui sistem adalah satu-satunya solusi perbaikan yang sepenuhnya tuntas. Distribusi Linux dan vendor LTS telah mendapatkan tambalan ini sebelumnya dan sering kali menerapkannya kembali pada versi yang lebih lama, sehingga administrator disarankan memeriksa changelog berdasarkan ID CVE ketimbang sekadar melihat nomor versinya.
Jika pembaruan tidak dapat segera dilakukan, pihak PHP merekomendasikan untuk menyetel memorylimit=-1 secara administratif. Batas per permintaan yang dapat diprediksi merupakan faktor utama yang membuat eksploitasi OOM yang dikonfirmasi dapat bekerja dengan baik. Administrator juga disarankan menambahkan session.uploadprogress.enabled=0 dan parameter fatalerrorbacktraces=0 pada versi PHP 8.5, lalu memulai ulang setiap worker.