การใช้อักขระ Unicode ที่คล้ายกันเพื่อข้ามการตรวจสอบสิทธิ์

GitHub กลายเป็น มีความเสี่ยงต่อการโจมตีที่ทำให้คุณสามารถเข้าถึงบัญชีผ่านการจัดการอักขระ Unicode ในอีเมล ปัญหาคืออักขระ Unicode บางตัวเมื่อใช้ฟังก์ชันการแปลงตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่จะถูกแปลเป็นอักขระปกติที่มีรูปแบบคล้ายกัน (เมื่ออักขระหลายตัวถูกแปลเป็นอักขระตัวเดียว - ตัวอย่างเช่นอักขระตุรกี "ı" ​​และ "i" " เมื่อแปลงเป็นตัวพิมพ์ใหญ่จะถูกแปลงเป็น "I")

ก่อนที่จะตรวจสอบพารามิเตอร์การเข้าสู่ระบบในบริการและแอปพลิเคชันบางอย่าง ข้อมูลที่ผู้ใช้ให้มาจะถูกแปลงเป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็กก่อน จากนั้นจึงตรวจสอบในฐานข้อมูล หากบริการอนุญาตให้ใช้อักขระ Unicode ในการเข้าสู่ระบบหรืออีเมล ผู้โจมตีจะสามารถใช้อักขระ Unicode ที่คล้ายกันเพื่อดำเนินการโจมตีที่จัดการการชนกันใน Unicode Case Mapping Collisions

'ß'.toUpperCase() == 'ss'.toUpperCase() // 0x0131
'K'.toLowerCase() == 'K'.toLowerCase() // 0x212A
'John@Gıthub.com'.toUpperCase() == '[ป้องกันอีเมล]'.toUpperCase()

ผู้โจมตีบน GitHub ได้ ผ่านแบบฟอร์มการกู้คืนรหัสผ่านที่ลืมเริ่มส่งรหัสกู้คืนไปยังอีเมลอื่นโดยระบุที่อยู่ในรูปแบบที่มีอักขระ Unicode ที่ทำให้เกิดการชนกัน (เช่นแทน [ป้องกันอีเมล] ระบุอีเมล m แล้วı[ป้องกันอีเมล]). ที่อยู่ผ่านการทดสอบเนื่องจากถูกแปลงเป็นตัวพิมพ์ใหญ่และตรงกับที่อยู่เดิม ([ป้องกันอีเมล] ) แต่เมื่อส่งจดหมายก็ถูกแทนที่ตามเดิมและส่งรหัสกู้คืนไปยังที่อยู่ปลอม (มı[ป้องกันอีเมล]).

บางส่วนของ ตัวอักษรทำให้เกิดการชนกันเมื่อแปลงรีจิสเตอร์:

ß 0x00DF SS
ฉัน 0x0131 ฉัน
ſ 0x017F ส
ff 0xFB00 FF
ฟิ 0xFB01 FI
fl 0xFB02 ฟลอริด้า
ffi 0xFB03 FFI
ffl 0xFB04 FFL
ſt 0xFB05 เอสที
st 0xFB06 ST
K 0x212A เค

ที่มา: opennet.ru

เพิ่มความคิดเห็น