Hai semuanya, apa kabar? Kali ini aku gak share info update keamanan Proxmox, tapi ada juga update keamanan yang bikin geger komunitas IT. Kali ini kerentanannya berkaitan dengan PHP, salah satu bahasa pemrograman yang digunakan pada sebagian besar situs dan aplikasi berbasis web di dunia.
Kerentanan ini memungkinkan remote code execution (RCE) tanpa autentikasi. Hal ini memungkinkan attacker untuk dapa menjlankan perintah pada server korban tanpa perlu login ke sistem milik korban. Kerentanan kali ini dibagi menjadi dua yaitu CVE-2026-109618 & CVE-2026-109619 dan memiliki skor CVSS bernilai 9.2 – Critical, bukan celah yang dianggap remeh.
CVE-2026-109618 – RCE via OOM Corruption
Saat PHP memroses request dengan ukuran besar dan kehabisan memori, normalnya PHP akan berhenti dengan normal. Namun dalam kondisi tertentu, data request yang belum sepenuhnya siap, malah bisa dianggap valid saat proses pembersihan. Hal ini dapat menyebabkan memori corrupt dan attacker dapat menjalankan program/kode berbahaya. Ditambah lagi, Apache dengan mod_php, serangan bisa terjadi sebelum kode aplikasi jalan sama sekali.
Agar lebih mudah, diibaratkan menjadi cerita ini:
- Meja kita terbatas, tapi banyak kurir yang kirim barang (request dari web browser yang banyak).
- Saat meja penuh dan tidak dapat menerima barang baru yang datang, “SOP”-nya adalah berhenti terima barang, bersihkan meja agar dapat digunakan untuk menerima barang baru (proses cleanup).
- Masalahnya, misal ada barang yang “belum sepenuhnya diterima/siap” – seharusnya dalam SOP, barang tersebut akan dibuang, diabaikan, atau dianggap tidak ada.
- Namun karena adanya bug, maka barang yang belum siap tersebut tetap dianggap valid/sudah diproses.
Akibatnya, attacker bisa sengaja mengirim request yang dirancang supaya tepat saat “meja penuh” (kehabisan memori), ada data jahat yang masih dalam status setengah jadi. Karena bug tadi, data jahat ini lolos dari pembersihan dan dianggap sah. Dari situ, penyerang bisa memicu kerusakan memori (memory corruption) yang akhirnya berujung pada eksekusi kode berbahaya.
CVE-2026-109619 – RCE via Stale Global State
PHP memiliki beberapa global state seperti error, session, object yang dimiliki pada request. Ada kondisi di mana state tersebut dapat tertinggal di worker. Agar lebih mudah, diibaratkan menjadi cerita ini:
- Pelanggan A (ini adalah Request A) menitipkan sesuatu di meja pekerja (worker), sesuatu itu misalnya perintah untuk melakukan sesuatu.
- Pekerja selesai melakukan tugas yang diberikan oleh A. Normalnya, setelah tugas dilakukan, meja pekerja dibersihkan.
- Kerentanan keamanannya adalah meja tersebut terlihat seperti sudah dibersihkan, padahal isinya masih ada (atau masih ada penunjuk yang merujuk pada meja tersebut).
- Pelanggan B datang (Request B) dan dilayani oleh pekerja yang sama. Ternyata meja kerja dari pekerja ini masih ada catatan dari request A.
- Request B dapat menjalankan perintah yang ditinggalkan dari Request A.
Kondisi tersebut dinamakan use-after-free. Memori sudah dibersihkan tapi masih digunakan oleh request berikutnya. Kerentanan ini berbahaya karena attacker bisa “menitipkan” kode jahat lewat satu request, lalu “memungutnya” di request berikutnya tanpa perlu request itu berasal dari attacker. Selama request berikutnya dilayani oleh worker yang sama, kode jahat itu bisa tereksekusi.
Dampak dan Mitigasi
Karena dampaknya bukan cuma “situs error”. Dengan celah ini, attacker bisa:
- Mengambil alih proses di server
- Membaca source code aplikasi dan file konfigurasi
- Mencuri kredensial seperti password db dan API key
- Mengakses database atau layanan lain yang bisa dijangkau oleh kredensial tersebut
Mitigasi atau perbaikan yang dapat dilakukan adalah melakukan update PHP. Berikut ini versi PHP yang masih mendapat dukungan (versi aman di sebelah kanan):
- PHP 8.5 -> 8.5.12
- PHP 8.4 -> 8.4.27
- PHP 8.3 -> 8.3.36
- PHP 8.2 -> 8.2.35
Catatan: PHP 8.1 dan lebih lama tidak lagi mendapat update resmi
Setelah update, restart PHP-FPM atau web server agar interpreter baru benar-benar dimuat. Dan cek versi yang benar-benar dipakai saat melayani request, bukan cuma php -v di terminal.
Tulisan kali ini sampai di sini dulu ya. Sampai jumpa. Bye.