1. Pendahuluan

Dalam dunia keamanan aplikasi web, ada banyak celah yang bisa dimanfaatkan oleh peretas untuk mendapatkan akses ke data yang seharusnya tidak boleh mereka lihat. Salah satu celah keamanan yang sering ditemukan adalah IDOR (Insecure Direct Object Reference).

IDOR memungkinkan seseorang mengakses data orang lain tanpa harus masuk sebagai admin atau melewati proses otentikasi yang seharusnya. Masalah ini sering terjadi pada aplikasi web dan API yang tidak menerapkan kontrol akses dengan baik.

Dalam artikel ini, kita akan membahas apa itu IDOR, bagaimana cara kerjanya, dampaknya, dan langkah-langkah untuk mencegahnya agar aplikasi tetap aman.

2. Apa Itu IDOR?

IDOR (Insecure Direct Object Reference) adalah celah keamanan yang terjadi ketika sebuah aplikasi mengizinkan pengguna untuk mengakses data dengan mengganti parameter tertentu dalam URL, body request, atau permintaan API tanpa melakukan verifikasi hak akses.

πŸ”Ή Contoh sederhana IDOR dalam URL:
Misalkan ada sebuah website yang memungkinkan pengguna melihat profilnya dengan URL berikut:

https://example.com/profile?id=123
Di sini, angka 123 adalah ID pengguna dalam database. Jika sistem tidak melakukan validasi dengan baik, peretas bisa mengganti angka ini dengan ID orang lain (misalnya id=124) untuk melihat informasi pengguna lain:
https://example.com/profile?id=124
Jika aplikasi tidak melakukan pemeriksaan izin, maka peretas bisa melihat atau bahkan mengubah data orang lain.

3. Bagaimana IDOR Dieksploitasi?

IDOR bisa terjadi di berbagai bagian aplikasi, seperti:

a. IDOR dalam Parameter URL

Seperti contoh di atas, seorang pengguna bisa mengubah nilai ID dalam URL untuk mendapatkan informasi orang lain.

b. IDOR dalam Body Request API

Kadang, aplikasi menggunakan request API untuk mengambil atau memperbarui data. Jika aplikasi tidak memeriksa siapa yang mengajukan permintaan, peretas bisa memanipulasi request tersebut.

Contoh request API yang rentan:

POST /update-profile
{
"user_id": "123",
"email": "user123@example.com"
}
Jika seorang peretas mengganti "user_id": "123" menjadi "user_id": "124", dan sistem tidak memeriksa kepemilikan data, maka peretas bisa mengganti data pengguna lain.

c. IDOR dalam Akses File atau Dokumen

Beberapa aplikasi mengizinkan pengguna mengakses dokumen dengan memberikan direct file reference, misalnya:

https://example.com/download?file=invoice_123.pdf
Jika aplikasi tidak memeriksa kepemilikan file tersebut, pengguna lain bisa mengganti angka dalam nama file untuk mengunduh dokumen milik orang lain:
https://example.com/download?file=invoice_124.pdf
Hal ini bisa menyebabkan kebocoran dokumen penting seperti faktur bisnis, laporan keuangan, atau data rahasia lainnya.4. Dampak Serangan IDOR

IDOR adalah masalah serius yang bisa menyebabkan berbagai dampak buruk, seperti:

🚨 Kebocoran Data Pribadi β†’ Informasi seperti email, nomor telepon, atau alamat bisa dicuri.
🚨 Pengambilalihan Akun β†’ Jika IDOR terjadi pada sistem otentikasi, peretas bisa mengambil alih akun orang lain.
🚨 Akses Tidak Sah ke Dokumen Penting β†’ File pribadi atau dokumen perusahaan bisa diakses oleh orang yang tidak berwenang.
🚨 Kerugian Finansial β†’ Dalam sistem pembayaran atau e-commerce, peretas bisa melihat atau memanipulasi transaksi orang lain.

πŸ“Œ Kasus nyata IDOR:
Pada tahun 2021, ditemukan kerentanan IDOR dalam API sebuah platform kesehatan, yang memungkinkan siapa saja melihat hasil tes medis pengguna lain hanya dengan mengganti angka ID dalam permintaan API.

5. Bagaimana Cara Mencegah IDOR?

Untuk mencegah IDOR, pengembang aplikasi dan tim keamanan bisa menerapkan beberapa langkah berikut:

a. Implementasi Kontrol Akses yang Ketat

Pastikan bahwa setiap permintaan data diverifikasi berdasarkan otorisasi pengguna. Jika seseorang meminta data, pastikan bahwa mereka benar-benar memiliki hak akses terhadap data tersebut.

b. Gunakan UUID atau Token Acak

Jangan gunakan ID numerik yang berurutan dalam sistem, karena mudah ditebak. Sebagai gantinya, gunakan UUID (Universally Unique Identifier) atau token acak untuk referensi objek.

Contoh ID yang lebih aman:

https://example.com/profile?id=a8f2b7c9-4d6e-11eb-b378-0242ac130002
UUID ini jauh lebih sulit ditebak dibandingkan angka 123 atau 124.

c. Validasi dan Filter Input dari Pengguna

Setiap input dari pengguna harus divalidasi di server-side, bukan hanya di frontend. Pastikan bahwa data yang diakses benar-benar milik pengguna yang sedang login.

d. Gunakan Role-Based Access Control (RBAC)

Terapkan sistem peran dan hak akses (RBAC) untuk memastikan bahwa hanya pengguna yang berwenang yang dapat mengakses data tertentu.

Contoh level akses:
βœ… User Biasa β†’ Hanya bisa melihat datanya sendiri.
βœ… Admin β†’ Bisa mengelola semua data pengguna.

e. Logging dan Monitoring

Gunakan sistem logging dan monitoring untuk mendeteksi percobaan eksploitasi IDOR. Jika ada seseorang yang mencoba mengakses banyak ID berbeda dalam waktu singkat, ini bisa menjadi tanda percobaan serangan.

f. Lakukan Pengujian Keamanan Secara Berkala

  • Gunakan penetration testing (pentest) untuk menemukan celah IDOR sebelum peretas menemukannya.
  • Gunakan layanan bug bounty untuk mendapatkan laporan IDOR dari peneliti keamanan.

6. Studi Kasus: IDOR dalam API dan Web Applications

🎯 IDOR dalam API:
Seorang hacker etis menemukan bahwa aplikasi layanan kesehatan memiliki API yang memungkinkan siapa saja melihat data pasien lain hanya dengan mengganti angka ID. Akibatnya, ribuan data pasien bocor sebelum akhirnya diperbaiki.

🎯 IDOR dalam Aplikasi E-Commerce:
Dalam sebuah platform e-commerce, seorang pengguna bisa mengakses riwayat pesanan orang lain hanya dengan mengubah nomor pesanan di URL. Hal ini menyebabkan kebocoran informasi transaksi pelanggan.

7. Kesimpulan

IDOR adalah salah satu kerentanan paling umum dalam aplikasi web dan API. Jika tidak diperbaiki, peretas bisa mendapatkan akses ke data pribadi, akun pengguna lain, atau bahkan dokumen penting perusahaan.

βœ… Solusi utama untuk mencegah IDOR:

  • Terapkan kontrol akses yang ketat.
  • Gunakan UUID atau token acak sebagai referensi objek.
  • Pastikan server-side validation untuk semua permintaan.
  • Terapkan Role-Based Access Control (RBAC).
  • Gunakan logging, monitoring, dan penetration testing untuk mendeteksi dan mencegah serangan.

Sebagai pengembang aplikasi, penting untuk selalu memeriksa dan mengamankan sistem dari IDOR sebelum menjadi celah bagi peretas. Jika Anda seorang pengguna, pastikan untuk melaporkan jika menemukan potensi IDOR dalam aplikasi yang Anda gunakan!