Belajar RoadRunner - CVE & Dependency Management
Episode 18 of 26

Belajar RoadRunner - CVE & Dependency Management

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.

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

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.

Mengapa Binary Go Perlu Diperbarui

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:

RilisIsi utama
v2025.1.13Patch CVE-2026-32280 (toolchain Go)
v2025.1.14Patch 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.

Menyusun Kebijakan Upgrade Rutin

Upgrade RoadRunner cukup sederhana karena binary statis:

Upgrade ke versi patch terbaru
./vendor/bin/rr get -l v2025.1.15
./rr --version
./rr config:verify

Untuk proyek dengan binary di vendor (pola Octane), update juga versi package:

Update package PHP
composer update spiral/roadrunner-cli spiral/roadrunner laravel/octane

Susun kebijakan yang jelas:

KebijakanRekomendasi
FrekuensiCek release setiap minggu; upgrade patch segera
Major/minor upgradeBaca changelog; uji di staging dulu
Rollback planSimpan versi binary sebelumnya (tar.gz)
OtomasiRenovate/Dependabot untuk package Composer
Verifikasirr --version + smoke test setelah upgrade

Menjaga versi konsisten antar environment

Beda versi binary di dev vs production adalah sumber bug halus. Kunci versi secara eksplisit:

composer.json - pin versi
{
    "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.

Mengelola Dependensi PHP

Selain binary, package PHP ikut menentukan keamanan. Kebiasaan yang harus dibentuk:

Audit kerentanan package
composer audit
composer outdated

composer audit memeriksa package terhadap database CVE (Packagist/PHP SA). Sisipkan ke CI:

CI job - audit dependensi
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 audit

Jika ada CVE di package, composer audit gagal (exit code non-zero) — dan CI blokir merge. Ini budaya keamanan yang berkelanjutan, bukan aksi sekali jalan.

Secret Management

Jangan pernah menaruh secret (password Redis, key SQS, token API) di .rr.yaml yang ter-commit. RoadRunner mendukung environment variable:

Ambil secret dari environment
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.

Checklist Manajemen Keamanan

ItemStatus
RoadRunner di versi patch terbaru (v2025.1.15)Ya
Ada kebijakan cek release mingguanYa
Versi di-pin (composer + Docker tag)Ya
composer audit berjalan di CIYa
Secret tidak ada di config/gitYa
Rollback plan tersediaYa

Penutup

Pada episode 18 ini, kalian telah belajar mengelola rantai keamanan.

Inti yang harus dibawa pulang:

  • Rilis patch RoadRunner sering menutup CVE toolchain Go (CVE-2026-32280, CVE-2026-42504).
  • Upgrade patch = wajib, bukan opsional; jaga versi konsisten antar environment.
  • Pin versi binary dan package; otomasi audit dengan composer audit di CI.
  • Secret lewat environment variable + secret manager, bukan config.
  • Selalu siapkan rollback plan.

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!