Pemrograman Web

Kerentanan Kondisi Ras dalam Aplikasi Web

Kerentanan Kondisi Ras dalam Aplikasi Web
Ketika aplikasi web yang dikonfigurasi untuk mengelola fungsi dalam urutan tetap diperlukan untuk menjalankan dua atau lebih operasi secara bersamaan, serangan kondisi balapan terjadi. Teknik ini memanfaatkan waktu tunda antara saat layanan diperkenalkan dan saat kontrol keamanan terjadi. Serangan ini dapat dilakukan dengan salah satu dari dua cara, berdasarkan aplikasi multithread: intrusi yang ditimbulkan oleh proses yang tidak dapat dipercaya dan intrusi yang ditimbulkan oleh proses yang dapat dipercaya yang dapat memiliki hak yang sama dan setara.

Proses yang berbeda dapat berinteraksi satu sama lain tanpa tindakan yang memadai. Serangan ini juga dikenal sebagai serangan Time of Check, serangan Time of Use, atau serangan TOC/TOU. Kerentanan kondisi balapan terjadi pada awalnya karena kesalahan pemrograman dasar yang biasanya dibuat oleh pengembang, dan kegagalan ini terbukti mahal. Entitas jahat telah mengeksploitasi kondisi ras untuk banyak tujuan jahat, i.e., dari mendapatkan voucher gratis hingga merampok uang dari akun online dan perusahaan investasi.

Mari kita asumsikan bahwa dua utas eksekusi paralel mencoba menaikkan nilai variabel global sebesar 5. Pada akhirnya, variabel global akan memiliki nilai 10. Namun, jika semua utas berjalan secara bersamaan, eksekusi bisa salah tanpa kunci sumber daya atau sinkronisasi. Ketika utas pertama melakukan beberapa manipulasi pada variabel global itu, utas kedua membacanya dan mulai melakukan beberapa manipulasi lainnya. Dalam hal ini, nilai akhir tidak akan seperti yang diharapkan.

Ini terjadi karena efek penghentian satu utas tergantung pada hasil yang lain. Ketika dua utas dieksekusi secara bersamaan, akan ada konsekuensi yang tidak diinginkan.

Lingkup Serangan Kondisi Ras:

Bayangkan bahwa sesuatu yang sedikit lebih kritis sedang dieksekusi oleh dua utas dari contoh di atas, seperti bertukar uang antar rekening bank. Untuk mengirim uang dengan benar, program perlu menjalankan tugas-tugas ini dalam urutan ini; Periksa apakah ada cukup saldo di rekening pengirim, tambahkan uang ke rekening penerima, lalu potong dari rekening pengirim. Tetapi jika Anda mengirimkan dua permintaan secara bersamaan, Anda mungkin dapat memicu kondisi di mana urutan eksekusi utas berubah. Dalam situasi seperti ini, Anda akan berakhir dengan jumlah yang berbeda dari yang diharapkan.

Kerentanan kondisi ras ditemukan oleh Egor Homakov di situs web Starbucks. Dia menemukan cara untuk membuat jumlah kredit tak terbatas pada voucher hadiah Starbucks secara gratis menggunakan browser yang berbeda dengan cookie yang berbeda.

Serangan Meltdown yang menonjol adalah contoh kerentanan kondisi balapan. Dalam serangan meltdown, kelemahan dipicu oleh pemrosesan paralel pengambilan data dari memori dan otentikasi apakah pengguna diizinkan mengakses memori atau tidak. Cacat ini memungkinkan alat untuk menghindari pemeriksaan hak istimewa standar yang memisahkan mekanisme serangan dari mengakses data OS. Celah ini menghasilkan proses yang tidak sah untuk melihat data dan informasi dari alamat lain yang terhubung ke status kemajuan saat ini di memori. Dalam proses eksekusi yang salah, informasi dari alamat yang tidak disetujui akan sering dengan cepat ditumpuk ke dalam cache CPU, dari mana informasi tersebut dapat dipulihkan.

Skenario serangan kehidupan nyata:

Dengan mengirimkan banyak permintaan ke server web secara terus menerus, Anda dapat mencari dan memanipulasi kondisi balapan di aplikasi web web. Jika Anda ingin melihat apakah Anda dapat menarik lebih banyak uang daripada yang Anda miliki di rekening bank Anda, menggunakan fungsi curl, Anda dapat secara bersamaan mengirim beberapa permintaan penarikan ke server.

curl (penarikan 50000) & (penarikan 50000) & (penarikan 50000) & (penarikan 50000) & (penarikan 50000) & (penarikan 50000)

Semakin banyak tuntutan yang Anda ajukan dalam waktu singkat, semakin tinggi kemungkinan serangan Anda akan berhasil.

Selain itu, jika Anda mengirim permintaan tindak lanjut asinkron, Anda akan mengikuti pengguna beberapa kali alih-alih mengirim respons kesalahan. saya.e., jika Anda menambahkan tajuk palsu yang berisi %s saat menjatuhkan permintaan menggunakan penyusup turbo dan tempel kode python berikut:

def followReqs(target, daftar kata):
mesin = RequestEngine(endpoint=target.titik akhir,
koneksi bersamaan=40,
requestPerConnection=100,
pipa=Salah
)
untuk saya dalam kisaran (40):
mesin.antrian (target.req, str(i), gerbang='centang')
mesin.openGate('periksa')
mesin.selesai (waktu habis = 60)
def responseHandle(permintaan, menarik):
meja.tambahkan (permintaan)

Anda akan melihat tombol Serangan. Setelah menekan itu, Turbo Intruder mengirimkan 40 pertanyaan dan memindai kode status. Jika Anda melihat beberapa tanggapan dengan status 201 Generated, itu menunjukkan beberapa kali Anda telah mengikuti orang tersebut.

Ada kerentanan kondisi balapan di mana Anda dapat mengakses beberapa konsol yang ditawarkan ke akun gratis. Sebagian besar situs web yang menyediakan konsol gratis memiliki akun gratis, paket standar dan premium premium. Akun gratis hanya menyediakan 2 atau 3 konsol per pengguna. Untuk melanggar batas ini dan menggunakan konsol tak terbatas, ganggu permintaan GET menggunakan muatan NULL beberapa kali, seperti 100 atau 200. Dan kemudian hapus salah satu konsol secara manual dari UI saat utas sedang berjalan.

Kesimpulan:

Sebagai sarana untuk merusak kontrol akses, kondisi balapan disertakan. Setiap program yang bergantung pada mekanisme kontrol akses mungkin rentan. Sebagian besar waktu, di situs web lembaga keuangan, peretas mengeksploitasi kondisi ras. Karena dapat menyebabkan keuntungan finansial tak terbatas bagi peretas jika kondisi balapan dapat ditemukan pada fitur vital seperti penarikan tunai, transfer uang, atau pembayaran kartu kredit. Platform e-niaga, permainan video, dan layanan pemungutan suara online adalah teknologi berisiko tinggi lainnya. Menerapkan konkurensi yang aman adalah rahasia untuk menghindari kondisi balap. Dan Anda juga dapat menggunakan kunci sumber daya. Juga akan ada fitur penguncian bawaan untuk bahasa pemrograman dengan kemampuan konkurensi yang membantu mencegah kondisi seperti itu. Selain itu, mengikuti standar pengkodean yang aman,.e., konsep hak istimewa terkecil dan kode audit akan mengurangi kemungkinan pelanggaran program program.

Aplikasi Pemetaan Gamepad Terbaik untuk Linux
Jika Anda suka bermain game di Linux dengan gamepad alih-alih sistem input keyboard dan mouse biasa, ada beberapa aplikasi yang berguna untuk Anda. Ba...
Alat Berguna untuk Gamer Linux
Jika Anda suka bermain game di Linux, kemungkinan besar Anda telah menggunakan aplikasi dan utilitas seperti Wine, Lutris, dan OBS Studio untuk mening...
Game Remaster HD untuk Linux yang Belum Pernah Rilis Linux Sebelumnya
Banyak pengembang dan penerbit game datang dengan remaster HD dari game lama untuk memperpanjang umur waralaba, harap penggemar meminta kompatibilitas...