---
title: "PHP2Shell: dari versi PHP yang rentan ke pull request yang bisa direview dengan Harbyn | Harbyn"
description: "Ikuti pemindaian publik Harbyn dari temuan PHP2Shell hingga PR pembaruan sungguhan, termasuk pin versi yang tepat, tag mengambang, dan keputusan yang tersisa untuk direview."
canonical: "https://harbyn.com/id/blog/php2shell-production-runtime"
last-updated: 2026-10-22
---

# PHP2Shell: dari versi PHP yang rentan ke pull request yang bisa direview dengan Harbyn

Diterbitkan 22 Oktober 2026 oleh Harbyn. Tag: php, security, php2shell, developer-tools.

Saat pembaruan PHP yang kritis dirilis, pengumumannya baru permulaan. Pertanyaan berikutnya khusus untuk proyek Anda: di mana versi yang terdampak dideklarasikan, dan apa yang perlu diubah?

PHP2Shell memberi kami contoh nyata. Kami menjalankan Harbyn pada repositori demo publik yang mendeklarasikan versi PHP dengan beberapa cara. Pemindaian melaporkan enam temuan di sebelas berkas, lalu Harbyn membuka pull request yang memperbarui dua pin versi yang tepat.

Anda bisa memeriksa [eksekusi pemindaian](https://github.com/harbyn/php2shell-demo/actions/runs/39718957930) dan [pull request yang sebenarnya](https://github.com/harbyn/php2shell-demo/pull/1). Berikut apa yang terjadi dan cara mencoba alur yang sama di repositori Anda sendiri.

## Apa yang terjadi dengan PHP2Shell

Pada 21 Oktober 2026, PHP merilis perbaikan untuk dua kerentanan kritis, CVE-2026-109618 dan CVE-2026-109619, yang dapat memungkinkan eksekusi kode jarak jauh tanpa autentikasi. Rilis yang sudah diperbaiki adalah **8.2.35, 8.3.36, 8.4.27, dan 8.5.12**. Lihat [pengumuman keamanan resmi PHP](https://www.php.net/archive/2026.php#2026-10-21-5).

Bagi tim pengembang, menindaklanjuti pengumuman itu berarti menemukan deklarasi PHP yang tersebar di repositori. Runtime bisa dipin di Dockerfile, dirujuk di Compose, dikonfigurasi di workflow, atau tercermin di pengaturan Composer. Deklarasi-deklarasi itu tidak semuanya bermakna sama, jadi tidak semuanya perlu diubah dengan cara yang sama.

## Demonstrasi: enam temuan, satu PR yang bisa direview

[Repositori demo](https://github.com/harbyn/php2shell-demo) kami adalah aplikasi PHP fiktif kecil yang dibuat untuk demonstrasi ini. Isinya pin versi yang tepat, versi mengambang, persyaratan Composer, dan image PHP 8.1.

Dengan Harbyn, GitHub Action memindai sebelas berkas dan melaporkan enam baris yang perlu diperhatikan. Harbyn lalu membuka PR untuk pembaruan yang didukung.

Dengan begitu ada jalur yang bisa ditelusuri dari pengumuman keamanan ke deklarasi di repositori dan perubahan yang diusulkan. Buktinya ada di log eksekusi dan diff, bukan di tangkapan layar terminal sebagai ilustrasi.

## Mengapa temuan berujung pada tindakan yang berbeda

Enam temuan itu bukan enam perbaikan yang sama:

| Deklarasi di demo | Yang perlu dilakukan |
| --- | --- |
| Dua pin versi PHP yang tepat | Perbarui ke rilis patch yang sudah diperbaiki di cabang PHP yang sama. |
| Dua versi mengambang | Bangun ulang atau perbarui lingkungannya, lalu periksa runtime yang benar-benar dipakai. |
| Persyaratan PHP di Composer | Tinjau persyaratan kompatibilitas secara terpisah dari interpreter yang terpasang. |
| Image PHP 8.1 | Pertimbangkan perpindahan ke cabang yang didukung, termasuk kompatibilitas aplikasi. |

Tag mengambang seperti `php:8.3-fpm` bisa tetap sama sementara image lama masih berjalan. Mungkin tidak ada string versi yang perlu diganti di Dockerfile; pekerjaannya adalah mendapatkan dan men-deploy image yang sudah diperbaiki.

Cabang PHP yang lebih lama juga memerlukan keputusan lain. Memindahkan aplikasi dari PHP 8.1 ke cabang yang didukung dapat memengaruhi kompatibilitas. Paket distribusi atau paket dukungan diperpanjang mungkin sudah menerima backport perbaikan, jadi periksa advisori keamanan untuk paket yang benar-benar Anda pakai. [Pengumuman PHP](https://www.php.net/archive/2026.php#2026-10-21-5) membahas pilihan-pilihan tersebut.

## Isi pull request

[PR yang dihasilkan](https://github.com/harbyn/php2shell-demo/pull/1) berisi dua perubahan yang terarah.

Di `Dockerfile`, PR memperbarui image dasar PHP:

```diff
-FROM php:8.3.35-fpm
+FROM php:8.3.36-fpm
```

Di `composer.json`, PR memperbarui `config.platform.php`:

```diff
-      "php": "8.3.35"
+      "php": "8.3.36"
```

Perubahan kedua perlu dijelaskan. Pengaturan platform Composer memberi tahu resolusi dependensi versi PHP mana yang diasumsikan. Pengaturan ini tidak memasang atau memperbarui PHP. Memperbaruinya bersama Dockerfile menyelaraskan asumsi itu dengan runtime yang dituju. Lihat [dokumentasi Composer tentang dependensi platform](https://getcomposer.org/doc/articles/composer-platform-dependencies.md).

PR mengumpulkan suntingan yang diusulkan untuk direview. Setelah direview, tim tetap membangun dan men-deploy image yang sudah diperbarui, mengganti instans lama, dan memeriksa runtime yang melayani permintaan. Begitulah perubahan di repositori sampai ke aplikasi.

## Coba Harbyn di repositori Anda

Dari direktori repositori Anda, jalankan:

```sh
npx harbyn scan
```

Pemindai berjalan secara lokal, mengunduh feed perubahan Harbyn yang ditandatangani, dan memeriksa deklarasi yang didukung tanpa mengunggah kode sumber Anda.

Tinjau berkas, baris, dan sumber yang dilaporkan. Untuk menyiapkan alur PR, ikuti [dokumentasi Harbyn](https://harbyn.com/docs).

PHP2Shell adalah salah satu contoh masalah yang dibantu Harbyn untuk developer: perubahan eksternal menjadi relevan bagi satu baris tertentu di repositori. Harbyn menghubungkan perubahan itu dengan kode dan, jika ada perbaikan yang didukung, menyiapkan pembaruannya untuk direview.

[Pindai proyek Anda](https://harbyn.com), atau lihat dulu [PR publik PHP2Shell](https://github.com/harbyn/php2shell-demo/pull/1).
