PHP 8.5.12, 8.4.27, 8.3.36, dan 8.2.35 dirilis 21 Oktober 2026 untuk menambal dua kerentanan remote code execution yang bisa dipicu penyerang tanpa autentikasi. Keduanya tercatat sebagai CVE-2026-109618 dan CVE-2026-109619 dengan skor CVSS 9.2 menurut pengumuman resmi PHP Foundation. Serangan bisa jalan sebelum kode aplikasi dieksekusi kalau PHP dipasang sebagai modul Apache, dan eksploitasi lewat jalur kode aplikasi juga terkonfirmasi pada PHP-FPM. Kalau server masih memakai versi di bawah patch ini, update adalah langkah pertama yang tidak bisa ditunda.
TL;DR
- Dua CVE kritis: CVE-2026-109618 (RCE lewat korupsi out-of-memory) dan CVE-2026-109619 (RCE lewat global state basi), skor CVSS 9.2.
- Patch tersedia di PHP 8.5.12, 8.4.27, 8.3.36, dan 8.2.35, semuanya rilis 21 Oktober 2026.
- Pada Apache dengan mod_php, request tanpa autentikasi sudah cukup untuk memicu bug pertama sebelum kode aplikasi berjalan.
- Backport source minimal disediakan untuk PHP 7.4, 8.0, dan 8.1 karena versi itu sudah tidak menerima rilis rutin.
Versi PHP mana yang harus di-update?
Update ke patch terbaru di cabang yang sedang dipakai: 8.5.12 untuk cabang 8.5, 8.4.27 untuk 8.4, 8.3.36 untuk 8.3, dan 8.2.35 untuk 8.2. Keempat rilis itu keluar bersamaan pada 21 Oktober 2026 dan memuat perbaikan yang sama.
Bagi yang masih menjalankan PHP 7.4, 8.0, atau 8.1, tim keamanan PHP menyediakan backport source minimal. Backport itu bukan rilis resmi penuh, jadi hanya cocok untuk yang membangun PHP dari source atau tidak punya akses ke vendor long-term support.
| Cabang PHP | Versi patch | Status dukungan | Catatan |
|---|---|---|---|
| 8.5 | 8.5.12 | Rilis resmi | Jalur utama, update langsung |
| 8.4 | 8.4.27 | Rilis resmi | Update langsung |
| 8.3 | 8.3.36 | Rilis resmi | Update langsung |
| 8.2 | 8.2.35 | Rilis resmi | Cabang ini mendekati akhir siklus keamanan |
| 7.4, 8.0, 8.1 | Backport source minimal | Tidak ada rilis rutin | Hanya untuk build dari source atau pengguna vendor LTS |
Daftar unduhan source dan binary Windows ada di halaman rilis resmi. Untuk distro Linux, jalur tercepat biasanya menunggu paket dari maintainer distribusi, dan itulah alasan rilis dimajukan satu hari: distributor butuh waktu mengemas perbaikan sebelum kerentanan diumumkan.
Seberapa serius CVE-2026-109618 dan CVE-2026-109619?
Keduanya diberi skor CVSS 9.2 dan memungkinkan eksekusi kode dari jarak jauh tanpa kredensial. Yang membuatnya berat adalah lokasi bug: manajemen memori dan penanganan error, dua bagian yang disentuh hampir setiap request PHP.
CVE-2026-109618 terjadi saat sebuah request mencapai batas memory_limit pada momen yang tepat. PHP bisa meninggalkan data internal yang baru terinisialisasi sebagian, lalu memperlakukannya sebagai valid di request berikutnya sehingga memori rusak. Pada Apache dengan mod_php, request tanpa autentikasi bisa memicu kondisi ini sebelum kode aplikasi jalan, dan eksekusi kode penuh berhasil didemonstrasikan dengan pengaturan default. Pada PHP-FPM, eksekusi juga terkonfirmasi lewat jalur kode tingkat aplikasi.
CVE-2026-109619 memanfaatkan global state yang basi. Fatal error pada titik yang salah bisa membuat state internal menunjuk ke memori milik request sebelumnya. Request berikutnya yang ditangani worker yang sama lalu memakai memori yang sudah dibebaskan. Use-after-free dan crash worker terkonfirmasi, dan pelapor mendemonstrasikan eksekusi kode terhadap aplikasi nyata di Apache dengan mod_php.
Perlu dicatat satu detail yang sempat beredar keliru: skor 10.0 yang muncul di media sosial saat bocor bukan angka resmi. Skor yang benar adalah 9.2, dan PHP Foundation menyebut angka 10.0 itu salah. Skor tinggi tetap berarti prioritas patch tidak berubah.
Kenapa patch RCE ini telat beberapa bulan?
Karena perbaikannya menuntut trade-off yang sulit: memecah kompatibilitas, membuka potensi denial-of-service baru, atau memaksa perubahan pada banyak ekstensi pihak ketiga. Tim keamanan PHP bekerja dengan konsensus, dan pilihan yang buruk di antara opsi itu membuat pekerjaan berhenti dan lanjut berulang selama berbulan-bulan.
Jejaknya mulai dari audit eksternal pertama PHP dalam beberapa tahun, yang dibiayai Sovereign Tech Agency dan dijalankan lewat OSTIF oleh Quarkslab pada 2024. Saat memperbaiki salah satu temuan audit, pengembang inti yang dikontrak PHP Foundation menemukan tanda awal masalah out-of-memory di balik CVE-2026-109618. Pada 2024 potensi eksploitasi sudah teoritis, tetapi belum ada vektor konkret, dan isu lain yang dampaknya lebih jelas menutupi temuan itu.
Titik balik terjadi pada Agustus 2026. Audit dari firma Calif di bawah program Patch the Planet dimulai 30 Juli 2026, dan pada 11 Agustus peneliti bernama Ryan A melaporkan eksekusi kode tanpa syarat dengan akar masalah yang sama. Laporan serupa datang dari [OI], lalu vektor tambahan dari Wiz pada 24 Agustus dan dari [OI] pada 18 September. Sejak 11 Agustus, perbaikan masalah ini jadi prioritas utama seluruh tim keamanan PHP Foundation.
Konteks beban kerjanya juga berubah. Tim keamanan PHP sudah menerbitkan 15 CVE sejak 1 Juli 2026 dan memproses lebih dari 100 laporan yang ternyata tidak valid, duplikat, atau tidak bisa direproduksi. Alat bantu AI mempercepat validasi laporan dan pengelompokan akar masalah, tetapi keputusan akhir dan patch tetap dikerjakan manusia.
Kronologi kebocoran embargo dan dampaknya
Koordinasi berjalan baik sampai dua hari sebelum tanggal rilis. Pada Selasa, 20 Oktober 2026 sekitar pukul 15:00 UTC, dua ID CVE mulai beredar di forum dan media sosial, lengkap dengan waktu rilis yang salah dan skor CVSS 10.0 yang juga salah. Tidak ada detail teknis yang bocor saat itu.
PHP merespons dengan memajukan pra-pengumuman ke 19:30 UTC dan menggeser rilis dari 22 Oktober pukul 14:00 UTC menjadi 21 Oktober pukul 14:00 UTC. Distributor masih mengemas perbaikan, jadi merilis seketika akan membuat banyak pengguna tanpa jalur update yang mudah.
Setelah pra-pengumuman, salah satu firma keamanan pelapor, Calif, keliru memublikasikan video proof of concept yang memperlihatkan serangan terhadap sejumlah target. Video itu dihapus, tetapi salinannya sudah beredar dan mempercepat pengembangan PoC pada 21 Oktober. Pukul 07:41 UTC tanggal 21 Oktober, Chainguard memutus embargo secara sepihak dan menerbitkan image yang sudah berisi perbaikan, lebih dari enam jam sebelum rilis terkoordinasi. Artinya penyerang bisa mempelajari patch dalam bentuk binary sementara pengguna PHP lain masih menunggu.
Tim keamanan PHP memantau PoC yang muncul setelah kebocoran dan menyatakan tidak menemukan exploit fungsional pada saat pengungkapan resmi. Klaim itu berlaku untuk waktu tersebut, bukan jaminan bahwa exploit tidak akan muncul kemudian.
Apa yang harus dilakukan kalau belum bisa upgrade sekarang?
Minimal tiga hal: pastikan tidak ada instalasi PHP yang terekspos tanpa pembatasan, kurangi permukaan serangan di lapisan depan, dan siapkan jadwal update dalam hitungan hari, bukan minggu. Dua CVE ini berada di jalur yang dilewati hampir semua request, jadi menambal lebih penting daripada menambah aturan firewall yang rumit.
- Periksa versi PHP di semua host, termasuk container dan image lama yang masih jalan di produksi.
- Kalau memakai Apache dengan mod_php, prioritaskan host itu karena pemicunya bisa dicapai sebelum kode aplikasi berjalan.
- Untuk PHP 7.4 sampai 8.1, putuskan antara build dengan backport source atau migrasi ke cabang yang masih menerima rilis keamanan.
- Catat versi yang sudah dipatch per host supaya audit berikutnya tidak mengulang pengecekan manual.
Halaman rilis PHP 8.5 memuat tautan ke advisory dan daftar unduhan, sementara tulisan PHP Foundation menjelaskan kronologi lengkap serta kebutuhan pendanaan tim keamanan. Detail CVE bisa dicek di catatan resmi CVE.org, dan source patch tiap cabang ada di repositori php-src.
Cara memeriksa versi PHP dan memprioritaskan patch
Langkah pertama adalah inventaris. Kumpulkan semua host, container, dan image yang menjalankan PHP, lalu catat versi persisnya. Di server Linux, versi bisa dibaca dari output php -v atau dari paket yang terpasang di manajer paket distribusi. Untuk container, periksa tag image yang dipakai di produksi, bukan hanya tag terbaru yang ada di registry.
Setelah daftar versi terkumpul, urutkan berdasarkan eksposur. Host yang menjalankan Apache dengan mod_php dan menerima trafik dari internet berada di urutan teratas, karena pemicu CVE-2026-109618 bisa dicapai sebelum kode aplikasi berjalan. Host yang memakai PHP-FPM dengan aplikasi yang punya celah input juga berisiko, karena eksekusi lewat jalur kode tingkat aplikasi sudah terkonfirmasi. Host internal tanpa akses dari luar tetap perlu dipatch, hanya urutannya bisa belakangan.
- Catat versi PHP per host, termasuk yang berjalan di dalam container.
- Tandai host dengan mod_php yang menerima trafik publik sebagai prioritas pertama.
- Periksa apakah image lama masih dipakai di staging atau rollback slot.
- Simpan bukti versi setelah patch, misalnya output php -v bertanggal, untuk audit berikutnya.
Untuk jalur unduhan, halaman rilis PHP 8.5 memuat tautan source dan binary Windows, dan daftar lengkapnya ada di halaman downloads. Kalau membangun dari source untuk cabang lama, backport minimal tersedia lewat pengumuman proyek, dan source patch tiap cabang bisa dilihat di repositori php-src. Catatan CVE resmi ada di CVE.org untuk kedua nomor tersebut.
Penjelasan panjang soal kronologi, termasuk mengapa perbaikan tertunda berbulan-bulan dan bagaimana proses pengungkapan berjalan, ada di tulisan PHP Foundation. Tulisan itu juga memuat rincian laporan dari beberapa firma keamanan dan peran pendanaan dalam kecepatan perbaikan. Membacanya membantu memahami mengapa bug di jalur memori bisa bertahan lama meski dampaknya besar.
FAQ
Apakah PHP 8.2.35 masih didukung?
PHP 8.2.35 adalah rilis keamanan resmi untuk cabang 8.2 pada 21 Oktober 2026. Cabang ini mendekati akhir siklus dukungan keamanan, jadi rencanakan migrasi ke 8.3 atau lebih baru sambil tetap memasang patch ini sekarang.
Apakah bug ini bisa dieksploitasi tanpa akses ke server?
Ya. Pada Apache dengan mod_php, request tanpa autentikasi bisa memicu kondisi out-of-memory sebelum kode aplikasi berjalan. Pada PHP-FPM, eksekusi terkonfirmasi lewat jalur kode tingkat aplikasi, yang berarti celah di aplikasi bisa membuka jalan.
Apakah skor CVSS-nya 10.0?
Bukan. Skor resmi adalah 9.2. Angka 10.0 muncul saat ID CVE bocor di media sosial sebelum pengumuman resmi, dan PHP Foundation menyebut angka itu salah. Skor yang lebih rendah tidak mengurangi urgensi patch.
Mengapa rilis dimajukan satu hari?
Karena ID CVE bocor lebih awal. PHP menggeser rilis dari 22 Oktober ke 21 Oktober 2026 pukul 14:00 UTC, setelah memajukan pra-pengumuman, supaya distributor punya waktu mengemas perbaikan tanpa memperpanjang jendela risiko.
Apakah container otomatis aman setelah image diperbarui?
Tidak otomatis. Image baru hanya membantu kalau container benar-benar dijalankan ulang dengan image tersebut. Periksa juga image lama yang masih tersimpan dan dipakai di lingkungan staging atau produksi.
💬 Komentar (0)
Belum ada komentar. Jadilah yang pertama! 💬