Kondisi balapan: hadiah bug
Kerentanan kondisi ras, menurut pendapat saya, adalah salah satu kerentanan web yang paling menarik. Mereka muncul dari kesalahan paling sederhana yang dibuat pengembang dan kesalahan ini terbukti mahal.
Di masa lalu, peretas telah menggunakan kondisi balapan untuk mencuri uang dari bank online, situs web pertukaran cryptocurrency, situs web e-niaga, dan lainnya.
Apa itu kondisi balapan?
- Kondisi balapan muncul ketika dua bagian kode yang dirancang untuk dieksekusi secara berurutan, dieksekusi di luar urutan.
- Untuk memahami kerentanan ini dengan lebih baik, Anda harus terlebih dahulu memahami konsep konkurensi.
- Dalam pemrograman komputer, konkurensi adalah kemampuan untuk mengeksekusi bagian kode yang berbeda secara bersamaan tanpa mempengaruhi hasil program.
- Concurrency memiliki dua jenis: multiprocessing dan multithreading.
- Multiprocessing mengacu pada penggunaan beberapa CPU untuk melakukan tugas secara bersamaan.
- Namun, multithreading adalah saat satu CPU melakukan tugas secara bersamaan dengan menggunakan "utas". Namun, utas ini sebenarnya tidak dijalankan pada waktu yang sama; mereka bergiliran menggunakan daya CPU. Saat satu utas menganggur, utas lainnya dapat terus memanfaatkan sumber daya komputasi yang tidak terpakai. Mengatur urutan pelaksanaan beberapa utas disebut penjadwalan.
- Penjadwalan inilah yang menyebabkan race condition.
- Kondisi balapan menjadi kerentanan saat memengaruhi mekanisme kontrol keamanan.
- Bayangkan dua utas melakukan transfer uang antar rekening bank. Aplikasi harus melakukan tiga tugas untuk mentransfer uang dengan benar. Pertama, memeriksa apakah akun asal memiliki cukup uang, lalu menambahkan uang ke akun tujuan, dan terakhir, mengurangi jumlah dari akun asal.
BENANG 1
- Periksa saldo akun A(>100$); 2. Tambahkan $100 ke akun B; 3. Kurangi $100 dari akun A
- Periksa saldo akun A (<100$) => Transfer gagal, dana tidak mencukupi.
- [Utas 1] Periksa saldo akun A ($100);
- [Utas 2] Periksa saldo akun A ($100);
- [Utas 1] Tambahkan $500 ke akun B ; [100$ dalam A, 100$ dalam B]
- [Utas 2] Tambahkan $500 ke akun B; [100$ dalam A, 200$ dalam B]
- [Utas 1] Kurangi $500 dari akun A; [0$ dalam A; $200 dalam B]
- [Utas 2] Kurangi $500 dari akun A; [0$ dalam A; $200 dalam B]
Meskipun kerentanan kondisi ras sebagian besar terkait dengan situs web keuangan, peretas juga dapat menggunakannya dalam situasi lain, seperti mencurangi kampanye pemungutan suara online.
Bagaimana mencegah
Konsep sinkronisasi penting dalam hal konkurensi dalam pemrograman. Ini melibatkan memastikan bahwa utas atau proses tidak mengakses sumber daya bersama secara bersamaan, karena hal ini dapat menyebabkan kondisi ras dan ketidakkonsistenan data. Salah satu cara untuk mencapai sinkronisasi adalah melalui penggunaan kunci sumber daya, yang memblokir utas lain dari mengakses sumber daya hingga utas yang menahan kunci selesai menggunakannya.
Selain sinkronisasi, penting juga untuk mengikuti praktik pengkodean yang aman untuk mencegah kondisi balapan menjadi masalah keamanan yang lebih parah. Prinsip hak istimewa terkecil adalah salah satu praktik tersebut, yang melibatkan pemberian aplikasi dan hanya memproses hak istimewa yang mereka perlukan untuk menyelesaikan tugas mereka. Misalnya, jika suatu aplikasi hanya perlu membaca file, itu tidak boleh diberikan izin menulis atau mengeksekusi. Ini mengurangi risiko kompromi sistem selama serangan.
Bagaimana cara berburu?
1. Temukan fitur yang rentan terhadap kondisi balapan :
- Kondisi balapan sering terjadi pada fitur yang melibatkan pembaruan nilai numerik, seperti pemungutan suara online, skor permainan, transfer bank, pembayaran e-niaga, dan saldo kartu hadiah. Untuk mengidentifikasi fitur-fitur ini dalam aplikasi, Anda dapat mencari permintaan yang terkait dengan pembaruan nomor-nomor ini. Misalnya, jika Anda ingin menguji permintaan yang digunakan untuk mentransfer uang dari situs perbankan, Anda dapat menyalin permintaan tersebut menggunakan Burp Suite dengan mengklik kanan dan memilih “Copy as curl command.”
- Untuk menguji dan berpotensi mengeksploitasi kondisi balapan di target, Anda dapat mengirimkan beberapa permintaan ke server secara bersamaan. Misalnya, jika Anda ingin memeriksa apakah mungkin mentransfer lebih banyak uang daripada yang Anda miliki di rekening bank, Anda dapat menggunakan perintah curl untuk mengirim beberapa permintaan transfer secara bersamaan. Salah satu cara melakukannya adalah dengan menyalin perintah dari Burp, menempelkannya ke terminal, lalu menyisipkan simbol “&” di antara setiap perintah. Ini akan memungkinkan Anda untuk menjalankan beberapa perintah secara bersamaan di latar belakang pada sistem Linux.
curl (transfer $3000) & curl (transfer $3000) & curl (transfer $3000)
& curl (transfer $3000) & curl (transfer $3000) & curl (transfer $3000)
- Ini adalah no-brainer, periksa apakah serangan Anda berhasil
Penting untuk mempertimbangkan dampak potensial dari kondisi balapan pada fungsionalitas yang terpengaruh saat mengevaluasi tingkat keparahan kerentanan. Kondisi perlombaan yang memungkinkan penyerang mendapatkan akses tak terbatas ke sumber daya keuangan, seperti melalui penarikan tunai atau transfer dana, dapat sangat merugikan individu dan organisasi yang terkena dampak.
Selain keuntungan finansial, penyerang mungkin dapat menggunakan kondisi ras untuk mendapatkan pengaruh sosial atau akses ke informasi sensitif. Misalnya, kondisi ras yang memungkinkan penyerang mendapatkan akses tidak sah ke akun media sosial berpotensi digunakan untuk menyebarkan informasi yang salah atau memanipulasi opini publik.
Saat melaporkan dampak kondisi ras, penting untuk mengartikulasikan dengan jelas konsekuensi potensial bagi individu dan organisasi yang terkena dampak. Ini mungkin termasuk potensi kerugian finansial, kehilangan informasi sensitif, atau rusaknya reputasi organisasi. Memberikan informasi yang jelas dan terperinci tentang dampak potensial dari kerentanan dapat membantu memprioritaskan penyelesaiannya dan mengurangi potensi konsekuensinya.
Saya harap posting blog ini membantu! Selamat berburu dan selamat Natal!

![Apa itu Linked List? [Bagian 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































