Bukalapak — Race Condition Bug
Bug yang saya temukan adalah jenis bug Race Condition. Serangan ini memungkinkan seseorang untuk melakukan manipulasi data yang seharusnya tidak diproses server menjadi diproses oleh server, hal ini mungkin terjadi karena web server memproses query secara bersamaan, ini berarti ketika ada 2 request secara bersamaan maka kedua request tersebut akan dijalankan.
PoC (video terlampir)
1. Manipulasi jumlah vote up pada suatu topik.
POST /stories/q3fa05/upvote HTTP/1.1
Host : komunitas.bukalapak.com
Sebelumnya jumlah upvote adalah 7, kemudian jika saya lakukan request secara asynchronous maka dalam 1 kali vote saya bisa menambahkan 2–3 upvote (hal ini tergantung dari kualitas koneksi, mungkin bisa lebih). Setelah mendapatkan upvote lebih kita dapat downvote lebih dari 1 juga.
2. Manipulasi jumlah subscriber pada suatu toko
POST /subscriptions/toggle_subscribe HTTP/1.1
Host: www.bukalapak.com
Sebelumnya jumlah vote adalah 16, kemudian dilakukan Race Condition Attack menjadi 18.
Hal ini mungkin terjadi juga dikondisi yang lain, misal manipulasi penggunaan voucher?
Referensi :
https://defuse.ca/race-conditions-in-web-applications.htm
http://josipfranjkovic.blogspot.co.id/2015/04/race-conditions-on-facebook.html