Business Logic Vulnerability in the Report Invoice Feature, Which an Unauthorized User can make a Fake Report to Dicoding.com

Aidil Arief
3 min readMar 2, 2021

Assalamualaikum Bug Hunter & Teman-teman Semua.

Kali ini saya bakalan share temuan bug yang ketiga di situs Dicoding.com :D

Bug nya adalah Bussines Logic Vulnerability.

Kerentanan logika bisnis adalah kelemahan dalam desain dan implementasi aplikasi yang memungkinkan penyerang untuk mendapatkan perilaku yang tidak diinginkan. Ini berpotensi memungkinkan penyerang memanipulasi fungsionalitas yang sah untuk mencapai tujuan jahat. Cacat ini umumnya akibat kegagalan mengantisipasi status aplikasi yang tidak biasa yang mungkin terjadi dan, akibatnya, gagal menanganinya dengan aman.

Catatan
Dalam konteks ini, istilah “logika bisnis” hanya mengacu pada seperangkat aturan yang menentukan bagaimana aplikasi beroperasi. Karena aturan ini tidak selalu terkait langsung dengan bisnis, kerentanan terkait juga dikenal sebagai “kerentanan logika aplikasi” atau hanya “kelemahan logika”.

Cacat logika sering kali tidak terlihat oleh orang yang tidak mencarinya secara eksplisit karena biasanya tidak akan terlihat oleh penggunaan normal aplikasi. Namun, penyerang mungkin dapat mengeksploitasi kebiasaan perilaku dengan berinteraksi dengan aplikasi dengan cara yang tidak pernah diinginkan oleh pengembang.

Salah satu tujuan utama logika bisnis adalah untuk menegakkan aturan dan batasan yang ditentukan saat mendesain aplikasi atau fungsionalitas. Secara umum, aturan bisnis menentukan bagaimana aplikasi harus bereaksi ketika skenario tertentu terjadi. Ini termasuk mencegah pengguna melakukan hal-hal yang akan berdampak negatif pada bisnis atau yang tidak masuk akal.

Cacat dalam logika dapat memungkinkan penyerang untuk menghindari aturan ini. Misalnya, mereka mungkin dapat menyelesaikan transaksi tanpa melalui alur kerja pembelian yang dimaksudkan. Dalam kasus lain, validasi data yang disediakan pengguna yang rusak atau tidak ada mungkin memungkinkan pengguna untuk membuat perubahan sewenang-wenang pada nilai penting transaksi atau mengirimkan masukan yang tidak masuk akal. Dengan meneruskan nilai yang tidak diharapkan ke dalam logika sisi server, penyerang berpotensi mendorong aplikasi untuk melakukan sesuatu yang tidak seharusnya dilakukannya.

Kerentanan berbasis logika bisa sangat beragam dan seringkali unik untuk aplikasi dan fungsi spesifiknya. Mengidentifikasi mereka sering membutuhkan sejumlah pengetahuan manusia, seperti pemahaman tentang domain bisnis atau tujuan apa yang mungkin dimiliki penyerang dalam konteks tertentu. Hal ini membuat mereka sulit untuk dideteksi menggunakan pemindai kerentanan otomatis. Akibatnya, kelemahan logika adalah target yang bagus untuk pemburu bug dan penguji manual secara umum.

Kerentanan ini awalnya saya temukan di email notifikasi invoice Dicoding.com

Pertama tentunya harus melakukan order pada situs Dicoding.com , lalu akan muncul email notifikasi ke email yang dilakukan order.

Lalu di email akan ada fitur Report Invoice, berikut URL nya :

https://www.dicoding.com/invoices/{Parameter Invoice}/report

Awalnya saya tentunya mencobanya ke IDOR, dan ternyata sulit harus mencari parameter invoice victim, dan ketika hanya di akses URL :

https://www.dicoding.com/invoices/{Parameter Invoice}/

Dan tidak akan bisa karena tidak ada nya hak akses terhadap URL INVOICE diatas.

Tetapi, semua berbeda ketika diakses menggunakan URL :

https://www.dicoding.com/invoices/{Parameter Invoice}/report

Saya pun penasaran dan mencoba mengakses URL INVOICE diatas menggunakan akun lain :D

Dan boom berhasil :D

Timeline :

Report : 02/03/2021

Fix : 02/03/2021

Valid Report : 02/03/2021

Valid Level : Low Risk Vulnerability

Reward : - Beasiswa Paket Belajar Dicoding.com 30 Hari & Sertifikat Apresiasi

--

--