PHP2Shell: Bug PHP yang Memungkinkan Siapa Saja Menjalankan Kode di Server Anda (Patch Sekarang)

Dua bug kritis PHP, CVE-2026-109618 dan CVE-2026-109619, memungkinkan penyerang tanpa autentikasi mengeksekusi kode pada setiap SAPI yang melayani HTTP. Berikut cara memeriksa server Anda, menambal ke 8.5.12/8.4.27/8.3.36/8.2.35, dan apa yang sebenarnya dicakup oleh solusi sementara.

Ashley Innocent

Ashley Innocent

23 October 2026

PHP2Shell: Bug PHP yang Memungkinkan Siapa Saja Menjalankan Kode di Server Anda (Patch Sekarang)

Apidog untuk Perusahaan

Penerapan On-Premises

SSO & RBAC

Sesuai SOC 2

Jelajahi Apidog Enterprise

Pada 21 Oktober 2026, proyek PHP merilis rilis darurat untuk dua bug kritis yang memungkinkan penyerang tanpa autentikasi menjalankan kode di server web. Pasangan bug ini dilacak sebagai CVE-2026-109618 dan CVE-2026-109619 dan dikenal dengan nama PHP2Shell. Keduanya mendapat skor 9,2 pada CVSS v4.0, keduanya menyerang setiap pemasangan PHP yang melayani HTTP, dan honeypot Amazon mencatat upaya eksploitasi pada 17 Oktober, empat hari sebelum patch tersedia.

PHP berjalan di 69,3% situs web yang bahasa sisi servernya diketahui (W3Techs). Jika Anda menjalankan API PHP, backend Laravel atau Symfony, situs WordPress, atau image container dengan PHP yang sudah terpasang di dalamnya, ini urusan Anda.

Panduan ini membahas apa yang dilakukan bug tersebut, versi mana yang terdampak, cara memeriksa server Anda, apa yang sebenarnya bisa diberikan oleh mitigasi, dan cara membuktikan API Anda masih berfungsi setelah Anda menambal.

button

TL;DR

Pertanyaan Jawaban
Apa itu? Dua bug keamanan memori pada penanganan permintaan PHP, yang dirangkai menjadi eksekusi kode jarak jauh
CVE CVE-2026-109618 (korupsi kehabisan memori), CVE-2026-109619 (status basi, use-after-free)
Tingkat keparahan CVSS v4.0 9,2 untuk masing-masing (ID yang bocor lebih awal menyebut 10,0; PHP menyatakan itu salah)
Perlu autentikasi? Tidak
Terdampak Setiap SAPI yang melayani HTTP: PHP-FPM, Apache mod_php, php-cgi, FrankenPHP, LiteSpeed
Versi yang diperbaiki 8.5.12, 8.4.27, 8.3.36, 8.2.35
PHP 8.1 dan yang lebih lama Tidak ada rilis resmi; backport sumber minimal untuk 7.4, 8.0, 8.1; 5.4 hingga 7.3 tidak mendapat apa pun
Sudah dieksploitasi? Upaya terlihat sejak 17 Oktober (Amazon), serangan awal dilaporkan oleh Cloudflare
Perbaikan Tingkatkan versi, mulai ulang setiap worker. Solusi sementara mengurangi risiko tetapi tidak menutupnya

Apa sebenarnya PHP2Shell itu

Kedua bug berbagi satu akar penyebab: PHP dapat meninggalkan memorinya dalam kondisi rusak ketika sebuah permintaan berakhir secara abnormal, dan kode pembersihan kemudian mempercayai kondisi rusak tersebut.

CVE-2026-109618: korupsi kehabisan memori saat permintaan dimulai. Saat PHP menguraikan data formulir ke dalam $_POST, kode tabel hash mesin Zend menaikkan penghitung entrinya sebelum mengalokasikan kunci baru. Analisis Datadog melacaknya ke _zend_hash_str_add_or_update_i() di zend_hash.c. Jika alokasi tersebut melampaui memory_limit, PHP melempar kesalahan fatal dan membatalkan penyisipan. Penghitung kini mencakup bucket yang tidak pernah disiapkan. Saat shutdown, PHP menghancurkan $_POST dan memperlakukan setiap bucket yang terhitung sebagai nyata.

Bagian yang seharusnya membuat tim API khawatir: ini terjadi saat PHP masih mengurai isi permintaan, sebelum satu baris pun kode Anda dijalankan. Middleware autentikasi Anda, pembatas laju Anda, dan validasi input Anda tidak pernah melihat permintaan tersebut. Datadog mereproduksinya dengan isi application/x-www-form-urlencoded biasa, bukan unggahan file.

CVE-2026-109619: status global basi antar permintaan. PHP menyimpan sejumlah status tingkat worker yang menunjuk ke memori per permintaan. Jika kesalahan fatal mengganggu pengaturan ulang status tersebut, atau diagnostik shutdown yang terlambat membuatnya kembali setelah pembersihan, permintaan berikutnya pada worker yang sama akan membaca memori yang telah dibebaskan. PHP mengonfirmasi dua jalur:

Tim keamanan PHP menilai mod_php sebagai risiko tertinggi, karena eksploit yang didemonstrasikan berjalan dari satu permintaan tanpa autentikasi sebelum kode aplikasi apa pun dimuat.

Siapa yang menemukannya (dan mengapa AI jadi berita utama)

Bug ini berasal dari kode yang diperkenalkan pada PHP 5.4.0, jadi keduanya sudah berada di basis kode selama lebih dari satu dekade. PHP Foundation memberikan kredit kepada Calif, OpenAI dan Wiz.

Pemberitaan dari Decrypt dan The Next Web menyebutkan peneliti Calif, Ryan Austin, menemukan kelemahan tersebut pada Agustus dalam audit kode sumber yang dibantu GPT-5.6 Sol dari OpenAI. OpenAI menyatakan timnya sendiri menemukan versi yang lebih lengkap pada September sebagai bagian dari kerja “Patch the Planet”. Wiz menyatakan menemukan kedua bug itu sendiri menggunakan Gemini 4 Argon, Wiz Atlas dan GPT-5.6 Sol. Kreditnya diperdebatkan; kesimpulannya tidak. Audit berbantuan AI kini menemukan bug memori berusia satu dekade pada infrastruktur inti, dan penyerang memiliki model yang sama.

Lini masa: mengapa patch datang sehari lebih awal

Tanggal (2026) Yang terjadi
Agustus hingga September Calif, OpenAI dan Wiz melaporkan bug tersebut secara privat
17 Okt Honeypot MadPot milik Amazon mencatat upaya eksploitasi
20 Okt ID CVE bocor di Hacker News dan media sosial; PHP memasang pemberitahuan awal; CERT-EU menerbitkan advisory 2026-018
21 Okt, 14:00 UTC PHP merilis perbaikan, dimajukan dari 22 Okt setelah kebocoran; CISA menerbitkan peringatan; Cloudflare melaporkan serangan awal
22 Okt Belum ada CVE yang masuk katalog KEV milik CISA

Amazon menyarankan penyelidikan sejak 17 Oktober (FAQ Tenable melacak lini masa lengkapnya), bukan sejak tanggal pengungkapan. Saat merilis, tim PHP menyatakan telah memeriksa kode proof-of-concept yang muncul setelah kebocoran dan tidak menemukan eksploit yang berfungsi. watchTowr sejak itu menyatakan telah mereproduksi kedua bug tersebut. Anggap setiap repo “PoC” yang Anda temukan sebagai mencurigakan: kode eksploit yang belum diverifikasi sering kali membawa malware.

Apakah Anda terdampak? Periksa dalam lima menit

1. Periksa runtime yang melayani trafik, bukan laptop Anda. Biner CLI bisa berbeda dari modul FPM atau Apache dalam hal versi dan konfigurasi.

# On the server or inside the running container
php -v
php-fpm -v
# Apache mod_php: check the loaded module version
apachectl -M 2>/dev/null | grep -i php

Atau tampilkan sekali dari rute yang dilindungi lalu hapus setelahnya:

<?php echo PHP_VERSION, ' ', PHP_SAPI;

2. Bandingkan dengan versi yang sudah diperbaiki.

Cabang Rentan Diperbaiki di
8.5 < 8.5.12 8.5.12
8.4 < 8.4.27 8.4.27
8.3 < 8.3.36 8.3.36
8.2 < 8.2.35 8.2.35
7.4 hingga 8.1 Semua Hanya backport sumber, atau LTS vendor
5.4 hingga 7.3 Semua Tidak ada perbaikan

Debian, Ubuntu, Red Hat dan distro lain sering mem-backport perbaikan tanpa mengubah string versi upstream. Jika php -v menampilkan nomor yang lebih lama, baca advisory distro Anda sebelum panik.

3. Inventarisasi PHP yang tersembunyi. Container yang dibangun dengan FROM php:8.3-fpm berbulan-bulan lalu, perangkat vendor, build yang dikompilasi sendiri, panel admin di subdomain yang terlupakan. Cisco sudah membuka advisory untuk memeriksa lini produknya sendiri. Shodan menghitung lebih dari 1,9 juta host PHP yang menghadap internet; seorang peneliti memperkirakan 1,3 juta atau lebih mungkin rentan.

Cara menambal

# Debian / Ubuntu (Ondřej Surý PPA or distro packages)
sudo apt update && sudo apt install --only-upgrade 'php8.*'

# RHEL / Rocky / Alma with Remi
sudo dnf upgrade 'php*'

# Official Docker image: rebuild on a fixed tag
docker pull php:8.4.27-fpm
docker build --pull -t my-api:patched .

Lalu lakukan langkah yang paling sering dilupakan tim: mulai ulang atau ganti setiap worker PHP. Pool FPM yang sedang berjalan menyimpan biner lama di memori. Mulai ulang php-fpm, muat ulang Apache, dan lakukan rolling pada setiap container. CVE-2026-109619 berkaitan dengan status yang hidup antar permintaan di dalam worker, jadi worker yang tidak dimulai ulang masih rentan.

Pada 8.1 atau yang lebih lama, Anda punya tiga opsi: paket LTS vendor, membangun dari backport sumber PHP, atau meningkatkan ke 8.2+. CISA merekomendasikan agar sistem PHP yang tidak dapat ditambal diambil offline, dan NCSC Inggris serta FBI menyatakan hal yang sama.

Mitigasi jika Anda tidak bisa menambal hari ini

Ini hanya membeli waktu. Gina Peter Banyard dari tim inti PHP mengatakan kepada BleepingComputer bahwa tidak ada mitigasi yang sepenuhnya memblokir serangan tersebut.

Untuk CVE-2026-109618:

Untuk CVE-2026-109619:

Di sisi edge: Cloudflare memasang aturan WAF untuk vektor yang diketahui pada semua paket, termasuk yang gratis. CTO-nya menyebut aturan itu bersifat sementara.

Setelah setiap perubahan php.ini, mulai ulang setiap worker atau perubahannya tidak akan berlaku.

Tanda-tanda Anda sudah diserang

Panduan deteksi Datadog pada intinya terdiri dari empat sinyal:

Jangan percaya kode status. Eksploit Datadog yang telah disempurnakan mengembalikan HTTP 200 dan worker tetap berjalan. Telusuri log hingga 17 Oktober.

Buktikan API Anda masih berfungsi setelah patch: biarkan agen Anda menjalankannya

Menambal PHP di produksi di bawah tekanan adalah cara Anda mengetahui bahwa kenaikan versi minor mengubah sesuatu. Sebelum dan sesudah Anda merilis perbaikan, jalankan rangkaian uji API Anda terhadap staging, dan biarkan agen coding Anda melakukannya dengan Apidog CLI.

Penyiapan (sekali):

npm install -g apidog-cli
apidog auth login --with-token <your-access-token>
apidog test-suite list --project <projectId>

Satu prompt untuk Claude Code, Codex atau Cursor:

Kami baru saja meningkatkan PHP ke 8.4.27 di staging untuk PHP2Shell. Gunakan Apidog CLI untuk menjalankan rangkaian uji regresi kami terhadap lingkungan staging, tulis laporan HTML dan JUnit, lalu rangkum endpoint mana pun yang gagal. Setelah itu pastikan bahwa POST dengan isi yang melebihi client_max_body_size nginx kami ditolak dengan 413 di proxy, bukan mencapai PHP.

Yang dijalankan agen:

apidog test-suite run <testSuiteId> --project <projectId> -e <stagingEnvId>

apidog run --test-suite <testSuiteId> --project <projectId> -e <stagingEnvId> \
  -r cli,html,junit --out-dir ./php2shell-reports --upload-report

-r memilih reporter, --out-dir menentukan tempat laporan disimpan, dan --upload-report mengirim ringkasan yang dapat Anda buka di aplikasi Apidog. Tambahkan --notification-failed-event <targetId> untuk memberi tahu tim Anda hanya saat ada yang rusak. Masukkan baris apidog run yang sama ke CI agar setiap image PHP yang dibangun ulang diuji sebelum dirilis. Panduan penyiapan Claude Code dan panduan alur CI/CD membahas keduanya secara mendetail.

Jalankan rangkaian uji sekali pada versi lama untuk mendapatkan baseline, sekali setelah peningkatan, lalu bandingkan. Jika ada uji yang tidak Anda duga gagal, Anda akan mengetahuinya sebelum pengguna Anda. Unduh Apidog untuk membangun dan mengelola rangkaian uji yang dijalankan CLI.

FAQ

Apakah PHP2Shell sedang dieksploitasi? Amazon melihat upaya sejak 17 Oktober dan menyatakan kini dieksploitasi secara luas; Cloudflare dan watchTowr juga melaporkan serangan. CISA belum mengonfirmasi eksploitasi per 22 Oktober.

Apakah framework saya melindungi saya? Tidak. CVE-2026-109618 aktif saat PHP mengurai isi permintaan, sebelum Laravel, Symfony atau WordPress dimuat.

Saya memakai shared hosting. Apa yang harus saya lakukan? Periksa halaman status penyedia hosting Anda. SiteGround dan yang lainnya menyatakan sudah menambal. Jika penyedia Anda belum mengatakan apa pun, tanyakan.

Apakah session.upload_progress.enabled=0 sudah cukup? Tidak. Itu hanya menutup satu jalur dari satu CVE. Tambal.

Apakah saya perlu merotasi rahasia? CVE-2026-109619 memungkinkan pengungkapan memori. Jika log menunjukkan tanda-tanda kompromi sejak 17 Oktober, rotasi kata sandi basis data, kunci API dan rahasia sesi yang dapat dibaca oleh proses PHP.

Intinya

Perbarui ke 8.5.12, 8.4.27, 8.3.36 atau 8.2.35. Mulai ulang setiap worker. Temukan PHP yang Anda lupakan. Periksa log hingga 17 Oktober. Lalu jalankan uji API Anda agar perbaikan ini tidak menjadi gangguan berikutnya. Jika PHP Anda masih di 8.1 atau lebih lama, inilah minggu yang tepat untuk akhirnya beralih darinya.

Mengembangkan API dengan Apidog

Apidog adalah alat pengembangan API yang membantu Anda mengembangkan API dengan lebih mudah dan efisien.