Mempelajari manajemen keamanan dependensi RoadRunner: memahami rilis patch v2025.1.x untuk CVE toolchain Go seperti CVE-2026-32280 dan CVE-2026-42504, menyusun kebijakan upgrade rutin, serta mengelola versi binary dan package PHP secara aman.

Setelah di episode 17 kita mengeraskan konfigurasi, pada episode kali ini kita mengeraskan yang satu lagi: rantai dependensi. RoadRunner adalah binary Go yang di-update reguler — sering kali bukan untuk fitur baru, melainkan untuk menutup CVE pada toolchain Go dan library yang dipakainya. Mengabaikan upgrade sama saja membiarkan pintu terbuka.
Mengapa episode ini penting? Karena serangan di level infrastruktur jarang menyerang aplikasi kalian secara langsung — mereka menyerang binary dan library yang kalian pakai tanpa sadar. Memahami siklus rilis RoadRunner dan menerapkan upgrade rutin adalah bagian tak terpisahkan dari operasional yang aman.
RoadRunner dikompilasi dengan toolchain Go dan library (misalnya fiber untuk HTTP). Setiap kali ditemukan kerentanan di lapisan ini, tim RoadRunner merilis versi patch yang mengkompilasi ulang binary dengan versi aman. Contoh riwayat rilis yang patut dicatat:
| Rilis | Isi utama |
|---|---|
| v2025.1.13 | Patch CVE-2026-32280 (toolchain Go) |
| v2025.1.14 | Patch tambahan toolchain Go |
| v2025.1.15 (17 Jun 2026) | Patch CVE-2026-42504, upgrade fiber, Go 1.26.x |
Poin kuncinya: menggunakan versi lama itu berisiko, bukan hanya "ketinggalan fitur". Banyak CVE toolchain Go bersifat eksekusi kode jarak jauh (RCE) atau denial-of-service — kategori yang bisa dieksploitasi tanpa menyentuh logika aplikasi kalian sama sekali.
Warning
Cek selalu halaman release roadrunner-server/roadrunner sebelum menjalankan versi lama di production. Bila ada rilis patch yang menyebutkan CVE, anggap itu upgrade wajib — bukan upgrade opsional.
Upgrade RoadRunner cukup sederhana karena binary statis:
./vendor/bin/rr get -l v2025.1.15
./rr --version
./rr config:verifyUntuk proyek dengan binary di vendor (pola Octane), update juga versi package:
composer update spiral/roadrunner-cli spiral/roadrunner laravel/octaneSusun kebijakan yang jelas:
| Kebijakan | Rekomendasi |
|---|---|
| Frekuensi | Cek release setiap minggu; upgrade patch segera |
| Major/minor upgrade | Baca changelog; uji di staging dulu |
| Rollback plan | Simpan versi binary sebelumnya (tar.gz) |
| Otomasi | Renovate/Dependabot untuk package Composer |
| Verifikasi | rr --version + smoke test setelah upgrade |
Beda versi binary di dev vs production adalah sumber bug halus. Kunci versi secara eksplisit:
{
"require-dev": {
"spiral/roadrunner-cli": "2.13.0"
},
"scripts": {
"rr:get": "rr get -l v2025.1.15"
}
}Gunakan image Docker dengan tag versi (bukan latest) untuk production — kita bahas di episode 21. Dengan begitu, rr --version yang sama berlaku di dev, staging, dan production.
Selain binary, package PHP ikut menentukan keamanan. Kebiasaan yang harus dibentuk:
composer audit
composer outdatedcomposer audit memeriksa package terhadap database CVE (Packagist/PHP SA). Sisipkan ke CI:
name: Security Audit
on: [push]
jobs:
audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: shivammathur/setup-php@v2
with: { php-version: '8.4' }
- run: composer install --no-interaction
- run: composer auditJika ada CVE di package, composer audit gagal (exit code non-zero) — dan CI blokir merge. Ini budaya keamanan yang berkelanjutan, bukan aksi sekali jalan.
Jangan pernah menaruh secret (password Redis, key SQS, token API) di .rr.yaml yang ter-commit. RoadRunner mendukung environment variable:
kv:
redis:
driver: redis
config:
addr: ${REDIS_ADDR}
password: ${REDIS_PASSWORD}Dan pastikan secret disuntikkan saat runtime (Docker secrets, Kubernetes Secrets, atau secret manager). Kombinasi kebijakan ini menjaga secret keluar dari git dan log.
Tip
Untuk proyek yang sudah punya banyak service, gunakan tools seperti dependabot/renovate untuk PR otomatis saat ada update. PR kecil dan rutin jauh lebih mudah direview daripada upgrade besar yang menumpuk — dan lebih cepat menutup celah.
| Item | Status |
|---|---|
| RoadRunner di versi patch terbaru (v2025.1.15) | Ya |
| Ada kebijakan cek release mingguan | Ya |
| Versi di-pin (composer + Docker tag) | Ya |
composer audit berjalan di CI | Ya |
| Secret tidak ada di config/git | Ya |
| Rollback plan tersedia | Ya |
Pada episode 18 ini, kalian telah belajar mengelola rantai keamanan.
Inti yang harus dibawa pulang:
composer audit di CI.Di episode 19 selanjutnya, kita masuk ke topik paling advanced: Temporal workflow plugin — durable execution, workflow/activity dalam PHP, dan praktik membangun sistem order/payment yang tahan kegagalan. Sampai jumpa di episode 19!