Para peneliti di perusahaan keamanan pengkodean web SALT baru saja menerbitkan deskripsi yang menarik tentang bagaimana mereka menemukan sebuah bug otentikasi dijuluki CVE-2023-28131 dalam perangkat pembuatan aplikasi online populer yang dikenal sebagai Expo.
Kabar baiknya adalah bahwa Ekspo menanggapi sangat cepat untuk laporan bug SALT, menghasilkan perbaikan hanya dalam beberapa jam setelah pengungkapan tanggung jawab SALT.
Untungnya, perbaikan tidak bergantung pada pelanggan yang mengunduh apa pun, karena tambalan diterapkan di dalam layanan cloud Expo, dan tidak memerlukan tambalan untuk aplikasi pra-instal atau kode sisi klien apa pun.
Pameran laporan tidak hanya menjelaskan apa yang terjadi dan bagaimana perusahaan memperbaikinya, tetapi juga menawarkan saran pemrograman kepada pelanggannya tentang cara menghindari kemungkinan kerentanan semacam ini dengan layanan online lainnya.
SALT kemudian menunggu tiga bulan sebelum menerbitkan laporannya, daripada terburu-buru untuk tujuan publisitas secepat mungkin, sehingga memberi kesempatan kepada pengguna Expo untuk mencerna dan menindaklanjuti tanggapan Expo.
Keeping it simple
Proses otentikasi buggy dijelaskan secara rinci di laporan SALT, tetapi kami akan menyajikan deskripsi yang sangat disederhanakan di sini tentang apa yang salah dalam layanan OAUTH Expo.
AUTH, kependekan dari Kerangka Otorisasi Terbuka, adalah proses yang memungkinkan Anda untuk mengakses data pribadi di layanan online (seperti mengedit profil online, menambahkan artikel blog baru, atau menyetujui layanan web untuk membuat postingan media sosial untuk Anda), tanpa pernah mengatur kata sandi dengan , atau masuk langsung ke layanan itu sendiri.
Ketika Anda melihat layanan web yang menawarkan Anda a Masuk dengan Google atau Facebook opsi, misalnya, mereka hampir selalu menggunakan OAUTH di latar belakang, sehingga Anda tidak perlu membuat nama pengguna dan kata sandi baru dengan situs web lain, atau memberikan nomor telepon Anda ke layanan online lain.
Sebenarnya, Anda mengautentikasi secara tidak langsung, hanya memasukkan kredensial Google atau Facebook Anda ke salah satu situs tersebut.
Beberapa pengguna tidak menyukai ini, karena mereka tidak ingin mengautentikasi ke Google atau Facebook hanya untuk membuktikan identitas mereka ke situs lain yang tidak terkait. Yang lain menyukainya karena menganggap bahwa situs seperti Facebook dan Google memiliki lebih banyak pengalaman dalam menangani proses login, menyimpan hash kata sandi dengan aman, dan melakukan 2FA, daripada situs web butik yang telah mencoba merajut sendiri proses keamanan kriptografisnya.
Otentikasi outsourcing
Sangat disederhanakan, login gaya OAUTH, melalui akun Facebook Anda ke situs bernama example.com
, berjalan seperti ini:
- situs ini
example.com
mengatakan kepada aplikasi atau browser Anda, “Halo, X, pergi dan dapatkan token akses ajaib untuk situs ini dari Facebook.” - Anda mengunjungi URL Facebook khusus, masuk jika Anda belum melakukannya, dan katakan, “Beri saya token akses ajaib untuk
example.com
. " - Jika Facebook puas bahwa Anda adalah siapa yang Anda klaim, itu menjawab, "Halo, X, ini token akses ajaib Anda."
- Anda menyerahkan token akses ke
example.com
, yang kemudian dapat menghubungi Facebook sendiri untuk memvalidasi token.
Perhatikan bahwa hanya Facebook yang melihat kata sandi Facebook dan kode 2FA Anda, jika diperlukan, sehingga layanan Facebook bertindak sebagai perantara autentikasi antara Anda dan example.com
.
Di belakang layar, ada validasi akhir, seperti ini:
- situs ini
example.com
mengatakan kepada Facebook, "Apakah Anda mengeluarkan token ini, dan apakah itu memvalidasi pengguna X?" - Jika Facebook setuju, itu memberitahu
example.com
, "Ya, kami menganggap pengguna ini diautentikasi."
Urutan subversibel
Bug yang ditemukan oleh para peneliti SALT dalam kode Expo dapat dipicu dengan menumbangkan penanganan Expo yang jahat atas apa yang Anda sebut proses "perantara otentikasi".
Poin utamanya adalah sebagai berikut:
- Expo sendiri menambahkan pembungkus di sekitar proses verifikasi, sehingga menangani autentikasi dan validasi untuk Anda, yang pada akhirnya memberikan token akses ajaib untuk situs web yang diinginkan (
example.com
dalam pertukaran di atas) kembali ke aplikasi atau situs web tempat Anda terhubung. - Parameter yang digunakan dalam menangani verifikasi dikemas ke dalam URL besar yang dikirimkan ke layanan Expo.
- Salah satu parameter ini disimpan sementara di cookie web yang menentukan URL tujuan pengiriman token keamanan ajaib terakhir untuk mengaktifkan akses.
- Sebelum token keamanan dikirim, munculan meminta Anda untuk memverifikasi URL yang akan diotorisasi, sehingga Anda dapat menangkap siapa pun yang mencoba mengganti URL palsu ke dalam proses login.
- Jika Anda menyetujui munculan, Expo mengarahkan Anda ke proses verifikasi Facebook.
- Jika Facebook menyetujui verifikasi, itu mengembalikan token akses ajaib ke layanan Expo, dan Expo meneruskannya ke URL yang baru saja Anda setujui di popup, dijuluki
returnURL
. - Aplikasi atau situs web mendengarkan pada yang ditentukan
returnURL
menerima panggilan balik Expo, memperoleh token akses, dan karenanya diautentikasi sebagai Anda.
Sayangnya, para peneliti SALT menemukan bahwa mereka dapat menumbangkan proses login dengan menggunakan kode JavaScript untuk memicu akses ke URL login Expo awal, tetapi kemudian mematikan popup verifikasi sebelum Anda sempat membacanya atau menyetujuinya sendiri.
Namun, pada titik ini, layanan Expo telah menetapkan nama cookie ru
(kependekan dari returnURL
) untuk memberi tahu ke mana harus menelepon kembali dengan token akses ajaib Anda di bagian akhir.
Ini berarti penjahat dunia maya dapat mengelabui kode Expo untuk "mengingat" a returnURL
seperti https://roguesite.example
, tanpa Anda pernah melihat dialog untuk memperingatkan Anda bahwa serangan sedang berlangsung, apalagi menyetujuinya secara tidak sengaja.
Kemudian para peneliti menggunakan potongan kode JavaScript kedua untuk mensimulasikan pengalihan Expo ke proses verifikasi Facebook, yang secara otomatis akan berhasil jika (seperti kebanyakan orang) Anda sudah masuk ke Facebook itu sendiri.
Verifikasi Facebook, pada gilirannya, akan mengalihkan proses login Expo kembali ke kode JavaScript Expo sendiri…
… yang dengan penuh kepercayaan tetapi keliru mengambil yang tidak pernah benar-benar diverifikasi returnURL
untuk panggilan baliknya dari sihir itu ru
cookie yang ditetapkan di awal, tanpa persetujuan atau sepengetahuan Anda.
Gagal membuka atau gagal menutup?
Seperti yang Anda lihat dari uraian di atas, kerentanan disebabkan oleh kode Expo yang gagal secara tidak tepat.
Kode otentikasi harus secara umum gagal ditutup, dalam jargonnya, artinya proses tersebut tidak akan berhasil kecuali ada semacam persetujuan aktif yang telah diberikan.
Kami menduga bahwa Expo tidak bermaksud demikian gagal terbuka, mengingat laporan SALT menunjukkan bahwa dialog persetujuan munculan terlihat seperti ini:
Aplikasi di https://roguesite.example meminta Anda untuk masuk ke akun Facebook Anda. Apakah Anda sepenuhnya mempercayai https://roguesite.example dan setuju untuk membiarkannya: [Tidak] [Ya]
Jawaban default, seperti yang Anda harapkan, telah diatur ke [No]
, tetapi ini hanya akan menyebabkan sistem gagal ditutup jika Anda menggunakan kode sisi klien Expo sendiri untuk mengontrol proses verifikasi.
Dengan menyediakan JavaScript mereka sendiri untuk menjalankan urutan permintaan verifikasi, para peneliti dapat memperlakukan dialog persetujuan seolah-olah dikatakan:
Jika Anda tidak secara eksplisit memberi tahu kami untuk memblokir https://roguesite.example agar tidak masuk melalui akun Facebook Anda, kami akan membiarkannya melakukannya: [Izinkan] [Blokir]
Solusinya, di antara perubahan lainnya, adalah kode login awal Expo untuk mengatur keajaiban itu ru
kue hanya setelah Anda secara eksplisit menyetujui apa yang disebut returnURL
, sehingga kode login JavaScript Expo nanti akan gagal ditutup jika munculan verifikasi dilewati, alih-alih memercayai URL yang belum pernah Anda lihat atau setujui secara membabi buta.
Dalam banyak hal, bug ini mirip dengan Steker Cerdas Belkin Wemo bug yang kami tulis sekitar dua minggu yang lalu, meskipun akar penyebab dalam kasus Belkin adalah buffer overflow, bukan panggilan balik web nakal.
Kode Belkin mengalokasikan buffer memori 68 byte dalam kode sisi servernya, tetapi bergantung pada pemeriksaan kode sisi kliennya bahwa Anda tidak mencoba mengirim lebih dari 68 byte, sehingga server bergantung pada belas kasihan penyerang yang memutuskan untuk berbicara dengan server menggunakan kode sisi klien mereka sendiri yang melewati proses verifikasi.
Apa yang harus dilakukan?
- Saat melaporkan dan menulis bug, pertimbangkan untuk mengikuti SALT's contoh. Mengungkapkan secara bertanggung jawab, memberi vendor waktu yang wajar untuk memperbaiki kerentanan, ditambah waktu yang wajar untuk memberi tahu penggunanya sendiri, sebelum memublikasikan detail yang memungkinkan orang lain membuat eksploit mereka sendiri.
- Saat menerima laporan bug, pertimbangkan untuk mengikuti Expo's contoh. Balas dengan cepat, tetap berhubungan dengan pelapor bug, tambal kerentanan sesegera mungkin, berikan laporan investigasi yang berguna untuk pengguna Anda, dan jaga agar tetap objektif. (Tolak saran tim pemasaran Anda untuk memuji diri sendiri karena "menanggapi keamanan dengan serius" atau menganggap masalah itu tidak penting. Itu terserah pengguna Anda untuk memutuskan, berdasarkan ketepatan dan ketepatan tanggapan Anda, dan penilaian risiko mereka sendiri.)
- Pastikan kode autentikasi Anda gagal ditutup. Pastikan Anda tidak memiliki langkah verifikasi atau persetujuan yang dapat dinetralkan hanya dengan mengabaikan atau membatalkannya.
- Jangan pernah berasumsi bahwa kode sisi klien Anda akan mengendalikan proses verifikasi. Asumsikan bahwa penyerang akan merekayasa balik protokol Anda dan membuat kode klien mereka sendiri untuk menghindari pemeriksaan sebanyak mungkin.
- Keluar dari akun web saat Anda tidak menggunakannya secara aktif. Banyak orang masuk ke akun seperti Google, Amazon, Facebook, Apple, dan lainnya, lalu tetap masuk tanpa batas waktu, karena nyaman. Keluar mencegah banyak tindakan (termasuk autentikasi, posting, suka, berbagi, dan banyak lagi) terjadi saat Anda tidak mengharapkannya – Anda akan melihat permintaan masuk sebagai gantinya.
Jangan lupa bahwa dengan keluar dari layanan web kapan pun Anda bisa, dan dengan sering menghapus semua kuki peramban dan menyimpan data web, Anda juga mengurangi jumlah informasi pelacakan yang dapat dikumpulkan situs tentang Anda saat Anda menjelajah.
Lagi pula, jika Anda tidak masuk, dan Anda tidak memiliki cookie pelacakan yang tersisa dari sebelumnya, situs tidak lagi tahu persis siapa Anda, atau apa yang Anda lakukan terakhir kali Anda berkunjung.
- Konten Bertenaga SEO & Distribusi PR. Dapatkan Amplifikasi Hari Ini.
- PlatoAiStream. Kecerdasan Data Web3. Pengetahuan Diperkuat. Akses Di Sini.
- Mencetak Masa Depan bersama Adryenn Ashley. Akses Di Sini.
- Beli dan Jual Saham di Perusahaan PRE-IPO dengan PREIPO®. Akses Di Sini.
- Sumber: https://nakedsecurity.sophos.com/2023/05/30/serious-security-verification-is-vital-examining-an-oauth-login-bug/
- :memiliki
- :adalah
- :bukan
- :Di mana
- $NAIK
- 1
- 15%
- 2FA
- a
- Sanggup
- Tentang Kami
- atas
- Mutlak
- mengakses
- Akun
- Akun
- Mengakuisisi
- Bertindak
- tindakan
- aktif
- aktif
- tindakan
- menambahkan
- Menambahkan
- nasihat
- menasihati
- Setelah
- silam
- Semua
- dialokasikan
- mengizinkan
- memungkinkan
- sendirian
- sudah
- juga
- selalu
- Amazon
- antara
- jumlah
- an
- dan
- Lain
- menjawab
- Apa pun
- siapapun
- apa saja
- aplikasi
- Apple
- persetujuan
- menyetujui
- disetujui
- aplikasi
- ADALAH
- sekitar
- artikel
- AS
- penilaian
- At
- menyerang
- mengotentikasi
- dikonfirmasi
- Otentikasi
- penulis
- resmi
- otorisasi
- mobil
- secara otomatis
- menghindari
- kembali
- latar belakang
- background-image
- berdasarkan
- BE
- karena
- menjadi
- sebelum
- antara
- Besar
- secara membabi buta
- Memblokir
- Blog
- batas
- Bawah
- makelar
- Browser
- cookie browser
- penyangga
- buffer overflow
- Bug
- bug
- tapi
- by
- panggilan
- bernama
- CAN
- kasus
- gulat
- Menyebabkan
- disebabkan
- pusat
- kesempatan
- Perubahan
- memeriksa
- Cek
- klaim
- Pembukaan hutan
- klien
- tertutup
- awan
- kode
- Pengkodean
- mengumpulkan
- warna
- kedatangan
- perusahaan
- Menghubungkan
- Mempertimbangkan
- kontak
- kontrol
- Mudah
- kue
- kue
- bisa
- menutupi
- membuat
- Surat kepercayaan
- kriptografi
- pelanggan
- PENJAHAT SIBER
- data
- memutuskan
- memutuskan
- Default
- disampaikan
- deskripsi
- diinginkan
- rinci
- rincian
- dialog
- MELAKUKAN
- intisari
- langsung
- Membuka
- penyingkapan
- Memberhentikan
- Display
- do
- tidak
- melakukan
- don
- Dont
- dijuluki
- mengedit
- lain
- aktif
- akhir
- Bahkan
- pERNAH
- persis
- Memeriksa
- contoh
- Pasar Valas
- mengharapkan
- pengalaman
- menjelaskan
- Mengeksploitasi
- Expo
- GAGAL
- kegagalan
- gagal
- sangat menarik
- beberapa
- terakhir
- Memperbaiki
- tetap
- berikut
- berikut
- Untuk
- ditemukan
- sering
- dari
- sepenuhnya
- umumnya
- mendapatkan
- Memberikan
- diberikan
- Pemberian
- Go
- Pergi
- baik
- merebut
- sangat
- memiliki
- tangan
- Menangani
- Penanganan
- terjadi
- Kejadian
- Memiliki
- tinggi
- bermanfaat
- di sini
- JAM
- melayang-layang
- Seterpercayaapakah Olymp Trade? Kesimpulan
- How To
- Namun
- HTTPS
- identitas
- if
- diimplementasikan
- in
- Termasuk
- tidak langsung
- informasi
- mulanya
- sebagai gantinya
- berniat
- ke
- penyelidikan
- isu
- IT
- NYA
- Diri
- jargon
- JavaScript
- hanya
- Menjaga
- kunci
- merajut
- Tahu
- pengetahuan
- dikenal
- Terakhir
- kemudian
- meninggalkan
- meninggalkan
- 'like'
- Listening
- ll
- login
- penebangan
- masuk
- lagi
- tampak
- sihir
- membuat
- banyak
- banyak orang
- Margin
- Marketing
- max-width
- makna
- berarti
- Media
- Memori
- mungkin
- kesalahan
- bulan
- lebih
- banyak
- Bernama
- Perlu
- dibutuhkan
- tak pernah
- New
- berita
- tidak
- normal
- jumlah
- sumpah
- tujuan
- of
- lepas
- menawarkan
- ditawarkan
- on
- ONE
- secara online
- hanya
- Buka
- pilihan
- or
- Lainnya
- Lainnya
- di luar
- lebih
- sendiri
- penuh sesak
- parameter
- melewati
- Lewat
- Kata Sandi
- tambalan
- Patch
- paul
- Konsultan Ahli
- telepon
- plato
- Kecerdasan Data Plato
- Data Plato
- plus
- Titik
- poin
- Populer
- posisi
- mungkin
- Posts
- menyajikan
- mencegah
- swasta
- proses
- proses
- Profil
- Pemrograman
- protokol
- Rasakan itu
- memberikan
- publisitas
- diterbitkan
- Penerbitan
- tujuan
- Puting
- segera
- agak
- Baca
- benar-benar
- masuk akal
- menerima
- menerima
- redirect
- menurunkan
- mengandalkan
- balasan
- melaporkan
- reporter
- Pelaporan
- laporan
- permintaan
- membutuhkan
- peneliti
- tanggapan
- tanggung jawab
- Pengembalian
- benar
- Risiko
- akar
- Run
- Tersebut
- garam
- puas
- mengatakan
- mengatakan
- adegan
- Kedua
- aman
- keamanan
- token keamanan
- melihat
- melihat
- terlihat
- melihat
- mengirim
- mengirim
- Urutan
- serius
- layanan
- Layanan
- set
- pengaturan
- saham
- Pendek
- harus
- Pertunjukkan
- menandatangani
- mirip
- disederhanakan
- hanya
- situs web
- Situs
- pintar
- So
- Sosial
- media sosial
- Posting Media Sosial
- padat
- larutan
- beberapa
- sesuatu
- Segera
- berbicara
- khusus
- ditentukan
- awal
- tinggal
- Tangga
- tersimpan
- disampaikan
- berhasil
- seperti itu
- memasok
- SVG
- sistem
- Berbicara
- mengatakan
- mengatakan
- dari
- bahwa
- Grafik
- mereka
- Mereka
- kemudian
- karena itu
- Ini
- mereka
- ini
- itu
- meskipun?
- tiga
- waktu
- untuk
- token
- toolkit
- puncak
- Pelacakan
- transisi
- jelas
- mengobati
- mencoba
- memicu
- dipicu
- Kepercayaan
- percaya
- mencoba
- MENGHIDUPKAN
- dua
- Akhirnya
- bawah
- atas
- URL
- us
- bekas
- Pengguna
- Pengguna
- menggunakan
- MENGESAHKAN
- pengesahan
- penjaja
- Verifikasi
- memeriksa
- melalui
- Mengunjungi
- mengunjungi
- vital
- kerentanan
- ingin
- adalah
- Cara..
- cara
- we
- jaringan
- layanan web
- Situs Web
- minggu
- pergi
- adalah
- Apa
- ketika
- kapan saja
- yang
- SIAPA
- akan
- dengan
- dalam
- tanpa
- akan
- penulisan
- Salah
- X
- iya nih
- namun
- kamu
- Anda
- diri
- zephyrnet.dll