Celah Keamanan Laravel Oktober 2026: Bypass Login TokenGuard, Perbaikan Livewire, dan PHP2Shell

Pada 19 Oktober Laravel mengumumkan celah kritis di TokenGuard (CVE-2026-114509) yang memungkinkan login sebagai user lain, ditambah satu bug penghapusan data. Livewire menambal bypass otorisasi di #[Authorize], dan PHP sendiri perlu di-patch untuk PHP2Shell. Aplikasi mana yang terdampak, versi yang harus dipasang, dan langkah update yang tidak melupakan queue worker.

Dipublikasikan 9 menit baca
Kode PHP di layar editor berlatar gelap, difoto dari samping

Oktober jadi bulan yang sibuk bagi siapa pun yang menjalankan Laravel. Pada 19 Oktober tim Laravel menerbitkan dua advisory untuk framework-nya, salah satunya kritis: CVE-2026-114509, yang memungkinkan penyerang tanpa login masuk sebagai user yang sudah ada di route yang dilindungi token guard bawaan. Tiga hari kemudian Livewire mengumumkan bypass otorisasi di atribut #[Authorize]. Di bawah keduanya, setiap aplikasi Laravel berjalan di atas PHP, yang baru saja menerima perbaikan darurat untuk dua celah PHP2Shell pada 21 Oktober. Kabar baiknya, perbaikan di framework sebenarnya sudah tersedia sejak 25 Agustus. Kalau Anda rutin update dependensi, kemungkinan aplikasi Anda sudah aman. Kalau composer.lock Anda belum berubah sejak pertengahan tahun, lanjutkan membaca.

Ringkasnya

CelahTingkatDiperbaiki di
CVE-2026-114509: bypass autentikasi TokenGuardKritis (CVSS 4.0: 9.2)Laravel 12.68.0, 13.29.0
CVE-2026-114508: penghapusan data lewat relasiSedang (6.5)Laravel 12.68.0, 13.27.0
CVE-2026-48019: CRLF injection di validasi emailTinggi (8.9)Laravel 12.60.0, 13.10.0
CVE-2026-48041: kekacauan path di temporary signed URLSedang (4.2)Laravel 12.61.1, 13.12.0
Bypass #[Authorize] di Livewire (GHSA-mhf7-xp6r-6qrc)Sedang (6.5)Livewire 4.4.8
CVE-2026-81887: DOM-based XSS di LivewireSedangLivewire 3.8.3, 4.3.4
PHP2Shell: CVE-2026-109618 dan CVE-2026-109619Kritis (CVSS 4.0: 9.2)PHP 8.5.12, 8.4.27, 8.3.36, 8.2.35

Dalam praktiknya, update ke rilis terbaru di versi mayor Laravel yang Anda pakai (saat artikel ini ditulis 13.39.0 untuk Laravel 13 dan 12.70.2 untuk Laravel 12) dan ke Livewire terbaru sudah menutup semua celah framework di tabel. PHP harus di-update terpisah di server.

CVE-2026-114509: Login Tanpa Token

TokenGuard adalah guard API sederhana yang sudah ada di Laravel sejak lama: driver token di config/auth.php, yang mencari user dengan mencocokkan token dari request ke sebuah kolom di tabel users, secara default kolom api_token. Guard ini lebih tua dari Sanctum dan Passport, dan banyak tim sudah lupa bahwa mereka masih memakainya. Padahal cukup banyak API lama, integrasi internal, dan backend aplikasi mobile yang masih bergantung padanya.

Menurut advisory-nya, TokenGuard tidak menolak kredensial yang bukan berupa string. Di MySQL dan MariaDB, nilai non-string yang disusun khusus bisa membuat query pencarian user cocok dengan user lain yang tidak pernah membagikan tokennya. Hasilnya adalah pengambilalihan akun di semua route yang memakai guard tersebut, tanpa perlu login dan tanpa interaksi korban. Laravel tidak mempublikasikan payload persisnya, tetapi MySQL memang dikenal longgar saat membandingkan nilai dengan tipe data yang berbeda, dan celah semacam itulah yang ditutup oleh perbaikan ini. Skornya 9.2 di CVSS 4.0, dan Rapid7 mencatat sudah ada proof-of-concept di publik.

Aplikasi Anda terdampak kalau ketiga syarat ini terpenuhi: memakai guard dengan driver token, tabel users ada di MySQL atau MariaDB, dan versi laravel/framework di bawah 12.68.0 untuk Laravel 12 atau di bawah 13.29.0 untuk Laravel 13. Untuk Laravel 11, database kerentanan seperti Mend mencatat 11.56.1 sebagai versi perbaikan, yang dirilis di hari yang sama dengan perbaikan 12.x dan 13.x. Laravel 10 ke bawah sudah tidak menerima perbaikan keamanan sama sekali.

Advisory ini tidak menyebut Sanctum maupun Passport, yang memakai guard sendiri. Tapi jangan jadikan itu alasan untuk menunda update: perbaikannya berupa rilis framework, dan tiga celah framework lain di tabel tetap berlaku apa pun guard yang Anda pakai.

Perbaikan Framework Lainnya

  • CVE-2026-114508, diumumkan bersamaan dengan celah TokenGuard, berdampak ke Laravel 12.45.0 ke atas. Dalam kondisi tertentu, request ke endpoint yang seharusnya hanya membaca data, dengan relasi yang ikut dimuat, bisa memicu operasi yang menghapus isi tabel relasinya. User yang hanya punya akses baca bisa mengosongkan tabel yang seharusnya cuma bisa ia lihat. Advisory-nya tidak memberi solusi sementara; satu-satunya jalan adalah upgrade.
  • CVE-2026-48019, dari bulan Juni, adalah CRLF injection di aturan validasi email bawaan. Dikombinasikan dengan cara Symfony Mailer menangani karakter tertentu, penyerang bisa memanipulasi email keluar ketika aplikasi mengirim email ke alamat yang diketik user: registrasi, reset password, formulir kontak. Tingkatnya tinggi, 8.9.
  • CVE-2026-48041 menyangkut temporary signed URL dari driver filesystem lokal. Link yang sudah kedaluwarsa bisa tetap berlaku, atau mengarah ke file yang berbeda dari yang ditandatangani. Risikonya rendah, tetapi ikut tertutup dengan upgrade yang sama.

Livewire dan Filament

Livewire 4.4.8 yang rilis 21 Oktober menutup tiga cara melewati atribut #[Authorize] yang diperkenalkan di versi 4.3.0. Dengan mengubah urutan key parameter di request, user yang sudah login bisa lolos pengecekan otorisasi untuk data miliknya sendiri, sementara aksi yang dijalankan justru mengenai data milik orang lain. Contoh di advisory-nya adalah menghapus komentar milik user lain. Hal yang sama berlaku untuk event listener yang memakai #[On], dan method bertanda #[Json] menjalankan isinya sebelum otorisasi dicek, sehingga data di database sudah berubah walaupun klien menerima 403. Aplikasi yang memanggil $this->authorize() di dalam method, serta seluruh Livewire 3, tidak terdampak.

Terpisah dari itu, CVE-2026-81887 adalah DOM-based XSS yang sudah diperbaiki di Livewire 3.8.3 dan 4.3.4 pada akhir Juli. Dan kalau masih ada Livewire 3 di bawah 3.6.4 di salah satu server Anda, versi itu membawa CVE-2025-54068, celah remote code execution tanpa autentikasi yang oleh CISA dicatat sudah aktif dieksploitasi. Panel Filament dibangun di atas Livewire, jadi panel admin yang dipasang dua tahun lalu dan tidak pernah disentuh lagi adalah tempat versi lama biasanya bersembunyi.

PHP2Shell: Lapisan di Bawah Laravel

Semua perbaikan framework tidak banyak berarti kalau PHP-nya sendiri bisa dieksploitasi. CVE-2026-109618 dan CVE-2026-109619 bernilai 9.2 dan berdampak ke semua versi PHP sejak 2004. Detailnya kami bahas di artikel PHP2Shell. Untuk tim Laravel, langkah yang perlu diambil tergantung platform deploy-nya:

  • Laravel Forge: update keamanan otomatis tidak mem-patch PHP, karena Forge memasang PHP dari repositori paket terpisah. Gunakan tombol Update PHP di tab PHP server untuk setiap versi yang terpasang, termasuk versi yang sedang tidak dipakai situs mana pun.
  • Laravel Cloud: sudah di-patch otomatis.
  • Laravel Vapor: aplikasi dengan PHP 8 sudah di-deploy ulang otomatis. Runtime PHP 7 tidak mendapat patch dan harus pindah ke PHP 8. Image runtime Docker perlu di-build ulang.
  • VPS sendiri atau hosting cPanel: update paket PHP dari distro atau repositori ondrej/php, atau minta penyedia hosting mengonfirmasi versinya.

Langkah Update yang Tidak Ada yang Terlewat

  1. 1Cek apa yang sedang berjalan: composer show laravel/framework livewire/livewire pada lock file production, lalu php -v dan php-fpm8.x -v di server.
  2. 2Jalankan composer audit. Perintah ini mencocokkan composer.lock dengan database advisory Packagist dan menampilkan semua paket yang punya celah yang sudah diketahui, termasuk yang dibahas di atas.
  3. 3Update di dalam versi mayor yang sama: composer update laravel/framework livewire/livewire --with-all-dependencies. Anda tetap di versi mayor Laravel dan Livewire yang sama, hanya mengambil rilis patch dan minor.
  4. 4Jalankan test, lalu cek bagian yang tersentuh perbaikan ini: route API di balik token guard, endpoint yang memuat relasi berdasarkan parameter request, pengiriman email, dan komponen Livewire yang memakai #[Authorize].
  5. 5Deploy, lalu bangun ulang cache dengan php artisan optimize supaya kode framework yang baru dipakai di semua tempat.
  6. 6Restart proses yang berjalan lama: php artisan queue:restart, php artisan horizon:terminate, dan php artisan octane:reload, atau restart lewat Supervisor. Queue worker yang dinyalakan minggu lalu masih menjalankan kode minggu lalu.

Kalau Anda masih memakai TokenGuard, ini juga saat yang tepat untuk merencanakan pindah ke Sanctum. Sanctum menyimpan token dalam bentuk hash, mendukung masa berlaku dan ability per token, dan sudah bertahun-tahun menjadi pilihan yang direkomendasikan dokumentasi Laravel untuk token API.

Ada satu pola yang layak dicatat bulan ini. Perbaikan TokenGuard sudah dirilis diam-diam pada 25 Agustus, dan advisory-nya baru muncul hampir dua bulan kemudian. Tim yang update dependensi setiap beberapa minggu sudah terlindungi sebelum ada yang tahu masalahnya. Tim yang baru update kalau ada yang rusak terpapar selama itu. Composer update dan composer audit sebulan sekali sebagai pekerjaan rutin jauh lebih murah daripada menangani insiden.

Poin penting

  • CVE-2026-114509 adalah bypass TokenGuard yang kritis di MySQL dan MariaDB, memungkinkan penyerang login sebagai user lain. Update ke Laravel 12.68.0 atau 13.29.0 ke atas.
  • Update yang sama juga menutup bug penghapusan data (CVE-2026-114508), CRLF injection di validasi email, dan masalah path di signed URL.
  • Livewire 4.4.8 menutup bypass #[Authorize], 3.8.3 dan 4.3.4 menutup DOM-based XSS, dan versi di bawah 3.6.4 terpapar RCE yang sudah aktif dieksploitasi.
  • Patch PHP untuk PHP2Shell secara terpisah. Forge tidak melakukannya otomatis, sedangkan Laravel Cloud dan Vapor dengan PHP 8 sudah.
  • Jalankan composer audit, update di dalam versi mayor yang sama, deploy, lalu restart queue worker, Horizon, dan Octane supaya perbaikannya benar-benar berjalan.
Bagikan artikel ini

Artikel terkait

Artikel lain tentang software development, AI, cloud, dan infrastruktur.

Deretan laci katalog perpustakaan dari kayu dengan pegangan logam dan label kertasKeamanan

8 menit baca

phpMyAdmin dan PHP2Shell: Tidak Ada CVE Baru phpMyAdmin, tapi Instalasi Anda Tetap Terancam

Bulan ini tidak ada CVE baru untuk phpMyAdmin, dan tidak ada versi phpMyAdmin baru untuk di-install. Namun phpMyAdmin 5.2.3 termasuk aplikasi yang terbukti bisa diambil alih lewat PHP2Shell tanpa login. PHP mana yang sebenarnya menjalankan phpMyAdmin Anda, cara patch di Debian, Docker, cPanel, Plesk, dan Synology, langkah darurat yang hampir tanpa biaya, dan cara mengecek apakah server Anda sudah dimasuki.

Mari berdiskusi

Sedang mencari partner untuk pengembangan software?

Ceritakan proyek yang sedang Anda bangun, kebutuhan yang ingin diselesaikan, dan tantangan yang dihadapi. Kami dapat membantu membahas pendekatan teknis, scope, timeline, dan estimasi biaya.

Mulai diskusi