Glibc-ийн ARMv7-д зориулсан memcpy функцийг хэрэгжүүлэхэд ноцтой эмзэг байдал

Cisco аюулгүй байдлын судлаачид илэрсэн дэлгэрэнгүй мэдээлэл эмзэг байдал (CVE-2020-6096) 32 битийн ARMv7 платформд зориулсан Glibc-ээс олгосон memcpy() функцийг хэрэгжүүлэхэд. Асуудал нь 32 битийн бүхэл тоон дээр гарын үсэг зурдаг угсралтын оновчлолыг ашигласантай холбоотойгоор хуулсан талбайн хэмжээг тодорхойлдог параметрийн сөрөг утгыг буруу хэрэглэснээс үүдэлтэй юм. Сөрөг хэмжээтэй ARMv7 систем дээр memcpy()-г дуудах нь утгыг буруу харьцуулж, заасан буферийн хязгаараас гадуурх хэсэгт бичдэг.

Халдагчид хуулсан өгөгдлийн хэмжээг дамжуулж буй хувьсагчийн сөрөг утгыг үүсгэхийг зохион байгуулж болох нөхцөлд кодыг ажиллуулахын тулд энэ эмзэг байдлыг ашиглаж болно (жишээлбэл, 2 ГБ-аас дээш файл дамжуулах үед энэ нь сөрөг болно. өгөгдөл, гэхдээ халдлагын үед буферийн хязгаараас хэтрэхийн тулд дор хаяж 4 ГБ шилжүүлэх шаардлагатай). memcpy() функцийг программуудад өргөнөөр ашигладаг бөгөөд ARMv7 процессорууд нь автомашины систем, гар утас, аж үйлдвэр, хэрэглэгч, харилцаа холбоо болон суулгагдсан төхөөрөмжүүдэд түгээмэл байдаг бөгөөд эдгээр нь Bluetooth, HD Radio/DAB, USB, CAN автобус ашиглан халдлагад өртөж болзошгүй. Wi-Fi болон бусад гадаад өгөгдлийн эх үүсвэрүүд (жишээ нь, оролтын өгөгдлийг хэмжээ хязгаарлалтгүйгээр хүлээн авдаг сүлжээгээр нэвтрэх боломжтой үйлчилгээ, програмууд халдлагад өртөж болно).

Үүний нэг жишээ бол автомашины Wi-Fi сүлжээгээр нэвтрэх боломжтой, автомашины мэдээллийн системд суурилуулсан HTTP сервер рүү халдах ажлын эксплойт бий болгох явдал юм. Гадны халдагчид маш том GET хүсэлт илгээж, энэ серверийн memcpy-ийн эмзэг байдлыг ашиглаж, системд root хандалт авах боломжтой.

Glibc-ийн ARMv7-д зориулсан memcpy функцийг хэрэгжүүлэхэд ноцтой эмзэг байдал

32 битийн x86 систем дээр энэ архитектурын memcpy хэрэгжилт нь хэмжээ хувьсагчийг size_t төрлийн тэмдэггүй бүхэл тоо (ассемблер хэлээр) гэж зөв тайлбарладаг тул асуудал гарахгүй. хэрэгжилт ARMv7-ийн хувьд энэ нь size_t-ийн оронд тэмдэглэгдсэн бүхэл тоо гэж тооцогддог). Засвар нь одоогоор бэлэн байна нөхөөс, энэ нь 2.32-р сарын Glibc XNUMX шинэчлэлтэд багтах болно.
Засвар нь гарын үсэгтэй операндууд (bge ба blt) дээр ажилладаг угсралтын зааврын хэрэглээг гарын үсэг зураагүй (blo болон bhs) хувилбаруудаар солих явдал юм.

Асуудал хараахан шийдэгдээгүй байна Debian 9 ба 10 (Debian 8 дээр харагдахгүй), Федора, Ubuntu, OpenEmbedded, Tizen (glibc ашигладаг). RHEL и Сүйрэл Тэд 32 битийн ARMv7 системийг дэмждэггүй тул асуудал хөндөгдөөгүй. Андройд нь өөрийн libc (Bionic) хэрэгжилтийг ашигладаг тул эмзэг байдалд өртөөгүй. IN OpenWRT програм Анхдагч байдлаар, ихэнх бүтээцүүд Musl-г ашигладаг боловч glibc нь мөн хадгалах газарт байдаг.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх