Ang kahinaan na nagpapahintulot sa paglabas mula sa nakahiwalay na kapaligiran ng QEMU

Nabunyag mga detalye ng kritikal na kahinaan (CVE-2019-14378) sa default na handler ng SLIRP na ginamit sa QEMU para magtatag ng channel ng komunikasyon sa pagitan ng virtual network adapter sa guest system at ng backend ng network sa gilid ng QEMU. Ang isyu ay nakakaapekto rin sa KVM-based virtualization system (sa Usermode) at Virtualbox, na gumagamit ng slirp backend mula sa QEMU, pati na rin ang mga application na gumagamit ng user-space networking stack libSLIRP (TCP/IP emulator).

Ang kahinaan ay nagpapahintulot sa code na maisakatuparan sa panig ng host system na may mga karapatan ng proseso ng handler ng QEMU kapag ang isang espesyal na idinisenyong napakalaking network packet ay ipinadala mula sa guest system, na nangangailangan ng fragmentation. Dahil sa isang error sa ip_reass() function, na tinatawag kapag muling pinagsama ang mga papasok na packet, ang unang fragment ay maaaring hindi magkasya sa inilalaan na buffer at ang buntot nito ay isusulat sa mga lugar ng memorya sa tabi ng buffer.

Para sa pagsubok na magagamit isang gumaganang prototype ng pagsasamantala, na nagbibigay para sa pag-bypass sa ASLR at pag-execute ng code sa pamamagitan ng pag-overwrit sa memory ng main_loop_tlg array, kabilang ang isang QEMUTimerList na may mga handler na tinatawag ng timer.
Naayos na ang kahinaan sa Fedora ΠΈ SUSE/openSUSE, ngunit nananatiling hindi naitama sa Debian, Arch Linux ΠΈ FreeBSD. Sa Ubuntu ΠΈ RHEL Hindi lumalabas ang problema dahil sa hindi paggamit ng slirp. Ang kahinaan ay nananatiling hindi naayos sa pinakabagong release libslirp 4.0 (kasalukuyang magagamit ang pag-aayos bilang patch).

Pinagmulan: opennet.ru

Magdagdag ng komento