Cybersecurity & Digital Safety

Remote Spectre di Cloudflare Workers: JWT Bisa Bocor 12 Bit per Detik

Jawaban singkat: hal utama tentang Remote Spectre di Cloudflare Workers: JWT Bisa Bocor 12 Bit per Detik adalah ini: Riset Cloudflare membuktikan remote Spectre bisa membaca JWT lintas Worker hingga 12 bit/detik. Pahami attack chain, mitigasi, dan dampaknya.

Riset produksi membuktikan remote Spectre dapat membaca JWT lintas Worker hingga 12 bit per detik. Ini attack chain, mitigasi, dan dampak operasionalnya.

Remote Spectre di Cloudflare Workers: JWT Bisa Bocor 12 Bit per Detik

Cloudflare baru memublikasikan hasil riset yang layak dibaca siapa pun yang menjalankan kode multi-tenant. Tim peneliti berhasil mengambil JWT dari Worker lain yang berada dalam proses yang sama, sepenuhnya dari jarak jauh, dengan laju hingga 12 bit per detik dan akurasi 99,16%.

Ini bukan laporan bahwa data pelanggan Cloudflare sedang bocor. Eksperimen dilakukan pada Worker milik peneliti sendiri, celah yang dipakai sudah dimitigasi, dan Cloudflare menyatakan tidak menemukan indikator eksploitasi aktif selama tiga tahun terakhir.

Temuan pentingnya justru lebih luas: sandbox bahasa, pembatasan timer, dan detector perilaku dapat terlihat kuat secara terpisah, tetapi asumsi di antara ketiganya masih bisa dipatahkan ketika attacker menggabungkan remote timer, co-location, long-lived execution, dan signal amplification.

Apa yang benar-benar dibuktikan

Paper Remote-Timer-as-a-Service menguji serangan pada lingkungan produksi Cloudflare Workers. Penelitian dilakukan pada 2024 hingga awal 2025, lalu dipublikasikan di arXiv pada 17 Agustus 2026 dan dijelaskan Cloudflare pada 19 Agustus 2026.

Cloudflare Workers menjalankan banyak tenant memakai V8 isolates dalam satu proses sistem operasi. Setiap Worker memiliki heap JavaScript sendiri. Model ini jauh lebih efisien daripada satu proses untuk setiap tenant, terutama di edge yang harus menyalakan banyak workload kecil dengan latency rendah.

Trade-off-nya jelas. Jika sebuah teknik dapat membaca memori di luar isolate sendiri, batas antar-tenant di dalam proses itu ikut terancam.

Dalam eksperimen terkontrol, peneliti menempatkan JWT pada victim Worker, membuat attacker Worker berada pada proses yang sama, lalu membaca token tersebut bit demi bit. Hasil terbaiknya mencapai:

  • laju hingga 12 bit per detik;
  • akurasi rata-rata 99,16%;
  • 360 kali lebih cepat dibanding serangan remote Spectre sebelumnya;
  • end-to-end test pada infrastruktur produksi, tetapi hanya terhadap Worker yang mereka kuasai.

Angka 12 bit per detik setara sekitar 1,5 byte per detik. Namun jangan menghitung waktu pencurian token hanya dengan membagi panjang JWT dengan angka itu. Attacker tetap membutuhkan fase co-location, kalibrasi, pencarian alamat, pengulangan sampel, dan kondisi mesin yang cukup stabil. Laju tersebut adalah throughput leakage terbaik pada setup riset, bukan janji kecepatan serangan terhadap setiap Worker.

Alur konseptual remote timer, co-location, dan pembacaan JWT lintas isolate

Kenapa timer yang dibatasi masih bisa dilewati

Cloudflare sejak awal merancang Workers agar kode tidak dapat mengukur waktu eksekusinya sendiri dengan presisi tinggi. Saat kode CPU-only berjalan, Date.now() dan performance.now() tidak bergerak seperti timer resolusi tinggi biasa. Platform juga tidak menyediakan shared memory atau multithreading yang lazim dipakai untuk membuat timer lokal alternatif.

Masalahnya, Worker tetap harus bisa berkomunikasi dengan dunia luar. Selama koneksi keluar diizinkan, attacker bisa meminta timestamp dari server lain melalui WebSocket.

Remote timer tentu jauh lebih berisik daripada timer lokal. Selisih cache hit dan cache miss berada pada skala nanodetik, sedangkan jaringan menambah jitter pada skala mikrodetik sampai milidetik. Peneliti mengatasinya dengan signal amplification: satu perbedaan kecil di cache diperbesar melalui pola akses berulang sampai distribusinya dapat dibedakan oleh timer jarak jauh.

Paper tersebut menguji beberapa sumber waktu. Bahkan pada jarak lebih dari 1.200 kilometer, timing di kisaran ratusan mikrodetik masih dapat diperoleh. Setup dengan komponen yang co-located memberi hasil lebih stabil.

Pelajaran operasionalnya bukan bahwa pembatasan timer sia-sia. Kontrol itu tetap menaikkan biaya serangan. Masalah muncul ketika desain keamanan menganggap remote timer terlalu berisik untuk menjadi praktis. Riset ini membuktikan asumsi tersebut tidak lagi aman jika attacker punya amplification yang cukup baik.

Co-location dan Durable Objects mengubah threat model

Serangan ini membutuhkan attacker dan victim berada dalam proses yang sama. Kedengarannya seperti syarat yang sulit, tetapi arsitektur edge membuat penempatan tersebut lebih mudah daripada dugaan awal.

Attacker Worker dapat memanggil victim Worker sehingga scheduler menjalankan keduanya pada mesin edge yang sama. Peneliti memakai identitas mesin dari endpoint trace untuk mengonfirmasi penempatan, kemudian menjaga konteks eksekusi tetap hidup.

Di sini Durable Objects menjadi bagian penting. Koneksi WebSocket dan keep-alive memungkinkan satu invocation bertahan lebih dari 20 jam selama kode rutin menyerahkan kontrol kembali ke event loop. Setiap pesan memberi kesempatan baru untuk melanjutkan pekerjaan tanpa kehilangan isolate yang sudah terpilih.

Fitur itu tidak bermasalah dengan sendirinya. Durable Objects memang dibuat untuk koordinasi real-time dan koneksi stateful. Yang runtuh adalah asumsi detector lama bahwa script berbahaya harus selesai, dipanggil berkali-kali, lalu baru punya cukup waktu untuk membocorkan data.

Serangan baru menyelesaikan leakage dalam satu eksekusi panjang. Detector yang menunggu akhir invocation jadi terlambat mengambil tindakan.

Kenapa Dynamic Process Isolation tidak menangkapnya

Cloudflare sebelumnya memakai Dynamic Process Isolation atau DyPrIs. Sistem ini membaca hardware performance counters dan memindahkan Worker yang terlihat seperti Spectre ke proses terpisah.

Riset 2021 menunjukkan pendekatan tersebut efektif terhadap proof of concept saat itu. Serangan lama hanya mencapai sekitar 120 bit per jam dan membutuhkan banyak eksekusi. DyPrIs punya cukup waktu untuk melihat pola branch misprediction lalu mengisolasi script sebelum data bernilai selesai dibaca.

Implementasi produksi yang diuji pada riset baru punya dua celah asumsi:

  1. isolasi dilakukan setelah invocation selesai, sedangkan Durable Object dapat menjaga satu invocation hidup berjam-jam;
  2. branch misprediction dinormalisasi terhadap aktivitas instruction TLB, sementara loop I/O WebSocket menaikkan aktivitas pembanding itu dan membuat sinyal serangan tampak seperti workload I/O biasa.

Ini contoh konkret kenapa detection rule tidak boleh diuji hanya dengan pola serangan yang melahirkan rule tersebut. Detector perlu dites terhadap workload panjang, I/O-heavy, kombinasi fitur legal, dan attacker yang sengaja mengubah denominator metrik.

Mitigasi yang sudah dipasang Cloudflare

Penjelasan resmi Cloudflare menyebut serangan ini sudah dimitigasi melalui tiga lapisan.

V8 Sandbox

V8 Sandbox mengurangi pointer mentah 64-bit di heap dan membatasi pointer ke area memory cage. Gadget type confusion yang dipakai pada riset tidak lagi mendapatkan struktur pointer yang sama.

Cloudflare sendiri tegas bahwa ini bukan mitigasi Spectre lengkap. Gadget yang dipakai paper sekarang tidak berfungsi, tetapi varian atau gadget lain secara teori masih dapat ditemukan.

Memory Protection Keys

Sejak September 2025, Cloudflare memakai Memory Protection Keys atau MPK untuk memberi batas akses berbasis hardware di antara heap isolate dalam satu proses. Akses ke halaman dengan key yang tidak sesuai ditolak oleh CPU.

Dokumentasi hardening Cloudflare menjelaskan keterbatasannya: jumlah protection key pada CPU terbatas sehingga beberapa isolate dapat berbagi key. Meski bukan jaminan absolut untuk semua skenario, MPK memutus jalur cross-isolate heap read langsung yang dipakai eksperimen ini.

DyPrIs yang diperbaiki

Cloudflare juga mengubah detector agar long-lived execution dan workload I/O-heavy diperlakukan sebagai kasus keamanan utama, bukan noise. Deteksi tidak lagi boleh bergantung pada script selesai lebih dulu.

Cloudflare masih meneliti apakah pola remote timing dapat menjadi dimensi tambahan. Ini masuk akal karena rangkaian I/O berulang di sekitar komputasi berat dapat meninggalkan pola yang berbeda dari WebSocket aplikasi normal.

Tiga lapisan mitigasi: V8 Sandbox, MPK, dan DyPrIs yang diperbaiki

Apakah pengguna Workers harus panik atau merotasi semua secret?

Berdasarkan bukti yang tersedia, tidak ada dasar untuk menyebut ini insiden kebocoran pelanggan massal. Cloudflare menyatakan:

  • eksperimen hanya menargetkan Worker yang dikontrol peneliti;
  • tidak ada data pelanggan yang diakses selama riset;
  • mitigasi sudah aktif di production;
  • tidak ditemukan indikator eksploitasi aktif selama tiga tahun terakhir.

Karena itu, rotasi darurat semua secret semata-mata akibat publikasi paper ini akan berlebihan. Jika organisasi punya instruksi khusus dari Cloudflare, log anomali, atau kebijakan incident response yang lebih ketat, ikuti evidence tersebut.

Yang tetap layak dilakukan adalah security hygiene biasa:

  • gunakan token berumur pendek dan scope minimum;
  • rotasi credential secara berkala dan jangan menunggu berita ramai;
  • jangan menjadikan satu secret statis sebagai kunci ke seluruh sistem;
  • pantau penggunaan credential dari lokasi, workload, atau pola yang tidak wajar;
  • siapkan revocation path yang benar-benar pernah diuji.

Langkah itu tidak spesifik untuk Spectre. Ia membatasi blast radius dari banyak kelas kegagalan, termasuk log leak, dependency compromise, SSRF, dan salah konfigurasi akses.

Implikasi untuk platform multi-tenant buatan sendiri

Bagian paling bernilai dari riset ini justru untuk tim yang membangun runtime plugin, code execution service, browser automation, AI agent sandbox, atau platform serverless internal.

Pertama, V8 isolate bukan batas keamanan yang setara dengan proses atau VM untuk semua threat model. Ia bagus untuk efisiensi dan language-level isolation. Namun hostile multi-tenancy membutuhkan defense-in-depth di luar runtime bahasa.

Kedua, jangan menganggap pembatasan API tunggal menutup satu kelas serangan. Timer lokal bisa dibekukan, tetapi jaringan dapat menjadi timer. Runtime dapat dibatasi, tetapi event stateful dapat memperpanjang eksekusi. Detector bisa membaca branch behavior, tetapi I/O dapat mengubah rasio yang dipakai detector.

Ketiga, pisahkan tenant berdasarkan tingkat kepercayaan. Kode publik, free-tier, internal, dan workload yang memegang secret bernilai tinggi tidak seharusnya otomatis berbagi boundary terdekat hanya karena lebih efisien. Gunakan proses, VM, hardware protection, atau placement policy ketika risiko membenarkannya.

Keempat, uji asumsi security dengan komposisi fitur nyata. Acceptance test yang hanya memeriksa satu sandbox escape atau satu PoC lama akan melewatkan serangan yang lahir dari interaksi WebSocket, scheduler, runtime limit, performance counter, dan memory layout.

Kesimpulan operasional

Remote Spectre pada Cloudflare Workers bukan alasan untuk menyimpulkan sandbox sudah tidak berguna. Kesimpulan yang lebih tepat: sandbox adalah satu lapisan, bukan garis finish.

Riset ini berhasil membocorkan JWT dari Worker terkontrol pada proses yang sama dengan laju hingga 12 bit per detik dan akurasi 99,16%. Serangannya mematahkan asumsi tentang timer, durasi invocation, dan detector behavior secara bersamaan. Cloudflare kemudian menutup jalur tersebut dengan V8 Sandbox, MPK, dan perbaikan DyPrIs.

Untuk pengguna Workers, belum ada bukti yang menuntut kepanikan atau rotasi secret massal. Untuk operator platform multi-tenant, pesannya lebih keras: ukur keamanan pada boundary terlemah, uji fitur dalam kombinasi, dan jangan meminta satu detector menanggung risiko arsitektur sendirian.

Sumber primer

Lanjut membaca

Artikel yang masih relevan