Pengaturcaraan Web

Kerentanan Keadaan Perlumbaan dalam Aplikasi Web

Kerentanan Keadaan Perlumbaan dalam Aplikasi Web
Apabila aplikasi web yang dikonfigurasi untuk mengatur fungsi dalam urutan tetap diperlukan untuk menjalankan dua atau lebih operasi secara serentak, serangan kondisi perlumbaan berlaku. Teknik ini memanfaatkan kelewatan masa antara ketika perkhidmatan diperkenalkan dan ketika kawalan keselamatan berlaku. Serangan ini dapat dilakukan dengan salah satu dari dua cara, berdasarkan aplikasi multithreaded: pencerobohan yang disebabkan oleh proses yang tidak dipercayai dan pencerobohan yang disebabkan oleh proses yang boleh dipercayai yang dapat memiliki hak yang sama dan sama.

Proses yang berbeza mungkin saling berinteraksi tanpa langkah yang mencukupi. Serangan ini juga dikenal sebagai serangan Time of Check, serangan Time of Use, atau serangan TOC / TOU. Kerentanan keadaan perlumbaan berlaku sejak awal kerana ralat pengaturcaraan asas yang biasanya dibuat oleh pembangun, dan kegagalan ini terbukti mahal. Entiti berniat jahat telah mengeksploitasi keadaan perlumbaan untuk tujuan jahat, i.e., dari mendapatkan baucar percuma untuk merompak wang dari akaun dalam talian dan firma pelaburan.

Mari kita anggap bahawa dua utas pelaksanaan selari cuba menaikkan nilai pemboleh ubah global sebanyak 5. Pada akhirnya, pemboleh ubah global akan mempunyai nilai 10. Namun, jika semua utas berjalan serentak, pelaksanaannya boleh menjadi salah tanpa kunci sumber atau penyegerakan. Semasa utas pertama melakukan manipulasi kepada pemboleh ubah global itu, utas kedua membacanya dan mula melakukan manipulasi lain. Dalam kes ini, nilai akhir tidak seperti yang diharapkan.

Ini berlaku kerana kesan penutupan satu utas bergantung pada hasil yang lain. Apabila kedua utas dijalankan secara serentak, akan ada akibat yang tidak disengajakan.

Skop Serangan Keadaan Perlumbaan:

Bayangkan bahawa apa-apa yang lebih kritikal sedang dilaksanakan oleh dua utas contoh di atas, seperti menukar wang antara akaun bank. Untuk menghantar wang dengan betul, program perlu melaksanakan tugas-tugas ini mengikut urutan ini; Periksa sama ada terdapat baki yang mencukupi dalam akaun pengirim, tambahkan wang ke akaun penerima, dan kemudian tolak dari akaun pengirim. Tetapi jika anda serentak mengemukakan dua permintaan, anda mungkin dapat mencetuskan keadaan di mana urutan pelaksanaan urutan berubah. Dalam keadaan seperti ini, anda akan berakhir dengan jumlah yang berbeza dari yang dijangkakan.

Kerentanan keadaan perlumbaan dijumpai oleh Egor Homakov di laman web Starbucks. Dia menemui cara untuk membuat kredit yang tidak terhingga pada baucar hadiah Starbucks secara percuma menggunakan penyemak imbas yang berbeza dengan kuki yang berbeza.

Serangan Meltdown yang menonjol adalah contoh kerentanan keadaan perlumbaan. Dalam serangan meleleh, kelemahan dipicu oleh pemprosesan pengambilan data yang selari dari memori dan pengesahan sama ada pengguna dibenarkan mengakses memori atau tidak. Kekurangan ini memungkinkan alat untuk menghindari pemeriksaan hak istimewa yang memisahkan mekanisme serangan dari mengakses data OS. Kekosongan ini mengakibatkan proses tidak dibenarkan untuk melihat data dan maklumat dari alamat lain yang disambungkan ke keadaan kemajuan semasa dalam memori. Dalam proses pelaksanaan yang salah, maklumat dari alamat yang tidak disetujui akan sering ditumpuk dengan cepat ke dalam cache CPU, dari mana maklumat itu dapat dipulihkan.

Senario serangan kehidupan sebenar:

Dengan mengirimkan banyak permintaan ke pelayan web secara berterusan, anda dapat mencari dan memanipulasi keadaan perlumbaan dalam aplikasi web. Sekiranya anda ingin mengetahui sama ada anda boleh mengeluarkan lebih banyak wang daripada atau tidak di akaun bank anda, dengan menggunakan fungsi curl, anda boleh menghantar beberapa permintaan pengeluaran secara bersamaan ke pelayan.

curl (pengeluaran 50000) & (pengeluaran 50000) & (pengeluaran 50000) & (pengeluaran 50000) & (pengeluaran 50000)

Semakin banyak tuntutan yang anda ajukan dalam jangka waktu yang singkat, semakin tinggi kemungkinan serangan anda akan berjaya.

Lebih-lebih lagi, jika anda menghantar permintaan susulan tidak segerak, anda akan mengikuti pengguna beberapa kali dan bukannya menghantar tindak balas ralat. Saya.e., jika anda menambahkan header palsu yang mengandungi% s semasa menjatuhkan permintaan menggunakan turbo intruder dan tampal kod python berikut:

def followReqs (sasaran, senarai perkataan):
enjin = RequestEngine (titik akhir = sasaran.titik akhir,
sambungan bersamaan = 40,
permintaanPerConnection = 100,
saluran paip = Salah
)
untuk i dalam jarak (40):
enjin.beratur (sasaran.req, str (i), gate = 'check')
enjin.openGate ('semak')
enjin.selesai (tamat masa = 60)
def defHandle (req, menarik):
meja.tambah (req)

Anda akan melihat butang Serangan. Setelah menekannya, Turbo Intruder mengemukakan 40 pertanyaan dan mengimbas kod status. Sekiranya anda melihat banyak respons dengan status 201 Dihasilkan, itu menunjukkan berkali-kali anda mengikuti orang itu.

Terdapat kerentanan keadaan perlumbaan di mana anda boleh mengakses banyak konsol yang ditawarkan ke akaun percuma. Sebilangan besar laman web yang menyediakan konsol percuma mempunyai akaun percuma, pakej standard dan premium. Akaun percuma hanya menyediakan 2 atau 3 konsol bagi setiap pengguna. Untuk memecahkan had ini dan menggunakan konsol tanpa had, campur tangan permintaan GET menggunakan muatan NULL beberapa kali, seperti 100 atau 200. Dan kemudian padamkan salah satu konsol secara manual dari UI semasa utas berjalan.

Kesimpulan:

Sebagai kaedah untuk melemahkan kawalan akses, syarat perlumbaan dimasukkan. Mana-mana program yang bergantung pada mekanisme kawalan akses mungkin rentan. Selalunya, di laman web institusi kewangan, penggodam mengeksploitasi keadaan perlumbaan. Oleh kerana ia boleh membawa kepada keuntungan kewangan yang tidak terhad untuk penggodam jika keadaan perlumbaan dapat dijumpai pada ciri penting seperti pengeluaran tunai, pemindahan wang, atau pembayaran kad kredit. Platform e-dagang, permainan video, dan perkhidmatan pengundian dalam talian adalah teknologi berisiko tinggi yang lain. Melaksanakan konkurensi yang selamat adalah rahsia untuk mengelakkan keadaan perlumbaan. Anda juga boleh menggunakan kunci sumber. Terdapat juga ciri penguncian yang terpasang untuk bahasa pengaturcaraan dengan kemampuan serentak yang membantu mencegah keadaan seperti itu. Di samping itu, mengikuti piawaian pengekodan yang selamat, i.e., konsep keistimewaan dan kod audit yang paling rendah akan mengurangkan kemungkinan pelanggaran program.

Enjin Permainan Sumber Percuma dan Terbuka untuk Membangunkan Permainan Linux
Artikel ini akan merangkumi senarai enjin permainan sumber percuma dan terbuka yang dapat digunakan untuk mengembangkan permainan 2D dan 3D di Linux. ...
Shadow of the Tomb Raider untuk Tutorial Linux
Shadow of the Tomb Raider adalah penambahan kedua belas untuk siri Tomb Raider - francais permainan aksi-pengembaraan yang dibuat oleh Eidos Montreal....
Cara Meningkatkan FPS di Linux?
FPS bermaksud Bingkai sesaat. Tugas FPS adalah mengukur kadar bingkai dalam pemutaran video atau persembahan permainan. Dengan kata mudah bilangan gam...