Analisis Kerentanan PHP2Shell CVE-2026-109618 dan CVE-2026-109619

PHP2Shell merupakan istilah yang digunakan untuk merujuk pada dua kerentanan keamanan kritis di lingkungan PHP, yaitu CVE-2026-109618 dan CVE-2026-109619. Kedua masalah ini berkaitan dengan pengelolaan memori dan status internal permintaan (request) pada PHP, yang dalam kondisi tertentu dapat membuka jalan menuju eksekusi kode jarak jauh atau remote code execution (RCE).

Kerentanan tersebut penting diperhatikan karena pemrosesan permintaan HTTP dapat mencapai komponen inti PHP sebelum kode aplikasi, termasuk logika WordPress, dijalankan. Oleh karena itu, mengandalkan pembaruan aplikasi atau plugin saja tidak cukup untuk memperbaiki kerusakan pada runtime PHP.

Artikel ini membahas prinsip kerja kedua kerentanan, perbedaan mekanismenya, lingkungan pengujian yang relevan, serta langkah mitigasi yang perlu diprioritaskan oleh administrator server.

Apa Itu Kerentanan PHP2Shell?

PHP2Shell mengacu pada dua celah di mesin PHP yang berkaitan dengan penanganan kondisi kehabisan memori (out-of-memory atau OOM) dan penggunaan status internal yang tidak lagi valid. Keduanya dapat memengaruhi proses PHP yang menangani permintaan web.

Dalam skenario serangan yang berhasil, penyerang jarak jauh berpotensi memicu gangguan layanan, membaca data yang dapat diakses oleh proses, atau menjalankan perintah dengan hak akses proses PHP. Dampak aktual bergantung pada versi PHP, konfigurasi server, arsitektur proses, dan hak akses akun layanan.

Menurut advisori keamanan PHP yang diterbitkan pada Oktober 2026, kedua kerentanan ini dikategorikan kritis. Pengelola sistem sebaiknya memeriksa versi runtime yang digunakan dan segera menerapkan pembaruan yang sesuai.

1. CVE-2026-109619: Status Permintaan Usang dan Pengungkapan Informasi

CVE-2026-109619 berkaitan dengan status internal yang dimiliki oleh suatu permintaan, tetapi tetap dapat dirujuk setelah memori pendukungnya tidak lagi valid. Kondisi ini dapat terjadi ketika proses penghentian darurat menginterupsi alur normal pembersihan permintaan.

Bagaimana mekanismenya?

Pada konfigurasi tertentu, fitur session.upload_progress berinteraksi dengan status sesi selama pemrosesan unggahan. Jika permintaan mengalami kondisi OOM dan penghentian darurat sebelum status internal direset secara aman, data yang seharusnya hanya berlaku selama permintaan tersebut dapat tertinggal pada proses pekerja.

Apabila permintaan selanjutnya ditangani oleh pekerja yang sama, status lama berpotensi digunakan kembali ketika memori yang dirujuk sudah tidak valid. Dalam riset yang mendasari analisis ini, perilaku tersebut dikaitkan dengan pengungkapan informasi melalui header HTTP Set-Cookie yang tidak semestinya.

Mengapa kondisi ini berbahaya?

Masalah utamanya bukan sekadar permintaan yang kehabisan memori. Batas keamanan yang dilanggar adalah masa hidup data internal: status milik satu permintaan tidak boleh tetap digunakan setelah masa hidup memori yang mendukungnya berakhir.

Pengungkapan informasi dapat menjadi indikator awal bahwa pengelolaan status internal telah terganggu. Dalam kondisi tertentu, masalah yang sama juga dapat menjadi bagian dari rangkaian eksploitasi yang lebih serius.

2. CVE-2026-109618: Korupsi Memori Akibat Penanganan OOM

CVE-2026-109618 berkaitan dengan penanganan kehabisan memori ketika struktur data internal PHP masih berada dalam keadaan belum sepenuhnya diinisialisasi. Proses penghentian darurat dapat menyebabkan alur normal terputus, sementara tahap pembersihan berikutnya masih menganggap struktur tersebut valid.

Peran HashTable dalam masalah ini

PHP menggunakan struktur data internal seperti HashTable untuk menyimpan berbagai informasi. Jika operasi penambahan atau pembaruan entri terputus ketika struktur berada dalam keadaan parsial, proses pembersihan berisiko memproses data yang belum siap digunakan.

Riset terhadap konfigurasi tertentu mengaitkan mekanisme ini dengan kondisi ketika alokasi memori mencapai batas yang ditetapkan. Jika data internal yang belum lengkap kemudian diperlakukan sebagai struktur yang valid, konsekuensinya dapat berupa kerusakan memori, penghentian proses, atau dalam skenario eksploitasi tertentu, eksekusi kode jarak jauh.

Perbedaan dengan CVE-2026-109619

Kedua kerentanan sama-sama berhubungan dengan pengelolaan memori, tetapi akar masalahnya berbeda. CVE-2026-109619 berpusat pada status permintaan yang bertahan melewati masa hidup memori pendukungnya. Sebaliknya, CVE-2026-109618 berpusat pada penanganan kondisi OOM ketika data internal belum selesai diinisialisasi dan kemudian diproses dalam tahap pembersihan.

3. Lingkungan Pengujian dan Batas Validasi

Riset eksploitasi pada tingkat runtime PHP harus diperlakukan sebagai pengujian yang sangat bergantung pada lingkungan. Perbedaan versi PHP, opsi kompilasi, modul, arsitektur, pustaka sistem, dan konfigurasi proses dapat mengubah perilaku memori serta hasil pengujian.

Profil validasi yang dijelaskan dalam bahan riset menggunakan PHP 8.5.11 Non-Thread Safe (NTS), Zend Engine 4.5.11, Apache 2.4.66 dengan mod_php dan model prefork, sistem x86-64, serta glibc 2.43. Konfigurasi tersebut merupakan lingkungan pengujian khusus, bukan representasi seluruh instalasi PHP.

Pengaturan seperti memory_limit, post_max_size, dan fitur kemajuan unggahan sesi juga dapat memengaruhi jalur pemrosesan yang diuji. Karena itu, hasil dari satu lingkungan tidak boleh langsung digeneralisasikan ke semua server atau dianggap sebagai bukti bahwa setiap konfigurasi rentan dengan cara yang identik.

Pengujian harus dilakukan pada laboratorium terisolasi dan sistem yang memang memiliki izin untuk diuji. Detail offset biner dan tata letak heap sebaiknya dicatat dalam dokumentasi riset internal, bukan digunakan sebagai asumsi universal untuk sistem produksi.

4. Versi PHP Terdampak dan Versi Perbaikan

Advisori keamanan PHP menyebutkan bahwa versi sebelum rilis perbaikan pada cabang yang masih didukung perlu diperbarui. Versi perbaikan upstream yang diumumkan adalah sebagai berikut.

Cabang PHP Versi perbaikan
PHP 8.5 8.5.12
PHP 8.4 8.4.27
PHP 8.3 8.3.36
PHP 8.2 8.2.35

Angka di atas merupakan versi perbaikan upstream yang relevan dengan advisori Oktober 2026. Pengguna paket dari distribusi Linux atau penyedia hosting perlu memeriksa nomor versi paket dan status backport keamanan dari vendor masing-masing.

Cabang PHP yang sudah mencapai akhir masa dukungan memerlukan perhatian tambahan. Jika tidak tersedia paket dengan perbaikan keamanan yang didukung vendor, migrasi ke cabang PHP yang masih didukung merupakan pilihan yang disarankan.

5. Langkah Mitigasi dan Pencegahan

Perbarui PHP ke versi yang telah ditambal

Langkah paling penting adalah memasang versi PHP yang telah menerima perbaikan resmi. Periksa runtime yang benar-benar digunakan oleh situs web, bukan hanya versi PHP pada terminal. Lingkungan CLI dan PHP yang dijalankan oleh Apache atau PHP-FPM dapat menggunakan instalasi berbeda.

Mulai ulang proses layanan setelah pembaruan

Pastikan proses pekerja PHP atau layanan web telah dimulai ulang sesuai prosedur sistem setelah pembaruan. Hal ini membantu memastikan proses lama tidak terus menjalankan biner yang rentan.

Tinjau fitur session upload progress

Jika aplikasi tidak membutuhkan fitur kemajuan unggahan sesi, administrator dapat mempertimbangkan untuk menonaktifkan session.upload_progress sebagai langkah pengurangan risiko sementara. Pengaturan ini bukan pengganti pembaruan PHP dan harus diuji agar tidak mengganggu fungsi aplikasi.

Tinjau batas permintaan dan penggunaan memori

Periksa pengaturan batas ukuran badan permintaan, ukuran unggahan, dan penggunaan memori agar sesuai dengan kebutuhan aplikasi. Pembatasan di reverse proxy atau server web dapat membantu mengurangi paparan terhadap permintaan yang tidak wajar, tetapi tidak memperbaiki akar masalah pada runtime PHP.

Periksa log dan indikator gangguan

Tinjau log error Apache, PHP, dan sistem untuk menemukan penghentian proses yang tidak biasa, kesalahan alokasi memori, atau pekerja yang berulang kali mengalami crash. Korelasikan waktu kejadian dengan access log untuk membantu mengidentifikasi permintaan yang mungkin berkaitan.

Batasi hak akses proses PHP

Jalankan layanan PHP menggunakan akun dengan hak minimum yang diperlukan. Pisahkan izin akses berkas, kredensial, dan layanan sensitif agar dampak potensial dari kompromi proses dapat dibatasi.

6. Dampak terhadap WordPress dan Aplikasi PHP

WordPress dan berbagai aplikasi web lain menggunakan PHP sebagai runtime. Oleh karena itu, kerentanan pada mesin PHP tidak selalu dapat diselesaikan melalui pembaruan WordPress, tema, atau plugin.

Jika PHP yang menjalankan situs masih rentan, lapisan aplikasi dapat tetap terpapar meskipun semua plugin telah diperbarui. Administrator perlu memastikan bahwa runtime yang digunakan oleh situs telah menerima patch keamanan dan bahwa layanan terkait menjalankan versi tersebut.

Plugin keamanan dan Web Application Firewall (WAF) dapat membantu mendeteksi atau membatasi sebagian pola permintaan berbahaya. Namun, kontrol tersebut tidak boleh dianggap sebagai pengganti patch karena pemrosesan yang memicu masalah dapat terjadi sebelum logika aplikasi berjalan.

Kesimpulan

CVE-2026-109618 dan CVE-2026-109619 menunjukkan pentingnya pengelolaan memori, status permintaan, dan pembersihan internal yang aman pada runtime PHP. Walaupun keduanya berkaitan dengan kerusakan memori, masing-masing memiliki mekanisme utama yang berbeda.

Administrator server sebaiknya memprioritaskan pembaruan ke versi PHP yang telah diperbaiki, memverifikasi runtime yang benar-benar digunakan, memeriksa log layanan, serta menerapkan prinsip hak akses minimum. Kontrol tambahan seperti pembatasan permintaan dan penonaktifan fitur yang tidak diperlukan dapat membantu mengurangi risiko, tetapi tidak menggantikan pembaruan resmi.

Referensi resmi dan advisori terkait:

FAQ: Pertanyaan Umum tentang PHP2Shell

1. Apa itu PHP2Shell?

PHP2Shell merupakan sebutan untuk dua kerentanan kritis PHP yang berkaitan dengan penanganan OOM dan status internal permintaan. Dalam kondisi tertentu, kerentanan ini dapat berujung pada eksekusi kode jarak jauh.

2. Apa perbedaan CVE-2026-109618 dan CVE-2026-109619?

CVE-2026-109618 berkaitan dengan struktur internal yang belum selesai diinisialisasi setelah kondisi kehabisan memori. CVE-2026-109619 berkaitan dengan status permintaan yang masih dirujuk setelah memori pendukungnya tidak lagi valid.

3. Apakah WordPress juga berisiko?

WordPress dapat terdampak apabila berjalan menggunakan runtime PHP yang rentan. Memperbarui plugin saja tidak memperbaiki kerentanan pada mesin PHP.

4. Versi PHP mana yang telah menerima perbaikan?

Versi perbaikan upstream yang diumumkan adalah PHP 8.5.12, 8.4.27, 8.3.36, dan 8.2.35. Periksa advisori vendor untuk mengetahui status paket yang digunakan pada server Anda.

5. Apakah WAF dapat sepenuhnya mencegah eksploitasi?

Tidak. WAF dapat membantu mengurangi paparan terhadap pola permintaan tertentu, tetapi tidak memperbaiki kesalahan internal pada runtime. Pembaruan PHP tetap menjadi langkah utama.

6. Apa yang harus dilakukan jika server belum bisa diperbarui?

Terapkan mitigasi sementara yang sesuai, tinjau konfigurasi fitur unggahan sesi, batasi permintaan yang tidak wajar, periksa log, dan rencanakan pembaruan secepat mungkin. Mitigasi sementara tidak memberikan perlindungan setara dengan patch resmi.

Share:

1 thought on “Analisis Kerentanan PHP2Shell CVE-2026-109618 dan CVE-2026-109619”

Comments are closed.