Kembali ke Blog

PHP2Shell: Dua CVE Kritis Memaksa Pengguna PHP Segera Update

PHP memperbaiki CVE-2026-109618 dan CVE-2026-109619, dua vulnerability kritis yang dapat memungkinkan unauthenticated remote code execution.

•
Frendi Triarista
PHP2Shell: Dua CVE Kritis Memaksa Pengguna PHP Segera Update

PHP2Shell: Dua CVE Kritis Memaksa Pengguna PHP Segera Update

PHP baru saja menerbitkan security release untuk dua vulnerability kritis yang dapat berujung pada remote code execution tanpa autentikasi. Bagi server yang melayani request web, ini bukan sekadar pembaruan rutin. Versi PHP yang belum dipatch perlu diperlakukan sebagai risiko produksi.

Apa yang Terjadi

Pada 21 Oktober 2026, tim PHP mengumumkan perbaikan untuk CVE-2026-109618 dan CVE-2026-109619. Keduanya diberi skor CVSS v4.0 9.2 Critical dan secara resmi dikategorikan dapat memungkinkan unauthenticated remote code execution.

Kedua vulnerability ini kemudian banyak disebut sebagai PHP2Shell. Nama tersebut bukan nama resmi vulnerability di advisory PHP, tetapi istilah yang dipakai dalam pembahasan keamanan untuk menggambarkan dampak akhirnya.

CVE-2026-109618: Risiko dari Out-of-Memory

Advisory resmi menjelaskan bahwa PHP menggunakan mekanisme longjmp() ketika terjadi out-of-memory. Pada kondisi tertentu, proses keluar lebih awal ketika state request belum sepenuhnya aman. Tahap shutdown berikutnya dapat membaca atau memproses memory yang sudah berada dalam kondisi invalid.

Salah satu jalur pemicunya berkaitan dengan parsing multipart request dan konsumsi memory. Request yang tampak masih berada dalam batas ukuran tertentu dapat menghasilkan penggunaan memory yang jauh lebih besar saat diproses PHP.

Jika kondisi tersebut dapat dikendalikan melalui request HTTP, attacker berpotensi menjalankan code dengan privilege worker PHP atau web server.

CVE-2026-109619: Stale Global State

CVE kedua berkaitan dengan state global PHP atau extension yang masih menunjuk ke memory milik request sebelumnya. Setelah request selesai, memory tersebut dilepas, tetapi referensi lama dapat tertinggal di worker yang masih digunakan untuk request berikutnya.

Advisory menjelaskan bahwa kombinasi producer dan consumer pada request berbeda dapat menyebabkan use-after-free. Dalam kondisi tertentu, dampaknya mencakup memory disclosure dan remote code execution.

Detail eksploitasi dapat berbeda berdasarkan SAPI, extension, konfigurasi, dan lifecycle worker. Advisory resmi menyebut jalur yang divalidasi pada mod_php dan FPM, sehingga pengguna FPM tidak boleh menganggap dirinya otomatis aman.

Versi yang Sudah Diperbaiki

PHP menerbitkan versi berikut sebagai perbaikan:

  • PHP 8.2.35
  • PHP 8.3.36
  • PHP 8.4.27
  • PHP 8.5.12

Server yang masih memakai versi lebih rendah dari versi branch masing-masing perlu diperbarui melalui package repository resmi atau paket vendor yang sudah memuat patch keamanan.

Apa yang Harus Dilakukan Administrator

Prioritas pertama adalah memperbarui PHP runtime dan seluruh komponen yang terkait dengan request web, termasuk PHP-FPM bila digunakan. Setelah update, restart seluruh worker agar binary baru benar-benar dimuat.

Checklist minimum:

  1. Inventarisasi semua PHP SAPI dan versi CLI, FPM, Apache module, atau runtime lain.
  2. Cek versi paket melalui package manager resmi, bukan hanya php -v pada satu shell.
  3. Backup database, konfigurasi PHP, konfigurasi web server, dan environment aplikasi.
  4. Update PHP ke versi patched sesuai branch yang dipakai.
  5. Restart atau reload service PHP-FPM dan worker terkait.
  6. Uji endpoint utama, upload, login, queue, scheduler, dan integrasi database.
  7. Periksa log Nginx, PHP-FPM, aplikasi, firewall, dan WAF untuk request anomali.
  8. Pastikan user PHP memiliki least privilege dan tidak dapat menulis ke source code aplikasi.

Mitigasi konfigurasi hanya dapat mengurangi risiko. Menurut advisory resmi PHP, update ke versi yang mengandung patch adalah mitigasi lengkap yang direkomendasikan.

Dampaknya untuk Laravel dan Aplikasi PHP

Laravel bukan penyebab vulnerability ini, tetapi aplikasi Laravel tetap terekspos jika request diproses oleh PHP yang rentan. Upgrade framework saja tidak menyelesaikan masalah runtime.

Tim operasi perlu memverifikasi seluruh node yang menjalankan PHP, termasuk server staging, worker queue, task scheduler, image processing, dan host yang mungkin tidak terlihat dari reverse proxy utama.

Setelah update, lakukan pemeriksaan terhadap log historis. Cari pola request multipart yang tidak wajar, lonjakan memory, worker yang sering mati, 5xx, dan proses PHP-FPM yang restart tanpa alasan aplikasi.

Kesimpulan

Dua CVE ini menunjukkan bahwa patching PHP harus diperlakukan sebagai bagian dari keamanan perimeter aplikasi, bukan hanya maintenance dependency. Karena eksploitasi dapat datang melalui HTTP dan tidak memerlukan autentikasi pada skenario yang dijelaskan advisory, server PHP yang belum diperbarui perlu diprioritaskan.

Untuk instalasi PHP 8.3, target minimum yang perlu dicapai adalah PHP 8.3.36. Setelah itu, verifikasi binary yang aktif, restart seluruh worker, dan audit log untuk memastikan patch benar-benar berjalan di jalur request produksi.

Referensi

  1. PHP Security Release Announcement, PHP 8.3.36 Released, 21 Oktober 2026: https://news-web.php.net/php.announce/511
  2. PHP News Archive, Security Release PHP 8.3.36, 21 Oktober 2026: https://www.php.net/archive/2026.php#2026-10-21-5
  3. PHP Release Page, PHP 8.3.36, 21 Oktober 2026: https://php.net/releases/8_3_36.php
  4. PHP Advisory, RCE via OOM corruption, 21 Oktober 2026: https://github.com/php/php-src/security/advisories/GHSA-w8hw-w9fx-j79w
  5. PHP Advisory, RCE via stale global state, 21 Oktober 2026: https://github.com/php/php-src/security/advisories/GHSA-6wmf-4rv5-p3rp
  6. NVD, CVE-2026-109618: https://nvd.nist.gov/vuln/detail/CVE-2026-109618