June 4, 2026
Membeli AI Credits Seharga Rp 200.000 Hanya dengan Rp 1 Lewat Kerentanan Business Logic Error
Robi Mohamad subagja
1 min read
Latar Belakang
Banyak pengembang aplikasi masih membuat kesalahan fatal dengan mempercayai data yang dikirim langsung dari browser pengguna (client-side trust). Ketika parameter sensitif seperti harga barang tidak divalidasi ulang di sisi server, aplikasi tersebut menjadi sasaran untuk melakukan manipulasi data finansial.
Gambaran Kerentanan
Saat menguji sebuah platform SaaS berbasis AI, saya menemukan celah Business Logic Error (Parameter Tampering) pada fitur top-up AI Credits. Sistem menerima mentah-mentah nilai harga dari request body klien tanpa mencocokkannya dengan basis data internal. Akibatnya, penyerang bisa mengubah nominal pembayaran paket premium dari Rp 200.000 menjadi Rp 1.
- Endpoint Terdampak:
POST redacted.com/api/payments/create_payment_link - Tingkat Keparahan: CVSS 8.2 (High)
Proof of Concept (Langkah Reproduksi)
Pengujian dilakukan menggunakan Burp Suite dengan alur sebagai berikut:
- Masuk ke akun, pilih menu Get Credits, lalu klik paket yang ingin dibeli.
- Aktifkan Intercept pada Burp Suite, lalu klik "Pay Now" untuk menahan request pembayaran.
- Pada request body yang tertahan, ubah parameter
"base_amount"dan"price"dari200000menjadi1. - Teruskan (forward) request yang sudah dimodifikasi.
- Browser otomatis dialihkan ke halaman payment gateway resmi dengan total tagihan yang sudah berubah menjadi Rp 1.
POST redacted.com/api/payments/create_payment_link HTTP/1.1
Host: target.com
Content-Type: application/json
{
"product_id": "ai_premium_225",
"quantity": 1,
"base_amount": 1,
"price": 1
}POST redacted.com/api/payments/create_payment_link HTTP/1.1
Host: target.com
Content-Type: application/json
{
"product_id": "ai_premium_225",
"quantity": 1,
"base_amount": 1,
"price": 1
}
Dampak
- Kerugian Finansial: Pengguna bisa menguras resource AI premium perusahaan secara gratis atau dengan harga tidak wajar.
- Data Mismatch: Laporan keuangan pada payment gateway tidak akan sinkron dengan sistem internal database aplikasi.
Kesimpulan & Mitigasi
Celah ini murni terjadi karena tidak adanya validasi di sisi server. Solusinya sangat sederhana:
- Server-Side Fetching: Jangan pernah mengambil nominal harga dari input klien. Server harus menarik harga produk dari database internal berdasarkan
product_id
Catatan Penutup
Celah ini awalnya dilaporkan secara privat pada Februari 2026. Meskipun pihak Internal tidak memberikan umpan balik setelahnya, pengujian ulang yang saya lakukan baru-baru ini menunjukkan bahwa kerentanan ini telah diperbaiki (patched).
Thank You :D