Cara memperbaiki PHP2Shell
php.net menyatakan dengan jelas: “Tidak ada mitigasi yang lengkap, pembaruan adalah satu-satunya pilihan yang aman.” Panduan ini menjelaskan pembaruan, restart yang sering terlupakan, verifikasi, dan apa yang perlu diperiksa jika server sempat terekspos.
1 Temukan setiap PHP di server
Banyak server menjalankan lebih dari satu PHP: paket sistem, versi yang dipasang panel kontrol (cPanel EA-PHP, Plesk, CWP/CloudLinux alt-php, DirectAdmin), container, serta build baris perintah yang dipakai cron. Setiap PHP yang melayani permintaan web harus diperbarui.
Jalankan php -v, tampilkan proses php-fpm dengan ps aux | grep php-fpm, dan periksa pemilih PHP di panel Anda.
2 Perbarui ke versi yang sudah diperbaiki
Versi upstream yang sudah diperbaiki adalah 8.5.12, 8.4.27, 8.3.36 dan 8.2.35. Paket distribusi mungkin membawa perbaikan dengan nomor versi yang lebih lama — periksa changelog untuk CVE-2026-109618 dan CVE-2026-109619.
PHP 8.1 dan yang lebih lama tidak mendapat rilis dari proyek PHP. Backport minimal di tingkat source telah diterbitkan untuk 7.4, 8.0, dan 8.1 bagi yang melakukan build dari source, tetapi perbaikan jangka panjangnya adalah pindah ke cabang yang didukung.
Debian / Ubuntu (paket distribusi)
Pasang pembaruan keamanan dari distribusi Anda dan restart PHP. Nomor versinya mungkin tetap sama; changelog paket mencantumkan CVE-nya.
sudo apt update && sudo apt install --only-upgrade 'php*'
sudo systemctl restart 'php*-fpm' apache2 2>/dev/null
apt changelog php8.3-fpm | grep -i -m3 CVE-2026-1096RHEL / AlmaLinux / Rocky (dnf)
Terapkan errata vendor untuk module stream PHP Anda, lalu restart.
sudo dnf upgrade --refresh 'php*'
sudo systemctl restart php-fpm httpd
rpm -q --changelog php-common | grep -i -m3 CVE-2026-1096Docker / image php resmi
Lakukan pull atau rebuild dengan tag yang sudah diperbaiki, lalu buat ulang container.
docker pull php:8.3-fpm # must report 8.3.36 or later
docker compose up -d --build --force-recreate
docker compose exec app php -vcPanel, Plesk, CWP, DirectAdmin
Gunakan alat pembaruan panel untuk setiap versi PHP yang terpasang (EA-PHP, handler PHP Plesk, alt-php, CustomBuild), lalu restart PHP-FPM. Panel sering tetap menyimpan versi lama untuk situs tertentu — perbarui atau hapus juga versi tersebut.
Shared hosting atau managed hosting
Biasanya Anda tidak dapat memperbarui PHP sendiri. Gunakan pesan pada kartu hasil untuk menanyakan kepada penyedia Anda versi persisnya, tanggal penambalan, dan konfirmasi bahwa worker sudah di-restart.
Windows / IIS
Unduh build yang sudah diperbaiki dari windows.php.net, ganti direktori PHP, dan lakukan recycle pada application pool IIS.
3 Restart setiap proses PHP
Memasang paket tidak mengubah kode yang sudah berjalan. Restart PHP-FPM, Apache (untuk mod_php), LiteSpeed, FrankenPHP, queue worker, dan supervisor. Untuk container, lakukan rebuild atau pull image baru — me-restart image yang sama tidak memasang patch.
4 Verifikasi
Jalankan php -v untuk setiap binary dan pastikan proses yang berjalan menggunakan build baru (misalnya ls -l /proc/$(pgrep -o php-fpm)/exe tidak boleh menampilkan “deleted”). Lalu jalankan pemeriksa ini lagi.
5 Jika Anda tidak bisa memperbarui hari ini
Terapkan mitigasi parsial di bawah ini dan batasi siapa yang dapat mengakses situs sampai Anda bisa memperbarui. Mitigasi ini mengurangi risiko, tetapi tidak menghilangkannya.
6 Periksa tanda-tanda kompromi — dan ganti rahasia
Jika situs yang rentan dapat dijangkau dari internet, tinjau aktivitas sejak 20 Oktober 2026: crash worker PHP (SIGSEGV) di log error PHP-FPM atau Apache, file PHP baru atau yang diubah di web root, cron job baru, akun administrator baru, dan koneksi keluar yang tidak terduga.
Karena CVE-2026-109619 dapat mengekspos memori proses PHP tanpa menjalankan kode apa pun, sistem file yang bersih bukan bukti bahwa tidak ada yang bocor. Ganti kata sandi database, API key, kredensial pembayaran dan email, serta batalkan sesi pengguna untuk situs yang terekspos.
7 Setelah memperbarui
Perbaikan ini memperkenalkan batas memori keras yang baru: proses yang mencapainya langsung dihentikan dan shutdown handler tidak dijalankan. Periksa perilaku aplikasi Anda saat memori menipis, tinjau memory_limit bersama post_max_size dan max_input_nesting_level, dan batalkan memory_limit = -1 sementara yang Anda atur sebelum menambal. Menyembunyikan versi dengan expose_php = Off adalah penguatan opsional, bukan perbaikan.
Mitigasi parsial (dari php.net dan advisori)
Langkah ini hanya mempersempit jalur serangan yang diketahui. php.net menyatakan bahwa pembaruan adalah satu-satunya pilihan yang aman.
; php.ini / FPM pool (php_admin_value) — restart semua worker setelahnya
session.upload_progress.enabled = 0
fatal_error_backtraces = 0 ; PHP 8.5
post_max_size = 8M ; 32M jika upload diperlukan
max_input_nesting_level = 16 ; default 64
display_errors = 0
; FPM pool
pm.max_requests = 200Atur ini di php.ini, pool PHP-FPM (php_admin_value), atau konfigurasi server — bukan dengan ini_set() atau .user.ini — lalu restart worker. Langkah tambahan dari advisori dan tim peneliti:
memory_limit = -1memblokir beberapa jalur yang bergantung pada batas memori PHP sendiri, tetapi menyerahkan kehabisan memori ke sistem operasi — gunakan hanya bersama batas cgroup v2memory.max. Jangan gunakanRLIMIT_ASatauRLIMIT_DATA; keduanya dapat memicu jalur rentan yang sama.- Turunkan
max_input_nesting_levelserendah yang dimungkinkan formulir Anda. - Turunkan
pm.max_requestsPHP-FPM agar worker didaur ulang lebih sering (berdampak pada kinerja). - Batas ukuran permintaan, jumlah field, dan tingkat nesting di web server atau proxy; hapus pengaturan INI per permintaan yang tidak valid atau sudah usang.
- Kebijakan SELinux atau AppArmor dapat membatasi apa yang boleh dijalankan worker yang disusupi — kebijakan ini mengurangi dampak, tetapi tidak mencegah kebocoran memori.
Referensi
- php.net — peringatan keamanan dan pengumuman rilis
- php.net — PHP 8 ChangeLog
- php.net — versi yang didukung
- php.net — unduhan
- GHSA-w8hw-w9fx-j79w (CVE-2026-109618)
- GHSA-6wmf-4rv5-p3rp (CVE-2026-109619)
- The PHP Foundation — Today’s PHP security release
- php2shell.com — Wiz Research × OpenAI Codex Security × Calif
- Wiz Research · OpenAI · Calif
Sumber: peringatan keamanan php.net, 21 Oktober 2026. Terakhir diverifikasi 2026-10-23.