Cara Mengecek Versi PHP dan Mengamankan Server dari PHP2Shell

Untuk mengurangi risiko PHP2Shell, mulai dengan inventarisasi runtime yang benar-benar melayani aplikasi, lalu pasang paket perbaikan dari sumber resmi. Dua CVE yang dikenal sebaga...

Cara Mengecek Versi PHP dan Mengamankan Server dari PHP2Shell
Iklan

Untuk mengurangi risiko PHP2Shell, mulai dengan inventarisasi runtime yang benar-benar melayani aplikasi, lalu pasang paket perbaikan dari sumber resmi. Dua CVE yang dikenal sebagai PHP2Shell adalah CVE-2026-109618 dan CVE-2026-109619. Versi perbaikan upstream adalah PHP 8.2.35, 8.3.36, 8.4.27, dan 8.5.12. PHP 8.1 dan yang lebih lama tidak lagi diperbarui oleh proyek PHP, meski beberapa vendor masih dapat memberikan backport. Versi distro atau panel hosting mungkin memakai nomor paket berbeda.

1. Temukan semua instalasi PHP

Di terminal, php -v menunjukkan versi PHP CLI. Hasil ini belum tentu sama dengan versi yang digunakan situs. Pada Linux, periksa paket terpasang melalui manajer paket distro dan daftar layanan seperti PHP-FPM. Pada shared hosting, lihat pemilih versi PHP per domain dan minta konfirmasi penyedia hosting. Periksa pula container image, server staging, worker, dan cron job.

Catat versi, sumber paket, domain atau layanan yang menggunakannya, serta siapa pemilik sistem. Jangan memublikasikan halaman diagnostik berisi phpinfo() ke internet; halaman tersebut mengungkap konfigurasi sensitif. Jika pernah dipakai, hapus setelah pemeriksaan.

Iklan

2. Cocokkan dengan advisori vendor

Gunakan advisori resmi PHP dan keamanan vendor OS, container, atau panel. Jika vendor menyatakan paketnya telah diperbaiki melalui backport, verifikasi nomor rilis paket tersebut dan pastikan repositori keamanan aktif. Jangan menganggap instalasi lawas aman hanya karena vendor mengubah nomor paket, dan jangan memasang binary acak dari situs tidak resmi.

3. Perbarui dan muat ulang layanan

Ikuti prosedur vendor untuk memperbarui paket PHP yang benar. Setelah pembaruan, restart atau reload PHP-FPM dan layanan web yang relevan, lalu restart worker jangka panjang dan container agar tidak terus memuat binary lama. Periksa ulang versi melalui kanal yang sama dengan runtime web. Pada hosting terkelola, minta penyedia mengonfirmasi patch dan restart untuk setiap domain.

4. Tambahkan pertahanan berlapis

  • Batasi panel administrasi dan endpoint sensitif ke VPN atau daftar IP tepercaya.
  • Jalankan PHP dengan akun layanan berhak minimum dan pisahkan aplikasi satu sama lain.
  • Batasi akses keluar server bila arsitektur memungkinkan, serta simpan rahasia di luar direktori publik.
  • Pasang pembaruan framework, CMS, plugin, dan sistem operasi secara rutin.
  • Gunakan WAF sebagai lapisan tambahan dan pantau perubahan aturan serta false positive.

Jika pembaruan belum bisa dilakukan, advisori PHP mencantumkan mitigasi sementara tertentu, termasuk menonaktifkan session.upload_progress pada konfigurasi server yang berlaku sebelum parsing permintaan untuk jalur CVE-2026-109619. Untuk CVE-2026-109618, ada panduan konfigurasi batas memori dan ukuran POST. Mitigasi ini hanya mengurangi paparan jalur tertentu dan bukan pengganti pembaruan; ikuti detailnya pada advisori resmi PHP.

Langkah pertahanan berlapis mengurangi dampak bila ada kelemahan lain, tetapi tidak menggantikan patch inti PHP. Untuk penjelasan konteks dan dampaknya, baca apa itu PHP2Shell dan dampaknya.

Iklan

Checklist singkat

  1. Inventaris semua versi PHP, termasuk CLI, FPM, container, staging, dan hosting.
  2. Periksa advisori vendor dan status backport.
  3. Perbarui ke paket yang dinyatakan telah diperbaiki.
  4. Restart semua proses yang menggunakan runtime.
  5. Ulangi pemeriksaan dan dokumentasikan bukti versi paket.

Rujukan: Advisori keamanan resmi PHP, 21 Oktober 2026.

Langkah pemeriksaan dengan contoh

PHP CLI

Di server Linux, jalankan php -v untuk mengetahui versi CLI yang ditemukan melalui PATH. Untuk melihat lokasi binary, jalankan command -v php. Perintah tersebut berguna untuk cron dan skrip terminal, tetapi belum tentu menunjukkan runtime yang dipakai permintaan situs.

Dapatkan Update Terbaru

Berlangganan gratis. Artikel & tutorial coding terbaru langsung ke email kamu. Tanpa spam.

PHP-FPM dan layanan web

Periksa layanan PHP-FPM yang aktif melalui systemd atau alat layanan distro, lalu cocokkan unit dan socket dengan konfigurasi virtual host. Sebuah server bisa memiliki beberapa versi FPM yang terpasang sekaligus. Pastikan setiap domain diarahkan ke socket versi yang dimaksud. Pada container, periksa tag image yang benar-benar dideploy, bukan hanya Dockerfile di repositori.

Jangan membuat endpoint publik berisi phpinfo() untuk menguji versi. Bila membutuhkan pemeriksaan dari aplikasi, lakukan melalui panel internal yang terlindungi atau endpoint diagnostik sementara yang hanya tersedia untuk administrator dan segera hapus setelah dipakai.

Iklan

Prosedur pembaruan yang lebih aman

  1. Inventaris dan rencana pemeliharaan. Catat domain, versi runtime, pool, paket/vendor, dan aplikasi yang mungkin terdampak. Perhatikan kebutuhan ekstensi PHP serta kompatibilitas aplikasi.
  2. Ambil cadangan dan siapkan pemulihan. Pastikan backup konfigurasi dan data tersedia, serta tahu cara mengembalikan paket bila pembaruan menimbulkan masalah operasional.
  3. Perbarui dari sumber tepercaya. Gunakan repositori keamanan distro, vendor hosting, atau image resmi yang telah diperbarui. Jangan mengunduh binary dari tautan acak.
  4. Restart seluruh worker. Reload/restart PHP-FPM dan web server sesuai prosedur, recreate container, dan restart worker antrean, scheduler, atau proses jangka panjang.
  5. Verifikasi runtime web. Cocokkan paket terpasang, versi binary, pool yang digunakan tiap situs, serta status worker. Pastikan tidak ada proses lama yang terus berjalan.
  6. Uji aplikasi. Periksa halaman utama, login, unggah berkas, API, pekerjaan latar, dan log error. Simpan catatan waktu perubahan dan hasil verifikasi.

Mitigasi sementara: gunakan dengan batasan

Advisori PHP menegaskan pembaruan adalah satu-satunya solusi lengkap. Jika belum dapat dilakukan, beberapa pengaturan dapat mengurangi jalur tertentu. Untuk CVE-2026-109619, PHP menyarankan menonaktifkan session.upload_progress.enabled pada php.ini, pool FPM, atau konfigurasi server yang berlaku sebelum parsing permintaan, lalu restart setiap worker. Jangan mengandalkan ini_set() atau .user.ini untuk pengaturan ini. Pada PHP 8.5, advisori juga menyebut fatal_error_backtraces=0 untuk memblokir jalur fatal backtrace yang telah dikonfirmasi. Keduanya tidak menutup semua varian.

Untuk CVE-2026-109618, advisori memuat panduan seperti memory_limit=-1 yang tidak dapat ditimpa aplikasi, batas post_max_size yang rendah sesuai kebutuhan upload, dan batas ukuran permintaan pada web server/proxy. Pengaturan ini perlu dievaluasi oleh administrator karena dapat memengaruhi konsumsi sumber daya dan fitur upload. Terapkan berdasarkan dokumentasi PHP dan pengujian lingkungan Anda; jangan menyalin angka secara membabi buta. Hindari mengganti batas kontainer/cgroup dengan RLIMIT_AS atau RLIMIT_DATA untuk tujuan ini, karena advisori memperingatkan konfigurasi tersebut dapat memicu kegagalan alokasi terkait.

Checklist untuk shared hosting

Jika tidak memiliki akses root, catat versi PHP untuk setiap domain dari panel hosting, buka tiket dukungan yang menyebut CVE-2026-109618 dan CVE-2026-109619, lalu minta konfirmasi versi paket yang telah diperbaiki, backport jika ada, dan waktu restart PHP-FPM. Simpan jawaban vendor. Bila provider tidak dapat memberi status patch yang jelas, kurangi paparan fitur administrasi sementara dan evaluasi migrasi ke layanan yang menyediakan pembaruan keamanan terkelola.

Setelah perubahan selesai, lanjutkan dengan pemeriksaan tanda kompromi. Patch menutup kerentanan, tetapi tidak membuktikan bahwa tidak ada eksploitasi yang terjadi sebelum pembaruan.

Iklan
PHP2Shell update PHP versi PHP aman CVE PHP keamanan server
Rekomendasi

Hosting Cepat untuk Website & Laravel

Butuh hosting yang ngebut dan stabil untuk deploy website atau aplikasi Laravel-mu? Ini rekomendasi yang saya pakai.

Lihat Rekomendasi Hosting
Yudhi
Ditulis oleh

Yudhi

Web Developer

Web developer yang sehari-hari berkutat dengan PHP, Laravel, JavaScript, dan MySQL. Terbiasa membangun aplikasi web dari nol โ€” merancang database, menulis fitur, memburu bug, hingga deploy ke server โ€” lalu menuangkan solusi dan tutorialnya di DhieCoderWeb agar lebih mudah diikuti developer lain.

Bagikan artikel
Kembali

Komentar (0)

Punya pertanyaan atau tambahan? Tulis di bawah โ€” tak perlu login.

Membalas komentarโ€ฆ batal

Belum ada komentar. Jadilah yang pertama!

๐Ÿš€ Partner Recommendation

Butuh Source Code & Aplikasi Premium?

Download aplikasi Laravel, POS, Sekolah, Klinik, ERP, dan source code siap pakai di GudangCode.

GudangCode
  • โœ” Source Code Premium
  • โœ” Sistem Siap Pakai
  • โœ” Lifetime Update
  • โœ” Membership Lifetime
  • โœ” Update Aplikasi Harian
Daftar Membership โ†’
Iklan
Iklan