Menggunakan Karakter Unicode Serupa untuk Melewati Otentikasi

GitHub berakhir rentan terhadap serangan yang memungkinkan Anda mengambil akses ke akun melalui manipulasi karakter Unicode di email. Masalahnya adalah beberapa karakter Unicode, saat menggunakan fungsi konversi huruf kecil atau besar, diterjemahkan menjadi karakter biasa dengan gaya yang serupa (ketika beberapa karakter berbeda diterjemahkan menjadi satu karakter - misalnya, karakter Turki "Δ±" dan "i " bila diubah menjadi huruf besar diubah menjadi "I").

Sebelum memeriksa parameter login di beberapa layanan dan aplikasi, data yang disediakan pengguna terlebih dahulu diubah menjadi huruf besar atau kecil dan kemudian diperiksa di database. Jika suatu layanan mengizinkan penggunaan karakter unicode dalam login atau email, maka penyerang dapat menggunakan karakter unicode serupa untuk melakukan serangan yang memanipulasi tabrakan dalam Tabrakan Pemetaan Kasus Unicode.

'ß'.toUpperCase() == 'ss'.toUpperCase() // 0x0131
'K'.toLowerCase() == 'K'.toLowerCase() // 0x212A
'John@GΔ±thub.com'.toUpperCase() == '[email dilindungi]'.toUpperCase()

Penyerang di GitHub bisa melalui formulir untuk memulihkan kata sandi yang terlupa, mulailah mengirim kode pemulihan ke email lain dengan menunjukkan dalam formulir alamat yang menyertakan karakter unicode yang menyebabkan tabrakan (misalnya, alih-alih [email dilindungi] email m ditunjukkanΔ±[email dilindungi]). Alamat lulus pengujian karena diubah menjadi huruf besar dan cocok dengan alamat asli ([email dilindungi] ), namun pada saat pengiriman surat diganti apa adanya dan kode pemulihan dikirimkan ke alamat palsu (mΔ±[email dilindungi]).

Beberapa символов, menyebabkan tabrakan saat mengonversi register:

ß 0x00DF SS
saya 0x0131 I
ΕΏ 0x017F S
ff 0xFB00 FF
fi 0xFB01 FI
ο‚‚ 0xFB02 FL
ffi 0xFB03 FFI
ffl 0xFB04 FFL
ο¬… 0xFB05 ST
st 0xFB06 ST
K 0x212A k

Sumber: opennet.ru

Tambah komentar