KUTIM-CSIRT mengimbau seluruh Perangkat Daerah di lingkungan Pemerintah Kabupaten Kutai Timur yang mengelola aplikasi berbasis Laravel untuk memeriksa konfigurasi autentikasi aplikasinya dan memperbarui Laravel ke versi 12.68.0 atau 13.29.0. Kerentanan CVE-2026-114509 memungkinkan penyerang masuk sebagai pengguna lain tanpa login, termasuk akun admin, pada aplikasi yang memakai guard bawaan TokenGuard dengan database MySQL atau MariaDB.
Celah ini sering tersembunyi di aplikasi lama. Proyek Laravel yang dibuat dengan versi 5.x hingga 8.x umumnya sudah membawa guard api ber-driver token di berkas config/auth.php bawaannya, walaupun tidak pernah sengaja dipakai pengembang. Aplikasi yang hanya memakai Laravel Sanctum, Laravel Passport, atau login berbasis sesi tidak terdampak CVE-2026-114509.
Ikhtisar
| CVE & Skor | Jenis Kerentanan |
|---|---|
| CVE-2026-114509 Critical CVSS 4.0: 9,2 |
Bypass autentikasi pada TokenGuard: kredensial yang bukan string dapat cocok dengan pengguna yang tidak semestinya (CWE-287, CWE-1287) |
| CVE-2026-114508 Medium CVSS 3.1: 6,5 |
Penghapusan data tanpa izin: request ke endpoint baca dapat memicu operasi destruktif pada tabel relasi (CWE-470) |
Dampak
- Pengambilalihan akun tanpa autentikasi (CVE-2026-114509). Penyerang mengirim nilai token yang dirancang khusus (bukan string) ke rute yang dilindungi guard
token. Pencarian di database lalu cocok dengan salah satu pengguna yang ada, dan penyerang diperlakukan sebagai pengguna itu. Bila pengguna yang tercocokkan adalah admin, penyerang dapat membaca, mengubah, atau menghapus data melalui API aplikasi. - Kehilangan data permanen (CVE-2026-114508). Pengguna yang hanya punya hak baca dapat mengosongkan isi tabel yang berelasi, sehingga layanan terganggu dan integritas data rusak.
Sistem yang Terdampak
CVE-2026-114509 hanya dapat dieksploitasi bila semua syarat berikut terpenuhi:
- Ada guard dengan
'driver' => 'token'diconfig/auth.php. - Ada rute yang memakai guard tersebut, misalnya middleware
auth:apidiroutes/api.php. - Database memakai MySQL atau MariaDB, dan tabel pengguna memiliki kolom token (bawaannya
api_token). - Versi
laravel/frameworkbelum diperbaiki.
Bila salah satu syarat tidak terpenuhi, misalnya kolom api_token tidak ada, eksploitasi gagal. Namun konfigurasi tersebut tetap sebaiknya dibereskan, karena perubahan skema database atau rute di kemudian hari dapat membuatnya rentan.
| Cabang Laravel | Terdampak → Versi Perbaikan |
|---|---|
| Laravel 13.x | CVE-2026-114509: semua versi sebelum 13.29.0 CVE-2026-114508: semua versi sebelum 13.27.0 → 13.29.0 menutup keduanya |
| Laravel 12.x | CVE-2026-114509: semua versi sebelum 12.68.0 CVE-2026-114508: 12.45.0 hingga sebelum 12.68.0 → 12.68.0 menutup keduanya |
| Laravel 11.x dan lebih lama (5.x–10.x) | CVE-2026-114509: semua versi → tidak ada rilis perbaikan resmi (masa dukungan keamanan sudah berakhir). Terapkan langkah sementara di bawah dan rencanakan migrasi |
Detail Teknis
CVE-2026-114509. TokenGuard mengambil token dari parameter api_token (query atau body), header Authorization: Bearer, atau password HTTP Basic. Sebelum diperbaiki, guard hanya memeriksa bahwa token tidak kosong, tanpa memastikan tipenya string. Bila penyerang mengirim api_token dalam bentuk array berisi angka, Laravel menyusun kueri WHERE api_token IN (...). Pada MySQL dan MariaDB, perbandingan string dengan angka mengubah string menjadi angka, sehingga token yang tidak diawali digit dianggap bernilai 0 dan cocok. Pengguna pertama yang tercocokkan menjadi identitas penyerang. Perbaikan di 12.68.0 dan 13.29.0 menambahkan pemeriksaan is_string() sebelum kueri dijalankan.
CVE-2026-114508. Menurut advisory Laravel, cara framework memproses permintaan penyertaan relasi (relationship inclusion) pada endpoint baca tertentu dapat dibelokkan sehingga menjalankan operasi destruktif pada tabel relasi, bukan sekadar mengambil data. Advisory tidak merinci fitur atau parameter yang terlibat. Celah ini hanya ada di Laravel 12.45.0 ke atas dan 13.x, sehingga aplikasi lama tidak terdampak.
Rekomendasi
Langkah utama: perbarui Laravel. Advisory Laravel tidak menyediakan langkah pengganti (workaround).
- Periksa versi dan konfigurasi setiap aplikasi Laravel, termasuk yang ada di kontainer, panel hosting, dan folder cadangan yang masih dilayani web server:
composer show laravel/framework | grep versionsataucomposer auditgrep -n "'driver' => 'token'" config/auth.phpgrep -rn "auth:api" routes/
- Perbarui dengan
composer update laravel/frameworkke 12.68.0 atau 13.29.0 (atau lebih baru). Uji aplikasi di lingkungan staging sebelum menerapkannya di produksi. - Bersihkan sisa konfigurasi. Bila guard
tokentidak dipakai, hapus guard tersebut dariconfig/auth.phpbeserta rute yang memakainya (misalnya rute contoh/api/userdari kerangka bawaan). Bila autentikasi token memang dibutuhkan, beralihlah ke Laravel Sanctum, yang tidak terdampak. - Jalankan ulang cache konfigurasi setelah perubahan:
php artisan config:clearlaluphp artisan config:cache. Restart PHP-FPM dan queue worker agar konfigurasi baru dipakai.
Langkah sementara untuk aplikasi yang belum dapat diperbarui, termasuk Laravel 11.x dan lebih lama. Tambahkan middleware yang menolak token yang bukan string dan pasang sebelum middleware autentikasi pada grup rute API:
// app/Http/Middleware/TolakTokenNonString.php
namespace App\Http\Middleware;
use Closure;
class TolakTokenNonString
{
public function handle($request, Closure $next)
{
$token = $request->input('api_token');
if ($token !== null && ! is_string($token)) {
abort(401);
}
return $next($request);
}
}
- Di WAF atau reverse proxy, blokir request yang memuat
api_token[atauapi_token%5Bpada URL maupun body, serta body JSON yang mengirimapi_tokensebagai array. - Batasi akses ke rute API yang terdampak hanya dari jaringan internal atau VPN sampai pembaruan diterapkan.
Periksa tanda-tanda serangan. Telusuri log akses web server untuk permintaan berisi api_token[, api_token%5B, atau api_token%255B, misalnya:
grep -E "api_token(\[|%5B|%255B)" /var/log/nginx/access.log*
Log akses biasanya tidak mencatat isi body JSON, sehingga hasil kosong bukan bukti aplikasi aman. Periksa juga aktivitas API yang tidak wajar atas nama pengguna tertentu (perubahan data, unduhan massal) sejak pertengahan Oktober 2026. Bila menemukan indikasi, jangan menghapus log atau data sebelum berkoordinasi. Laporkan melalui formulir laporan insiden.
Catatan Status Eksploitasi
Hingga 24 Oktober 2026, kedua CVE ini belum tercantum dalam katalog KEV CISA, dan KUTIM-CSIRT belum menemukan laporan eksploitasi yang terkonfirmasi. Namun mekanisme CVE-2026-114509 sudah dibahas terbuka di berbagai tulisan teknis dan mudah direproduksi, sehingga aplikasi yang memenuhi syarat di atas sebaiknya segera diperbaiki. Artikel ini akan diperbarui bila status eksploitasi berubah.
Referensi
- Laravel – GHSA-f9x3-7vq9-cph6: Token-based API guard Auth Bypass (CVE-2026-114509)
- Laravel – GHSA-5wcm-3v2w-8362: Unauthorized Data Destruction (CVE-2026-114508)
- Laravel – rilis v12.68.0 dan v13.29.0
- NVD – CVE-2026-114509
- NVD – CVE-2026-114508
- Laravel – Dokumentasi Sanctum
- CISA – Known Exploited Vulnerabilities Catalog
- Katalog CVE KUTIM-CSIRT: CVE-2026-114509 dan CVE-2026-114508