Kerentanan OAuth | Bagaimana untuk melaksanakan kebenaran yang selamat dalam aplikasi web anda

Anonim
Kerentanan OAuth | Bagaimana untuk melaksanakan kebenaran yang selamat dalam aplikasi web anda 2740_1

Artikel ini akan menangani kelemahan OAUTH yang terkenal. Pembaca juga akan belajar bagaimana untuk melaksanakan kebenaran yang selamat dan selamat dalam aplikasi web.

OAuth adalah protokol yang boleh dipercayai, tetapi tahap keselamatan sebahagian besarnya bergantung kepada kesedaran pemaju web apabila melaksanakan kebenaran. Ini menjadikan topik ini sangat penting untuk profesional keselamatan maklumat. Mereka perlu menyediakan tahap perlindungan akaun pengguna yang tinggi. Sudah tiba masanya untuk berkenalan dengan pengamal yang berkesan yang akan membantu mengurangkan bahaya yang kurang menjual OAuth.

Pengenalan

Protokol OAuth 2.0 kini digunakan secara meluas dalam pelbagai aplikasi. Menggunakannya, antara muka pengguna yang mudah menjadi tersedia, pengesahan yang lebih mudah dan kebenaran berbanding dengan kaedah tradisional untuk memasuki nama pengguna dan kata laluan. Dengan pelaksanaan yang betul dan bijak, Protokol OAuth akan lebih selamat daripada kebenaran tradisional, kerana pengguna tidak perlu berkongsi data perakaunan mereka dengan aplikasi pihak ketiga untuk mengakses sumber tertentu. Pengguna sering memilih untuk log masuk menggunakan akaun Google mereka, Facebook atau LinkedIn, bukannya membuat akaun baru setiap kali anda perlu mendaftar di beberapa laman web. Oleh itu, protokol OAuth sangat menyederhanakan kehidupan kita.

Secara umum, penyedia perkhidmatan OAuth yang popular sangat dipercayai. Log masuk dengan akaun Google atau Facebook memberi inspirasi kepada rasa aman tertentu, dan betul. Protokol ini diuji dengan teliti oleh pakar. Semua kelemahan yang tersedia sentiasa diperbetulkan dengan cepat oleh pasukan pemaju. Walau bagaimanapun, perlu diperhatikan bahawa perasaan keselamatan yang lengkap boleh menjadi palsu.

Penyedia perkhidmatan OAuth meninggalkan pemaju aplikasi banyak alasan untuk menampung keselamatan program mereka. Malah, perkhidmatan OAuth yang dilindungi pada awalnya, yang salah dilaksanakan dalam proses pemasangannya, boleh menjadi sasaran mudah untuk penceroboh. Preoccupacy sedemikian akan membawa kepada kecurian data peribadi pengguna.

Seterusnya, anda harus mempertimbangkan kelemahan yang paling biasa yang dihadapi dalam aplikasi pihak ketiga yang melaksanakan Protokol OAuth untuk memberi kuasa kepada pengguna mereka. Perlu diingatkan bahawa protokol itu sendiri selamat dan boleh dipercayai. Hanya selepas pelaksanaan yang salah, ia menjadi terdedah kepada serangan penggodam.

Kecurian Tockey OAuth menggunakan Header Reader

Apabila permohonan meminta kebenaran bagi pihak pengguna di pelayan OAuth, seseorang menerima kod untuk masuk dan menghantar kembali ke pelayan untuk cek berikutnya. Jika semasa kerja, pengguna akan diarahkan ke halaman lain, kod tersebut akan dilihat dalam tajuk "Rujukan" permintaan HTTP. Oleh itu, kod itu akan jatuh di laman web luaran, yang akan mengancam data pengguna yang didaftarkan pada pelayan OAuth.

Nota: Header Reader adalah header pertanyaan HTTP, ia menghantar host URL dari mana permintaan dihantar.

Untuk melembutkan akibat kerentanan ini, pemaju mesti memastikan bahawa aplikasi webnya tidak mengandungi sebarang suntikan HTML. Sekiranya suntikan dikesan, penyerang boleh dengan mudah menetapkan tag imej ke pelayan webnya dan mencari jalan untuk mengalihkan pengguna di atasnya. Oleh itu, dia akan mendapat peluang untuk mencuri kod dari tajuk "Rujukan" permintaan HTTP.

Kecurian Tockey OAuth menggunakan Parameter Redirect_uri

Aplikasi ini memulakan proses kebenaran dengan menghantar permintaan kepada pelayan OAuth:

https://www.example.com/signin/authorize ?[....]&redirect_uri=httpps://demo.exampps.com/loginsuccessful.

Pertanyaan sentiasa mengandungi parameter "redirect_uri" yang digunakan oleh pelayan OAuth untuk menghantar token kembali ke aplikasi selepas pengguna memberikan persetujuannya. Sekiranya nilai parameter ini tidak dikawal atau tidak diperiksa, penyerang dengan mudah boleh mengubahnya dan mengarahkan permintaan ke laman webnya, di mana ia menggunakan program khas untuk memproses token dan mendapat akses kepada sumber yang terhad.

https://www.example.com/signin/authorize ?[....]&redirect_uri=httpps://localhost.evil.com.

Kadang-kadang URL yang sama disekat. Penyerang boleh mengalihkan data yang diterima pada URL terbuka, seperti ini:

https://www.example.com/oauth20_authorize.srf?[...[.Redirect_uri=httpps://accounts.google.com/backtoouthsubtarget?next=httpset://evil.com.

Atau ini:

https://www.example.com/oauth2/Authorize [...]% irect_uri = https% 3a% 2f% 2fapps.facebook.com% 2Fattacker% 2f.

Apabila melaksanakan OAuth, anda tidak boleh memasukkan seluruh domain dalam senarai putih. Hanya beberapa URL yang perlu ditambah kepada "redirect_uri" tidak mengalihkan permintaan untuk membuka redirect.

Pemalsuan permintaan silang talian

Pemalsuan permintaan interif mungkin berlaku apabila penyerang berjaya menjadikan mangsa untuk mengklik pada pautannya dan, dengan itu, untuk menghasilkan permintaan yang dia tidak akan menjana. Pemalsuan permintaan silang biasanya dilembutkan dengan token CSRF, yang dikaitkan dengan sesi pengguna. Ia membantu permohonan untuk memeriksa orang orang yang menghantar permintaan itu. Parameter "Negeri" dalam protokol OAuth berfungsi sebagai token CSRF.

Perlu dipertimbangkan bagaimana serangan CSRF dijalankan di OAuth dan sebagai parameter "Negeri" boleh digunakan untuk mengurangkan kesan kerentanan.

Hacker membuka aplikasi web dan melancarkan proses kebenaran untuk mengakses pembekal khidmat menggunakan OAuth. Aplikasi ini meminta pembekal perkhidmatan untuk mengakses yang perlu disediakan. Hacker akan diarahkan ke laman web pembekal perkhidmatan, di mana anda biasanya perlu memasukkan nama pengguna dan kata laluan anda untuk memberi kuasa akses. Sebaliknya, penggodam menangkap dan menghalang permintaan ini dan menyelamatkan URLnya. Hacker entah bagaimana menyebabkan mangsa membuka URL ini. Sekiranya mangsa memasuki sistem pembekal perkhidmatan menggunakan akaunnya, maka kelayakannya akan digunakan untuk mengeluarkan kod kebenaran. Kod kebenaran pertukaran akses ke token akses. Sekarang akaun penggodam dalam permohonan itu diberi kuasa. Ia boleh mengakses akaun mangsa.

Jadi, bagaimana saya boleh menghalang keadaan ini menggunakan parameter "Negeri"?

Aplikasi ini mesti membuat nilai yang entah bagaimana berdasarkan akaun sumber (contohnya, menggunakan kekunci sesi pengguna Hash). Ia tidak begitu penting Apa itu, perkara utama adalah bahawa nilai itu unik dan dihasilkan menggunakan maklumat peribadi mengenai pengguna asal. Ia diberikan kepada parameter "Negeri".

Nilai ini dihantar kepada pembekal perkhidmatan apabila mengalihkan semula. Sekarang penggodam menjemput mangsa untuk membuka URL, yang dia simpan.

Kod kebenaran dikeluarkan dan dihantar kembali kepada pelanggan dalam sesi bersama dengan parameter "Negeri".

Pelanggan menjana nilai parameter berdasarkan maklumat sesi dan membandingkannya dengan nilai "Negeri", yang dihantar kembali dari permintaan kebenaran kepada pembekal khidmat. Nilai ini tidak sepadan dengan parameter "Negeri" dalam pertanyaan, kerana ia telah dijana hanya berdasarkan maklumat mengenai sesi semasa. Akibatnya, nilai yang diperoleh tidak diterima oleh sistem.

Kerentanan lain yang dikesan apabila melaksanakan OAuth termasuk keupayaan untuk melaksanakan XSS (skrip silang tapak) menggunakan parameter "Redirect_uri", tetapan kunci swasta OAuth (kunci yang kadang-kadang boleh diperolehi apabila memecat aplikasi mudah alih) dan pelanggaran peraturan kod kebenaran (apabila Kod kebenaran boleh digunakan lebih daripada sekali untuk mengeluarkan pelbagai token akses). Kelemahan ini kurang biasa daripada yang diterangkan di atas, tetapi ia tidak menjadikan mereka kurang berbahaya. Pemaju perlu mengetahui semua amalan yang diperlukan untuk memastikan operasi web yang boleh dipercayai.

Penulis artikel yang diterjemahkan: Simon Saliba.

PENTING! Maklumat semata-mata untuk tujuan akademik. Sila mematuhi undang-undang dan jangan memohon maklumat ini untuk tujuan yang menyalahi undang-undang.

Bahan yang lebih menarik di Cisoclub.ru. Langgan kepada kami: Facebook | VK | Twitter | Instagram | Telegram | Zen | Messenger | ICQ baru | YouTube | Pulse.

Baca lebih lanjut