Aplikasi web modern sekarang sudah jauh berkembang dibandingkan dulu. Banyak yang menggunakan SPA (Single Page Application), alur login yang kompleks, serta sistem keamanan yang lebih canggih. Salah satu peningkatan keamanan yang paling umum digunakan saat ini adalah Two-Factor Authentication (2FA).
2FA menambahkan lapisan keamanan tambahan setelah username dan password. Jadi meskipun seseorang mengetahui password Anda, mereka tetap membutuhkan kode tambahan (biasanya dari SMS, email, aplikasi autentikator, atau notifikasi push).
Namun, meskipun terlihat aman, implementasi 2FA yang salah atau kurang tepat tetap bisa memiliki celah keamanan. Artikel ini membahas kesalahan umum dalam penerapan 2FA dan bagaimana seorang pentester bisa mengujinya.
Ini bukan penjelasan dasar tentang 2FA, tetapi fokus pada cara menguji dan mencari kelemahannya.
1. Session Dibuat Sebelum atau Sesudah 2FA?
Salah satu keputusan penting dalam desain sistem adalah: kapan session login dibuat?
Beberapa aplikasi membuat session langsung setelah username dan password benar, walaupun 2FA belum selesai. Ini bisa berbahaya jika tidak semua endpoint dilindungi dengan benar.
Contohnya:
Setelah login berhasil, server langsung mengirim cookie session, tetapi masih meminta pengguna menyelesaikan 2FA.
Masalahnya adalah: jika session sudah aktif, apakah semua halaman benar-benar memeriksa apakah 2FA sudah selesai?
Sebagai pentester, Anda bisa mencoba mengakses berbagai endpoint menggunakan session tersebut sebelum menyelesaikan 2FA. Jika ada halaman sensitif yang bisa diakses, berarti ada celah keamanan.
2. Endpoint Tidak Dilindungi Setelah Login Awal
Kesalahan klasik adalah tidak membatasi akses ke endpoint sensitif sebelum 2FA selesai.
Contohnya:
-
/account/settings
-
/transactions/initiate
Jika endpoint seperti ini bisa diakses hanya dengan login password tanpa 2FA, maka fungsi 2FA menjadi tidak berarti.
Pentester bisa menguji ini dengan:
-
Login menggunakan username dan password
-
Menangkap cookie session
-
Mengakses endpoint penting sebelum memasukkan kode 2FA
Jika mendapatkan respon 200 OK dan data sensitif, itu adalah masalah serius.
3. Data Sensitif Bocor Sebelum 2FA
Pada aplikasi modern (SPA), backend sering mengirim data user ke frontend untuk ditampilkan, seperti nama atau email.
Namun terkadang terlalu banyak informasi ikut terkirim, bahkan sebelum 2FA selesai.
Contoh data yang bocor:
-
Role (admin/user)
-
Daftar transaksi
-
Status akun
-
Saldo atau token
Jika penyerang bisa menebak username, mereka bisa mengumpulkan informasi penting sebelum 2FA diselesaikan.
Ini disebut kebocoran metadata.
4. Brute Force Kode 2FA & Race Condition
Sebagian besar kode 2FA terdiri dari 6 digit angka. Artinya hanya ada 1 juta kombinasi (000000–999999). Jumlah ini sebenarnya tidak terlalu besar.
Jika sistem tidak memiliki:
-
Rate limiting
-
Lockout setelah beberapa percobaan
Maka kode bisa ditebak dengan brute force (mencoba banyak kombinasi dengan cepat).
Hal yang perlu diuji:
-
Apakah sistem memblokir setelah beberapa percobaan gagal?
-
Apakah waktu respon berubah?
-
Apakah kode lama masih bisa dipakai?
Race condition juga bisa terjadi jika banyak request dikirim bersamaan. Jika server tidak menangani proses paralel dengan benar, bisa saja salah satu request berhasil walaupun kode sudah kadaluarsa.
5. Tidak Ada Rate Limit Saat Mengirim Kode
Pada sistem yang mengirim kode melalui SMS atau email, kelemahan bisa ada di proses pengiriman kode.
Jika penyerang bisa:
-
Meminta pengiriman kode ribuan atau jutaan kali
Maka peluang menebak kode menjadi lebih besar, terutama jika sistem hanya mengandalkan waktu kedaluwarsa sebagai validasi.
Walaupun ada rate limit, jumlah kode yang terus dihasilkan bisa memperbesar kemungkinan serangan berhasil.
6. Recovery Code Tidak Dibatalkan Setelah Dipakai
Biasanya aplikasi menyediakan recovery code sebagai cadangan jika pengguna kehilangan perangkat 2FA.
Recovery code seharusnya:
-
Hanya bisa dipakai satu kali
Jika recovery code bisa digunakan berulang kali, maka itu adalah celah keamanan besar.
Jika kode ini bocor (misalnya lewat email atau screenshot), penyerang bisa terus menggunakannya untuk login.
7. Prompt Bombing (Notifikasi Push)
Pada sistem 2FA berbasis notifikasi push (Approve/Deny), ada teknik yang disebut “prompt fatigue”.
Penyerang bisa:
-
Mengirim banyak permintaan login dalam waktu singkat
-
Membanjiri korban dengan notifikasi
Karena lelah atau terbiasa, korban mungkin menekan “Approve” tanpa sadar.
Ini bukan serangan teknis murni, tetapi memanfaatkan psikologi pengguna.
Sistem seharusnya memiliki rate limit agar tidak bisa mengirim terlalu banyak notifikasi.
8. Kode 2FA Bocor di Response HTTP
Kadang developer lupa menghapus data debug.
Beberapa kasus nyata menunjukkan:
-
Kode 2FA muncul di error message
-
Muncul di stack trace
-
Tersimpan dalam response HTML
Ini biasanya terjadi di environment development atau testing.
Sebagai pentester, penting untuk memeriksa response HTTP dengan teliti dan mencari kemungkinan kebocoran kode.
9. Metode Pemulihan yang Lemah
Pertanyaan keamanan seperti:
-
“Apa warna favorit Anda?”
Bukanlah 2FA yang kuat.
Jika pertanyaan ini digunakan untuk memulihkan akses 2FA, maka sistem menjadi lemah. Informasi seperti itu sering bisa ditebak atau ditemukan di media sosial.
Jika metode pemulihan lemah, maka seluruh perlindungan 2FA menjadi sia-sia.
Kesimpulan
2FA memang meningkatkan keamanan, tetapi implementasi yang salah bisa menciptakan celah baru.
Sebagai pentester, hal yang perlu diuji adalah:
-
Apakah session dibuat terlalu cepat?
-
Apakah semua endpoint benar-benar dilindungi?
-
Apakah ada kebocoran data sebelum 2FA?
-
Apakah ada rate limiting?
-
Apakah recovery code aman?
-
Apakah ada celah psikologis seperti prompt bombing?
Keamanan bukan hanya soal menambahkan fitur 2FA, tetapi memastikan seluruh alur autentikasi dirancang dengan benar.
Banyak sistem terlihat aman di permukaan, tetapi memiliki kelemahan serius di baliknya.
Infrastruktur IT yang kuat adalah kunci produktivitas perusahaan. Dengan pentes indonesia, merupakan bagian dari PT. iLogo Indonesia, yang merupakan mitra terpercaya dalam solusi Infrastruktur IT dan Cybersecurity terbaik di Indonesia.
Hubungi kami sekarang atau kunjungi pentestindonesia.com untuk informasi lebih lanjut!
