Rate Limiting Bypass: Celah Sederhana yang Bisa Bikin Sistem OTP Kewalahan

 


Rate Limiting Bypass: Celah Sederhana yang Bisa Bikin Sistem OTP Kewalahan

Dalam dunia keamanan aplikasi, kita sering fokus pada hal-hal besar: SQL Injection, RCE, IDOR, dan semacamnya. Tapi kadang, yang bikin sistem jebol bukan eksploitasi canggih—melainkan sesuatu yang simpel banget. Salah satunya adalah Rate Limiting Bypass.

Dan yang paling sering jadi korban? Fitur pengiriman OTP.


Apa Itu Rate Limiting?

Rate limiting adalah mekanisme untuk membatasi seberapa sering seseorang bisa mengakses suatu fitur dalam periode waktu tertentu. Misalnya:

  • Hanya boleh minta OTP sekali per menit

  • Hanya boleh login gagal 5 kali per IP

Tujuannya simpel: mencegah abuse, seperti brute force, spam, atau serangan DoS ringan.


Bagaimana Rate Limiting Bisa Dibypass?

Banyak developer terlalu mengandalkan proteksi di sisi frontend—padahal itu mudah banget diakali. Berikut beberapa teknik sederhana untuk bypass:

  • Spam klik tombol sebelum request selesai diproses.

  • Auto clicker atau script kecil buat ngirim banyak request.

  • Header spoofing kayak X-Forwarded-For buat ganti IP palsu.

  • Ganti-ganti email, nomor HP, atau username buat hindari limit per akun.


Studi Kasus: Spam OTP dengan Klik Cepat

Gue nemuin ini saat iseng nyoba registrasi akun di sebuah situs. Setelah masukin email dan klik “Kirim OTP,” gue penasaran—apa yang terjadi kalau gue spam klik tombol itu secepat mungkin?

Dan boom. Inbox langsung dibanjiri 3-5 email OTP berbeda dalam waktu 1-2 detik.

Artinya:

  • Tidak ada rate limit per email

  • Tidak ada pengecekan OTP aktif sebelumnya

  • Tombol bisa dipencet berkali-kali tanpa jeda


Kenapa Ini Masalah Serius?

Mungkin keliatannya kecil, tapi efeknya cukup mengganggu:

  • Spam OTP bikin user bingung: mana kode yang sah?

  • DoS ringan: sistem OTP sibuk generate & kirim email

  • Resource abuse: sistem email, database, dan cache bekerja lebih keras

  • Potensi penyalahgunaan: attacker bisa spam OTP ke ratusan akun

Dan semua itu terjadi tanpa eksploitasi kompleks.


Solusi dan Best Practice

Buat developer, ini saatnya waspada. Beberapa solusi mudah yang bisa diterapkan:

  1. Rate limit di backend: misalnya 1 OTP per email/IP setiap 60 detik.

  2. Validasi OTP aktif: kalau OTP masih berlaku, jangan kirim yang baru.

  3. Disable tombol kirim sementara: lock selama request berjalan.

  4. Countdown timer di frontend: tunjukkan ke user kapan bisa request lagi.

  5. Logging & alerting: deteksi jika ada request berulang mencurigakan.

Contoh serangan




Kesimpulan

Rate limiting bypass adalah contoh nyata bahwa bug kecil bisa berdampak besar. Di era user-first dan otomasi, satu klik bisa jadi spam—dan itu cukup untuk bikin sistem OTP kamu kelabakan.

Pastikan backend kamu kuat, jangan cuma percaya UI. Soalnya attacker nggak pakai mouse—mereka pakai script.



Komentar

Postingan Populer