Lewati ke isi

Keamanan/Cyber Security

PHP-CGI CVE-2024-4577, Celah RCE di Server Windows

CVE-2024-4577 membuat PHP-CGI di Windows bisa disusupi perintah lewat satu karakter. Cek apakah servermu terdampak dan langkah menutupnya.

Terbit 5 menit baca

Jawaban singkat

CVE-2024-4577 adalah celah injeksi argumen di PHP yang berjalan sebagai CGI di Windows. Fitur Best-Fit Windows mengubah soft hyphen menjadi tanda minus, sehingga penyerang bisa menjalankan kode PHP dari jarak jauh. Perbaikannya ada di PHP 8.3.8, 8.2.20, dan 8.1.29.

Daftar isi
  1. Kenapa satu karakter bisa membobol server?
  2. Langkah memeriksa dan menutup celah
  3. 1. Pastikan apakah servermu memakai PHP-CGI di Windows
  4. 2. Cek locale sistem dan versi PHP
  5. 3. Update PHP ke versi yang sudah ditambal
  6. 4. Pasang mitigasi sementara bila belum bisa update
  7. 5. Tinggalkan mode CGI
  8. 6. Periksa tanda penyusupan
  9. Ringkasan dampak per lingkungan
  10. Pertanyaan yang sering diajukan
  11. Checklist sebelum menutup kasus ini

Apakah kamu masih menjalankan PHP di Windows, entah lewat XAMPP di komputer kantor, server aplikasi internal, atau Windows Server yang melayani website lama? Kalau PHP-nya berjalan dalam mode CGI, server itu bisa terkena CVE-2024-4577, celah yang membuat penyerang menjalankan kode PHP dari jarak jauh hanya dengan satu karakter khusus di URL.

Celah ini ditemukan Orange Tsai dari tim riset DEVCORE dan diumumkan pada 6 Juni 2024. NVD memberi skor CVSS 3.1 sebesar 9.8 (kritis), dan CISA memasukkannya ke katalog celah yang dieksploitasi pada 12 Juni 2024 dengan catatan pernah dipakai dalam kampanye ransomware. Perbaikannya tersedia di PHP 8.3.8, 8.2.20, dan 8.1.29.

CVE-2024-4577

Kritis · CVSS 9.8
Produk terdampak
PHP (mode CGI di Windows)
Versi terdampak
sebelum 8.3.8, 8.2.20, 8.1.29
Versi aman
8.3.8, 8.2.20, 8.1.29
Status
Patch tersedia
Diumumkan
6 Juni 2024
Detail di NVD

Kenapa satu karakter bisa membobol server?

Ini sebenarnya celah lama yang bangkit lagi. Pada 2012, PHP-CGI terkena CVE-2012-1823: query string yang diawali tanda minus diteruskan sebagai opsi baris perintah ke php-cgi. Perbaikannya waktu itu memblokir query string yang diawali -.

Di Windows, perbaikan itu bisa dilewati. Windows punya fitur "Best-Fit" yang mengganti karakter dengan karakter yang mirip ketika mengonversi teks antar code page. Menurut advisori resmi PHP, karakter soft hyphen (0xAD) diubah menjadi tanda minus biasa (0x2D) di code page 932 (Jepang), 936 (Tionghoa Sederhana), dan 950 (Tionghoa Tradisional).

Akibatnya, penyerang mengirim %AD di URL. Filter PHP tidak menganggapnya tanda minus, tetapi setelah dikonversi Windows, php-cgi menerimanya sebagai opsi. Opsi seperti -d allow_url_include=1 dan -d auto_prepend_file=php://input lalu membuat isi permintaan dijalankan sebagai kode PHP.

Langkah memeriksa dan menutup celah

1. Pastikan apakah servermu memakai PHP-CGI di Windows

Celah ini hanya relevan untuk PHP di Windows yang dipanggil sebagai CGI, misalnya Apache yang mengarahkan file PHP ke php-cgi.exe lewat Action, SetHandler, atau ScriptAlias. DEVCORE menyebut instalasi XAMPP untuk Windows dengan pengaturan bawaan termasuk terdampak karena php-cgi.exe dibuka lewat alias /php-cgi/.

PHP di Linux tidak terdampak celah ini. PHP di Windows yang memakai mod_php atau PHP-FPM juga tidak memakai jalur CGI yang sama, walau tetap sebaiknya diperbarui.

2. Cek locale sistem dan versi PHP

Jalankan php -v di Command Prompt untuk melihat versi. Eksekusi kode jarak jauh terkonfirmasi pada Windows dengan locale Tionghoa Tradisional, Tionghoa Sederhana, dan Jepang. Windows berbahasa Inggris atau Indonesia memakai code page berbeda, tetapi DEVCORE menegaskan locale lain belum sepenuhnya bisa dipastikan aman. Jangan jadikan locale sebagai alasan menunda update.

3. Update PHP ke versi yang sudah ditambal

Unduh rilis terbaru dari windows.php.net untuk cabang yang kamu pakai, minimal 8.3.8, 8.2.20, atau 8.1.29. Pengguna XAMPP perlu lebih teliti: saat celah diumumkan, DEVCORE mencatat XAMPP belum merilis paket yang sudah ditambal. Cek apakah versi XAMPP terbaru membawa PHP yang memenuhi batas di atas. Bila belum, ganti folder PHP secara manual dengan hati-hati atau pakai mitigasi di langkah berikutnya.

PHP 8.0, 7.x, dan 5.x sudah habis masa dukungannya dan tidak mendapat perbaikan. Untuk versi ini hanya ada mitigasi sementara, dan rencana migrasi perlu dibuat segera.

4. Pasang mitigasi sementara bila belum bisa update

DEVCORE memberi aturan rewrite untuk Apache yang memblokir query string berawalan %AD:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^%ad [NC]
RewriteRule .? - [F,L]

Untuk XAMPP yang tidak butuh PHP-CGI, cara yang lebih tuntas adalah mematikan alias-nya. Buka C:/xampp/apache/conf/extra/httpd-xampp.conf, cari baris berikut, lalu beri tanda pagar di depannya:

# ScriptAlias /php-cgi/ "C:/xampp/php/"

Restart Apache setelah perubahan. Mitigasi ini menutup jalur serangan yang diketahui, tetapi tetap bukan pengganti update.

5. Tinggalkan mode CGI

Mode CGI menjalankan proses PHP baru untuk setiap permintaan dan meneruskan input ke baris perintah. Itu lambat sekaligus memperluas permukaan serangan. DEVCORE menyarankan beralih ke arsitektur yang lebih aman seperti mod_php, FastCGI, atau PHP-FPM. Untuk website produksi, PHP-FPM di belakang Nginx atau Apache di server Linux adalah susunan yang paling umum. Perbandingan web server-nya ada di Nginx vs Apache vs LiteSpeed.

6. Periksa tanda penyusupan

Karena celah ini dipakai dalam kampanye ransomware, server yang sempat terbuka ke internet dalam versi rentan perlu diperiksa. Cari di log akses Apache permintaan yang mengandung %AD atau allow_url_include, file PHP atau executable baru di folder web, dan proses asing yang berjalan sebagai akun web server. Bila ada tanda kuat, isolasi server dan pulihkan dari backup bersih.

Ringkasan dampak per lingkungan

LingkunganTerdampak?Prioritas
Windows + Apache + PHP-CGI (termasuk XAMPP bawaan)YaUpdate segera, matikan CGI
Windows dengan FastCGI atau mod_phpRisiko jauh lebih rendahTetap update rutin
Linux dengan PHP-FPM atau mod_phpTidakUpdate rutin
PHP 8.0 dan lebih lama di Windows CGIYa, tanpa patchMitigasi sementara, lalu migrasi

Untuk menentukan urutan perbaikan bila ada banyak celah sekaligus, panduan membaca skor CVSS dan katalog KEV CISA bisa membantu. CVE-2024-4577 memenuhi dua sinyal terkuat: skor kritis dan tercatat dieksploitasi.

Pertanyaan yang sering diajukan

Apakah website PHP di hosting Linux biasa ikut terdampak?

Tidak. Celah ini bergantung pada konversi karakter Best-Fit di Windows. Hosting Linux dengan PHP-FPM atau LiteSpeed tidak terkena CVE-2024-4577.

XAMPP di laptop untuk belajar, perlu dikhawatirkan?

Risikonya rendah bila Apache hanya bisa diakses dari komputer itu sendiri. Masalahnya muncul bila port 80 atau 443 dibuka ke jaringan atau internet. Tetap update atau matikan alias php-cgi.

Windows saya berbahasa Inggris. Apakah aman?

Eksploit terkonfirmasi untuk locale Jepang dan Tionghoa, sedangkan locale lain belum bisa dipastikan sepenuhnya aman. Update PHP tetap langkah yang paling aman.

Apakah aturan rewrite cukup?

Aturan itu hanya mitigasi sementara untuk pola yang diketahui. Perbaikan sebenarnya adalah update PHP ke versi yang sudah ditambal dan meninggalkan mode CGI.

Checklist sebelum menutup kasus ini

  • PHP di Windows sudah versi 8.3.8, 8.2.20, 8.1.29 atau lebih baru.
  • Alias /php-cgi/ di XAMPP dimatikan bila tidak dipakai.
  • Server Windows tidak membuka Apache ke internet tanpa alasan jelas.
  • Log akses sudah diperiksa untuk pola %AD dan allow_url_include.
  • Rencana pindah dari CGI ke PHP-FPM atau FastCGI sudah dijadwalkan.

Sumber & referensi

Baca juga