Уразлівасць, якая дазваляе выйсці з ізаляванага асяроддзя QEMU

Раскрыты дэталі крытычнай уразлівасці (CVE-2019-14378) у апрацоўшчыку SLIRP, па змаўчанні ужывальным у QEMU для арганізацыі канала сувязі паміж віртуальным сеткавым адаптарам у гасцявой сістэме і сеткавым бэкендом на боку QEMU. Праблема таксама закранае сістэмы віртуалізацыі на базе KVM (у рэжыме Usermode) і Virtualbox, у якіх выкарыстоўваюцца бэкенд slirp з QEMU, а таксама прыкладанні, якія прымяняюць сеткавы стэк у прасторы карыстальніка libSLIRP (эмулятар TCP/IP).

Уразлівасць дазваляе дамагчыся выкананні кода на боку хост-сістэмы з правамі працэсу-апрацоўніка QEMU пры адпраўкі са боку гасцёўні сістэмы адмыслова аформленага вельмі вялікага сеткавага пакета, для якога патрабуецца правядзенне фрагментацыі. З-за памылкі ў функцыі ip_reass(), выкліканай пры перазборцы ўваходных пакетаў, першы фрагмент можа не змясціцца ў вылучаны буфер і яго хвост будзе запісаны ў наступныя за буферам вобласці памяці.

Для тэсціравання ўжо даступны працоўны прататып эксплоіта, у якім прадугледжаны абыход ASLR і выкананне кода праз перазапіс памяці масіва main_loop_tlg, улучальны спіс QEMUTimerList з апрацоўшчыкамі, выкліканымі па таймеры.
Уразлівасць ужо ўхіленая ў Мяккая фетравы капялюш и SUSE/openSUSE, Але застаецца нявыпраўленай ў Debian, Arch Linux и FreeBSD. У Ubuntu и RHEL праблема не праяўляецца з-за невыкарыстання slirp. Уразлівасць застаецца нявыпраўленай у апошнім выпуску libslirp 4.0 (выпраўленне пакуль даступна ў выглядзе патча).

Крыніца: opennet.ru

Дадаць каментар