TL;DR: Pada 21 Oktober 2026, PHP merilis update keamanan darurat untuk dua celah kritis, CVE-2026-109618 dan CVE-2026-109619, yang dijuluki PHP2Shell. Keduanya berskor CVSS 9.2 dan memungkinkan penyerang tanpa login menjalankan perintah di server web mana pun yang menjalankan PHP. Versi perbaikan yang aman adalah PHP 8.5.12, 8.4.27, 8.3.36, dan 8.2.35. National Cyber Security Centre (NCSC) Inggris mendesak semua organisasi bertindak segera, dan menyarankan mempertimbangkan membawa sistem offline bila update tidak bisa dilakukan dengan cepat. Setiap situs berbasis WordPress, WooCommerce, Laravel, dan aplikasi PHP lain perlu memeriksa versi PHP di servernya hari ini juga.
PHP Foundation mengumumkan pada 20 Oktober 2026 bahwa dua kerentanan kritis ditemukan di mesin PHP, lalu merilis versi perbaikan pada Rabu, 21 Oktober 2026 pukul 14:00 UTC. Masalahnya, jendela waktu untuk bersantai hampir tidak ada. Cloudflare melaporkan trafik serangan awal pada 07:43 UTC di hari yang sama, beberapa jam sebelum patch tersedia. Perangkat eksploitasi dan tulisan teknis mendalam tentang kedua celah ini juga sudah beredar publik, sehingga peneliti keamanan memperkirakan eksploitasi massal terjadi dalam waktu sangat dekat.
Sejumlah situs di Belanda memilih offline sebagai langkah pencegahan pada 21 Oktober, termasuk Tweakers, situs parlemen Belanda Tweede Kamer, situs NCSC Belanda sendiri, dan Security.NL. Di Inggris, NCSC menerbitkan peringatan resmi yang mendorong organisasi untuk segera mengambil tindakan mitigasi. Nada peringatannya tidak main-main: bila remediasi langsung tidak memungkinkan, organisasi sebaiknya mempertimbangkan mematikan sistem sampai bisa dimitigasi sepenuhnya.
Kedua celah ini ditemukan melalui proses pengungkapan terkoordinasi yang berjalan sejak Agustus 2026. Penemunya adalah Ryan Austin dari Calif dan tim Wiz Research, dengan bantuan model AI dari OpenAI dan Google untuk menemukan serta memverifikasi jalur serangannya. Artinya, celah yang bersembunyi di kode PHP selama lebih dari satu dekade akhirnya terungkap berkat kombinasi riset manusia dan kecerdasan buatan. Rincian latar penemuannya bisa dibaca pada liputan Computer Weekly.
Kedua CVE ini berakar pada kelas bug yang sama, yaitu use-after-free. Sederhananya, ketika sebuah request memicu error fatal, umumnya kondisi out-of-memory saat request melewati batas memory_limit, proses bersih-bersih internal PHP terputus di tengah jalan. Request berikutnya, atau worker yang dipakai ulang, kemudian memperlakukan memori yang sudah dibebaskan seolah masih berisi data yang sah. Dari titik itulah penyerang bisa menyusupkan data versinya sendiri dan mengarahkan eksekusi ke perintah yang diinginkan.
| CVE | Kelas Kerentanan | Dampak |
|---|---|---|
| CVE-2026-109618 | Use-after-free pada unserializer upload progress sesi | Kebocoran memori jarak jauh dan eksekusi kode jarak jauh (RCE) |
| CVE-2026-109619 | Use-after-free pada backtrace error fatal, kebingungan tipe di OPcache | Eksekusi kode jarak jauh (RCE) |
Rincian resmi dari NCSC menjelaskan perbedaan mekanismenya. Pada CVE-2026-109618, penanganan out-of-memory dapat menyela PHP ketika data internal request baru terisi sebagian, dan proses pembersihan sesudahnya memperlakukan data yang tidak valid itu sebagai data sah. Pada CVE-2026-109619, status internal milik sebuah request dapat bertahan setelah memori pendukungnya dibebaskan, lalu dipakai oleh request berikutnya pada worker yang sama sebelum inisialisasi normal sempat meresetnya.
Kode yang rentan ternyata berasal dari PHP 5.4.0 yang dirilis pada 2012, dan konfigurasi default ikut rentan. Apache dengan mod_php dan PHP-FPM sama-sama terdampak. Risiko dinilai paling tinggi pada Apache mod_php karena serangan yang terdemonstrasi berjalan sebelum kode aplikasi situs sempat dieksekusi sama sekali. Analisis teknis lengkap beserta langkah mitigasinya dirangkum oleh Sansec.
Jawaban singkatnya: hampir semua yang menjalankan PHP. NCSC menyatakan organisasi yang menggunakan versi PHP berapa pun terdampak dan sangat dianjurkan memperbarui ke versi perbaikan terbaru. PHP sendiri menopang porsi web yang sangat besar, sekitar 24 juta website menurut BuiltWith dan sekitar tiga perempat situs yang bahasa pemrogramannya dapat diidentifikasi menurut W3Techs. Telemetri Unit 42 dari Palo Alto Networks mengidentifikasi lebih dari 22,6 juta instance PHP yang terekspos dan berpotensi rentan.
Karena celahnya berada di mesin PHP, aplikasi populer ikut terekspos meskipun kode aplikasinya sendiri bersih. Calif mendemonstrasikan eksekusi kode tanpa login pada WordPress 7.1.2, WooCommerce, Magento 2.4.9, Drupal 11.4.3, Joomla 6.1.4, MediaWiki 1.46.2, Roundcube 1.7.4, phpMyAdmin 5.2.3, Nextcloud 35.0.1, Laravel 13.11, Symfony 8.1, dan WHMCS. Semua mode eksekusi PHP yang melayani request web berisiko, termasuk PHP-FPM, mod_php, php-cgi, FrankenPHP, dan LiteSpeed.
Kelompok yang paling terjepit adalah pengguna versi lama. PHP 8.1 dan yang lebih lama tidak lagi menerima update dari proyek PHP, sehingga tidak ada perbaikan resmi untuk kelompok ini. Sebagai jalan keluar darurat, tim keamanan PHP menyediakan backport sumber minimal untuk PHP 7.4, 8.0, dan 8.1 bagi yang membangun PHP dari kode sumber, sementara sejumlah distribusi Linux dan vendor dukungan jangka panjang menyediakan perbaikan backport versi mereka. Situasi ini mirip pelajaran pada insiden cloud tanpa guardrail: sistem yang dibiarkan tua dan tanpa pengawasan adalah yang paling dulu membayar mahal.
Ada empat alasan mengapa komunitas keamanan memperlakukan PHP2Shell sebagai peristiwa besar. Pertama, skor keparahannya 9.2 dari 10 pada skala CVSS v4.0 untuk kedua celah, dan eksploitasinya tidak membutuhkan kredensial apa pun. Pemicunya adalah request multipart/form-data biasa, format yang sama yang dipakai browser untuk mengunggah berkas, dan request itu diproses PHP sebelum kode aplikasi berjalan.
Kedua, CVE-2026-109618 membawa bonus yang mengerikan: kebocoran memori yang mengingatkan pada Heartbleed. Handler upload progress PHP dapat mengembalikan memori worker yang sudah dibebaskan kepada klien di dalam cookie PHPSESSID. Isi memori itu bisa mencakup kata sandi, token sesi, kunci API, sampai kunci privat TLS milik request lain. Mekanisme ini berjalan sebelum kode aplikasi, sehingga tetap bekerja bahkan pada aplikasi yang tidak pernah memanggil fungsi session_start().
Ketiga, skala dan kecepatannya. Peneliti keamanan Kevin Beaumont menyebut situasi ini akan memicu gelombang insiden dan menilainya sebagai salah satu kerentanan terbesar dalam beberapa tahun terakhir, seperti dikutip Help Net Security. Cloudflare sudah menyebarkan aturan WAF untuk vektor eksploitasi yang diketahui ke seluruh pelanggan, termasuk paket gratis. Keempat, ada ekor panjang yang sulit dibereskan: jutaan instalasi PHP tertanam di perangkat, appliance, dan aplikasi warisan yang tidak pernah diperbarui, persis seperti kekhawatiran yang disuarakan para praktisi forensik sejak hari pertama.
Langkah pertama mitigasi adalah mengetahui versi PHP yang sedang berjalan. Ada beberapa cara cepat:
php -v. Versi yang tampil adalah versi CLI, dan pada kebanyakan server nilainya sama dengan versi yang melayani web.Bandingkan hasilnya dengan daftar versi aman: 8.2.35, 8.3.36, 8.4.27, 8.5.12, atau yang lebih baru dari masing-masing cabang rilis. Bila versi yang berjalan lebih rendah, server tersebut rentan. Bagi yang mengelola layanan self-hosted di VPS, misalnya mengikuti panduan setup n8n self-hosted di VPS, pemeriksaan ini berlaku juga untuk container dan image Docker yang membundel PHP di dalamnya.
Perbaikan sejati hanya satu: memperbarui PHP ke versi yang sudah ditambal. Celah ini berada di mesin PHP, jadi tidak ada perubahan kode aplikasi, plugin, atau tema yang bisa menutupnya. Bila server dikelola penyedia hosting, hubungi mereka dan minta update diterapkan segera. Perlu dicatat, repositori Remi yang populer di server berbasis RHEL belum menyediakan update pada hari rilis, sehingga pengguna repositori tersebut disarankan beralih ke paket distribusi atau membangun PHP dari sumber.
Sembari menunggu update, ada mitigasi sementara yang bersifat parsial dan hanya membeli waktu:
Bila update dan mitigasi sementara tidak bisa diterapkan dengan cukup cepat, NCSC menyarankan mempertimbangkan membawa sistem offline sampai bisa dimitigasi sepenuhnya, karena mode maintenance bawaan aplikasi tidak membantu: PHP memproses request sebelum aplikasi memeriksa status maintenance. NCSC juga menekankan pemeriksaan tanda kompromi dan backdoor sebelum melakukan upgrade, terutama pada sistem yang sudah lama terekspos. Prinsip dasarnya sejalan dengan praktik keamanan website pada umumnya: permukaan serangan yang terlihat publik harus selalu diasumsikan sedang dipindai penyerang.
Bagi pemilik situs WordPress di shared hosting, kendali atas versi PHP biasanya berada di tangan provider, tetapi bukan berarti hanya bisa menunggu. Berikut langkah yang bisa dilakukan hari ini:
PHP2Shell adalah pengingat keras bahwa risiko terbesar sebuah situs kadang bukan berasal dari plugin atau tema, melainkan dari bahasa pemrograman yang menjalankan semuanya. Dua celah use-after-free yang bersembunyi sejak 2012 kini memiliki patch, perangkat eksploitasi yang publik, dan trafik serangan yang sudah terdeteksi. Kombinasi itu membuat penundaan menjadi pilihan paling mahal.
Tindakan yang perlu dilakukan hari ini sederhana dan berurutan: cek versi PHP, perbarui ke 8.2.35, 8.3.36, 8.4.27, atau 8.5.12, pasang mitigasi sementara bila update harus menunggu, lalu verifikasi dan pantau tanda kompromi. Bagikan artikel ini kepada rekan yang mengelola situs berbasis PHP, karena dalam kasus seperti ini, server tetangga yang belum ditambal ikut menentukan keamanan ekosistem web secara keseluruhan.