PHP

PHP2Shell: Celah Keamanan Kritis PHP yang Mengancam Server

17 kali dibaca

Mengenal PHP2Shell, dua celah keamanan kritis PHP yang berpotensi memungkinkan peretas mengambil alih server dari jarak jauh. Pelajari dampak, versi terdampak, dan cara mengatasinya.

PHP2Shell: Celah Keamanan Kritis pada PHP yang Bisa Membuat Server Diretas dari Jarak Jauh

Pada 21 Oktober 2026, komunitas teknologi dan keamanan siber dikejutkan oleh pengumuman mengenai dua celah keamanan kritis pada PHP. Kerentanan ini dikenal dengan nama PHP2Shell dan menjadi perhatian serius karena berpotensi memungkinkan penyerang mengambil alih server melalui jaringan internet tanpa perlu login terlebih dahulu.

PHP merupakan salah satu bahasa pemrograman yang paling banyak digunakan untuk membangun website dan aplikasi web. Berbagai platform populer, seperti WordPress, Laravel, CodeIgniter, dan banyak sistem informasi lainnya, menggunakan PHP sebagai bagian dari teknologi backend mereka.

Hal yang membuat kerentanan ini sangat berbahaya adalah sumber masalahnya bukan berasal dari kesalahan penulisan kode pada aplikasi, melainkan dari bagian inti PHP itu sendiri, yang dikenal sebagai PHP Runtime.

Artinya, sebuah website yang selama ini sudah menggunakan validasi input, sistem autentikasi, dan perlindungan aplikasi belum tentu aman apabila PHP yang menjalankannya masih menggunakan versi yang rentan.

Lalu, sebenarnya apa itu PHP2Shell? Bagaimana celah ini bisa dimanfaatkan untuk menyerang server? Siapa saja yang terdampak, dan apa yang harus dilakukan untuk mengatasinya?

Mari kita bahas secara bertahap.

1. Apa Itu PHP2Shell?

PHP2Shell adalah sebutan untuk dua kerentanan keamanan kritis yang ditemukan pada mesin inti PHP (PHP Runtime).

Kedua kerentanan tersebut memiliki identitas:

  1. CVE-2026-109618 — kerentanan pada penanganan kondisi kehabisan memori (Out-of-Memory).
  2. CVE-2026-109619 — kerentanan akibat penggunaan kembali data memori yang sebenarnya sudah dibebaskan (Use-After-Free).

Keduanya memiliki tingkat keparahan Critical dengan skor CVSS v4.0 sebesar 9,2 dari 10.

Mengapa disebut PHP2Shell?

Istilah tersebut menggambarkan potensi serangan dari kerentanan PHP yang dapat berujung pada akses eksekusi perintah di server. Dalam dunia keamanan komputer, kemampuan menjalankan perintah pada server dari jarak jauh dikenal sebagai Remote Code Execution (RCE).

Dengan kata sederhana, apabila serangan berhasil, penyerang berpotensi menjalankan perintah di komputer server meskipun tidak memiliki akun untuk masuk ke website tersebut.

Hal ini dapat membuka peluang bagi penyerang untuk mencuri data, mengubah file website, memasang program berbahaya, atau melakukan tindakan lain sesuai dengan hak akses proses PHP yang berhasil dikuasai.

2. Mengapa Kerentanan Ini Sangat Berbahaya?

Untuk memahami bahayanya, kita perlu mengetahui terlebih dahulu bagaimana sebuah website PHP bekerja.

Ketika seseorang membuka halaman website, misalnya:

https://contohwebsite.com/login

Browser akan mengirimkan permintaan (HTTP Request) ke server. Server kemudian meneruskan permintaan tersebut kepada PHP untuk diproses.

PHP menjalankan kode aplikasi, mengambil data dari database apabila diperlukan, lalu menghasilkan respons yang dikirim kembali kepada browser.

Secara sederhana, alurnya seperti ini:

Pengunjung → Web Server → PHP → Aplikasi → Database → Browser

Pada kasus PHP2Shell, masalahnya berada pada mesin PHP yang memproses permintaan tersebut.

Artinya, penyerang dapat mengirimkan permintaan HTTP yang dirancang secara khusus untuk memicu kerentanan pada PHP. Pada konfigurasi tertentu, proses eksploitasi bahkan dapat terjadi sebelum kode aplikasi seperti Laravel atau CodeIgniter dijalankan.

Inilah yang membuat kerentanan ini tidak bisa dianggap sebagai masalah biasa pada sebuah aplikasi web.

Beberapa risiko yang dapat terjadi apabila serangan berhasil antara lain:

  1. Menjalankan perintah dari jarak jauh. Penyerang berpotensi menjalankan perintah sistem operasi melalui proses PHP yang berhasil dieksploitasi.
  2. Mengakses file server. File konfigurasi aplikasi yang berisi informasi penting, seperti kredensial database, dapat menjadi sasaran.
  3. Mencuri informasi sensitif. Data yang dapat diakses oleh proses PHP berpotensi terekspos.
  4. Mengubah isi website. Penyerang dapat memodifikasi file website apabila memiliki hak akses yang memadai.
  5. Memasang backdoor. Penyerang dapat mencoba meninggalkan akses tersembunyi agar bisa kembali masuk ke server.
  6. Mengganggu layanan. Server dapat mengalami gangguan, bahkan membuat website tidak dapat diakses.

Perlu dipahami bahwa dampak sebenarnya bergantung pada keberhasilan eksploitasi, konfigurasi server, dan hak akses proses PHP yang diserang.

3. Mengenal Dua Jenis Kerentanan PHP2Shell

PHP2Shell terdiri dari dua kerentanan yang memiliki mekanisme berbeda.

A. CVE-2026-109618: Out-of-Memory Handling

Kerentanan pertama berkaitan dengan penanganan kondisi Out-of-Memory atau OOM.

Apa itu Out-of-Memory?

Bayangkan komputer memiliki kapasitas memori (RAM) yang terbatas. Ketika sebuah program membutuhkan memori lebih banyak daripada yang tersedia, program tersebut dapat mengalami kondisi kehabisan memori.

Dalam kondisi normal, PHP seharusnya menangani keadaan tersebut dengan aman.

Namun, pada kerentanan ini terdapat masalah dalam proses penanganan kesalahan ketika PHP mengalami kondisi kehabisan memori.

Akibatnya, beberapa struktur data internal PHP dapat berada dalam kondisi belum terinisialisasi secara sempurna. Pada situasi tertentu, proses pembersihan data setelah kesalahan tersebut justru dapat memperlakukan data yang belum valid seolah-olah data tersebut sudah benar.

Kondisi ini dapat menyebabkan kerusakan memori dan berpotensi dimanfaatkan untuk menjalankan kode berbahaya.

Dengan kata lain, masalahnya bukan sekadar server kehabisan RAM, tetapi bagaimana PHP menangani kondisi tersebut.

B. CVE-2026-109619: Use-After-Free

Kerentanan kedua berkaitan dengan istilah Use-After-Free.

Untuk memahami istilah ini, bayangkan PHP menggunakan sebuah tempat penyimpanan sementara di dalam memori komputer untuk menyimpan data ketika memproses permintaan pengunjung.

Setelah proses selesai, tempat penyimpanan tersebut seharusnya dibebaskan agar bisa digunakan kembali.

Masalah terjadi ketika program masih memiliki referensi atau petunjuk menuju tempat penyimpanan yang sebenarnya sudah dibebaskan.

Kondisi ini disebut Use-After-Free.

Ibaratnya, seseorang masih memegang alamat rumah lama, padahal rumah tersebut sudah dibongkar dan lahannya digunakan untuk bangunan lain. Jika alamat lama tersebut masih digunakan, program bisa membaca atau memproses data yang tidak semestinya.

Pada kerentanan PHP ini, sebagian status internal yang berkaitan dengan permintaan sebelumnya dapat tertinggal setelah memorinya dibebaskan.

Dalam kondisi tertentu, permintaan berikutnya yang diproses oleh worker PHP yang sama dapat berinteraksi dengan status lama tersebut sebelum proses inisialisasi normal selesai.

Hal ini berpotensi menyebabkan kerusakan memori dan membuka peluang terjadinya eksekusi kode dari jarak jauh.

4. Siapa Saja yang Terdampak?

Kerentanan PHP2Shell perlu diperhatikan oleh siapa pun yang menjalankan PHP untuk melayani permintaan website.

Cakupannya tidak terbatas pada satu framework atau CMS tertentu.

Beberapa lingkungan PHP yang perlu diperiksa antara lain:

  1. PHP-FPM.
  2. Apache dengan mod_php.
  3. PHP-CGI.
  4. FrankenPHP.
  5. LiteSpeed.

Artinya, website yang menggunakan Laravel, CodeIgniter, WordPress, atau aplikasi PHP buatan sendiri tetap perlu diperiksa.

Kerentanan ini berada pada lapisan PHP, bukan hanya pada framework yang digunakan.

Bahkan, website yang tidak menggunakan framework tertentu tetap berpotensi terdampak selama menjalankan instalasi PHP yang rentan dan melayani permintaan melalui jaringan.

5. Versi PHP yang Sudah Mendapatkan Perbaikan

Tim pengembang PHP telah merilis pembaruan keamanan pada 21 Oktober 2026 untuk memperbaiki kedua kerentanan tersebut.

Berikut versi perbaikan resmi pada beberapa cabang PHP:

Versi PHPVersi perbaikanPHP 8.58.5.12PHP 8.48.4.27PHP 8.38.3.36PHP 8.28.2.35

Sebagai contoh, apabila server masih menggunakan PHP 8.3.31, versi tersebut berada di bawah versi perbaikan resmi PHP 8.3.36.

Demikian juga dengan PHP 8.4.20 yang perlu diperbarui setidaknya ke versi 8.4.27 atau versi perbaikan yang lebih baru.

Bagaimana dengan PHP 7.4, PHP 8.0, dan PHP 8.1?

Versi-versi tersebut sudah tidak termasuk dalam cabang PHP yang memperoleh dukungan keamanan reguler dari proyek utama PHP.

Untuk versi lama, administrator server perlu memeriksa apakah penyedia sistem operasi atau vendor PHP menyediakan security backport, yaitu memasukkan perbaikan keamanan ke paket versi lama tanpa harus mengubah nomor versi utamanya.

Jadi, jangan hanya melihat nomor versi. Pastikan juga paket yang digunakan benar-benar sudah menerima perbaikan keamanan dari vendor.

6. Bagaimana Cara Memeriksa Versi PHP pada Server?

Bagi pemilik website atau administrator server, langkah pertama adalah memeriksa versi PHP yang sedang digunakan.

Jika menggunakan Linux Debian atau Ubuntu, jalankan perintah berikut melalui terminal:

php -v

Contoh hasil:

PHP 8.3.31 (cli)

Dari hasil tersebut, kita mengetahui bahwa PHP CLI yang terpasang adalah versi 8.3.31.

Namun, ada satu hal penting yang sering terlewat.

Perintah php -v hanya menunjukkan versi PHP CLI, yaitu PHP yang dijalankan melalui terminal. Website yang menggunakan PHP-FPM atau Apache bisa saja menjalankan versi PHP yang berbeda.

Untuk memeriksa PHP-FPM, gunakan:

php-fpm8.3 -v

Untuk mengetahui layanan PHP-FPM yang sedang berjalan:

systemctl list-units --type=service | grep php

Administrator juga perlu memeriksa konfigurasi web server untuk memastikan versi PHP yang benar-benar digunakan oleh website.

Mengapa pemeriksaan ini penting?

Karena memperbarui PHP CLI saja belum tentu memperbarui PHP-FPM yang melayani website.

Keduanya harus diperiksa agar tidak ada proses PHP lama yang masih berjalan menggunakan versi rentan.

7. Bagaimana Cara Mengatasi PHP2Shell?

Solusi utama yang direkomendasikan adalah memperbarui PHP ke versi yang sudah mendapatkan perbaikan keamanan.

Bagi administrator server Debian atau Ubuntu, pembaruan dapat dilakukan melalui repository resmi atau repository vendor yang digunakan.

Sebelum melakukan pembaruan, periksa terlebih dahulu paket yang tersedia:

apt update

apt policy php8.3-cli php8.3-fpm

Jika versi yang sudah diperbaiki tersedia dan sesuai dengan kebutuhan aplikasi, lakukan pembaruan paket PHP yang digunakan.

Contohnya:

apt install --only-upgrade php8.3-cli php8.3-fpm

Perintah tersebut merupakan contoh untuk PHP 8.3. Sesuaikan dengan versi PHP dan paket yang benar-benar digunakan pada server.

Setelah pembaruan selesai, restart PHP-FPM:

systemctl restart php8.3-fpm

Jika menggunakan Apache dengan mod_php, layanan Apache juga perlu dimuat ulang atau direstart sesuai konfigurasi yang digunakan.

Setelah itu, periksa kembali:

php -v

php-fpm8.3 -v

Pastikan versi yang berjalan sudah menerima perbaikan keamanan.

Catatan: Jangan langsung menjalankan perintah pembaruan tanpa memeriksa repository dan kompatibilitas aplikasi. Lakukan backup dan siapkan prosedur pemulihan sebelum mengubah PHP pada server produksi.

8. Bagaimana Jika Belum Bisa Melakukan Update?

Dalam kondisi tertentu, administrator mungkin belum dapat memperbarui PHP karena keterbatasan repository, kompatibilitas aplikasi, atau kebijakan operasional server.

Tim PHP juga memberikan beberapa langkah mitigasi sementara untuk mengurangi paparan terhadap jalur eksploitasi tertentu.

Beberapa pengaturan yang perlu diperhatikan antara lain:

  1. Menonaktifkan fitur pelacakan progres upload session melalui session.upload_progress.enabled=0.
  2. Meninjau pengaturan memory_limit dan membatasi ukuran request melalui post_max_size sesuai kebutuhan aplikasi.
  3. Pada PHP 8.5, meninjau pengaturan fatal_error_backtraces.
  4. Menggunakan pembatasan request pada web server atau reverse proxy jika tersedia.
  5. Memantau aktivitas server dan memeriksa kemungkinan adanya akses yang tidak sah.

Namun, langkah-langkah tersebut bukan pengganti pembaruan keamanan.

Mitigasi hanya dapat mengurangi risiko pada jalur serangan tertentu. Tim PHP menegaskan bahwa tidak ada mitigasi sementara yang memberikan perlindungan lengkap terhadap kedua kerentanan ini.

Karena itu, pembaruan PHP tetap menjadi solusi utama.

9. Apakah Laravel dan CodeIgniter Juga Terdampak?

Ya, aplikasi yang menggunakan Laravel maupun CodeIgniter tetap perlu diperiksa apabila dijalankan menggunakan PHP yang rentan.

Sebagai contoh, sebuah aplikasi Laravel mungkin sudah menerapkan:

  1. Middleware autentikasi.
  2. Validasi input.
  3. CSRF protection.
  4. Enkripsi password.
  5. Pembatasan hak akses pengguna.
  6. Proteksi terhadap SQL Injection.

Semua mekanisme tersebut merupakan bagian dari keamanan aplikasi.

Namun, PHP2Shell menyerang mesin PHP yang berada di bawah lapisan aplikasi.

Bayangkan sebuah rumah memiliki pintu yang kuat, kunci pengaman, dan sistem alarm. Namun, jika terdapat kerusakan pada fondasi bangunannya, keamanan pintu dan alarm saja tidak cukup untuk menjamin keselamatan rumah tersebut.

Demikian pula dengan Laravel dan CodeIgniter. Keamanan framework tetap penting, tetapi keamanan PHP sebagai lingkungan tempat aplikasi berjalan juga harus diperhatikan.

Oleh karena itu, memperbarui Laravel atau CodeIgniter saja tidak akan memperbaiki kerentanan PHP2Shell.

10. Apa yang Harus Dilakukan Pemilik Website?

Tidak semua pemilik website memahami cara mengelola server atau memperbarui PHP. Namun, ada beberapa langkah sederhana yang dapat dilakukan.

  1. Hubungi administrator atau penyedia hosting. Tanyakan versi PHP yang digunakan dan apakah pembaruan keamanan PHP2Shell sudah diterapkan.
  2. Pastikan PHP yang digunakan sudah diperbaiki. Jangan hanya memeriksa versi CLI jika website menggunakan PHP-FPM.
  3. Periksa seluruh website pada server. Jika satu server menjalankan beberapa aplikasi PHP, semuanya perlu diperiksa.
  4. Lakukan backup. Simpan salinan database dan file website sebelum melakukan pembaruan.
  5. Pantau aktivitas server. Perhatikan perubahan file yang tidak dikenal, proses mencurigakan, dan aktivitas jaringan yang tidak biasa.
  6. Periksa kemungkinan kompromi. Jika server sebelumnya menjalankan PHP rentan selama periode eksploitasi, jangan langsung menganggap server aman hanya karena PHP sudah diperbarui.

Apabila ditemukan indikasi server telah berhasil disusupi, administrator perlu melakukan pemeriksaan keamanan dan penanganan insiden. Memperbarui PHP tidak otomatis menghapus backdoor yang mungkin sudah dipasang sebelumnya.

11. Kesimpulan

PHP2Shell menjadi pengingat bahwa keamanan website tidak hanya bergantung pada kualitas kode aplikasi, tetapi juga pada keamanan teknologi yang digunakan untuk menjalankannya.

Dua kerentanan, yaitu CVE-2026-109618 dan CVE-2026-109619, menunjukkan bahwa kesalahan pada pengelolaan memori di tingkat bahasa pemrograman dapat menimbulkan risiko yang sangat besar.

Bagi programmer, administrator server, maupun pemilik website, ada satu hal penting yang perlu dipahami: memperbarui framework saja tidak cukup apabila PHP yang menjalankan aplikasi masih memiliki celah keamanan.

Pastikan PHP selalu menggunakan versi yang mendapatkan pembaruan keamanan, periksa layanan PHP yang benar-benar aktif, dan lakukan pemantauan terhadap server secara berkala.

Keamanan website bukan pekerjaan yang selesai setelah aplikasi berhasil dibuat dan dipublikasikan. Keamanan merupakan proses berkelanjutan yang membutuhkan pemeliharaan dan pembaruan secara rutin.


Referensi

  1. PHP Official – Security Advisory: Critical Remote Code Execution Vulnerabilities
  2. Cyber Security Agency of Singapore – Critical Vulnerabilities in PHP (PHP2Shell)
  3. UK National Cyber Security Centre – Critical Security Issue Affecting PHP
  4. Kementerian Ketenagakerjaan RI – Mengenal Kerentanan PHP2Shell dan Rekomendasi Mitigasinya
Tag: PHP PHP2Shell Cyber Security PHP Security CVE-2026-109618 CVE-2026-109619 Server Security Laravel

Komentar 0

Diskusi seputar artikel ini. Hormati pengguna lain.

Belum ada komentar. Jadilah yang pertama!