Ang kahinaan sa libinput na humahantong sa pagpapatupad ng code kapag nakakonekta ang isang nakakahamak na device

Ang libinput 1.20.1 library, na nagbibigay ng pinag-isang input stack na nagbibigay-daan sa iyong gamitin ang parehong paraan ng pagproseso ng mga event mula sa mga input device sa mga environment na batay sa Wayland at X.Org, ay nag-alis ng isang kahinaan (CVE-2022-1215), na ay nagbibigay-daan sa iyo upang ayusin ang pagpapatupad ng iyong code kapag kumokonekta sa isang espesyal na binago/emulated input device sa system. Ang problema ay nagpapakita mismo sa mga kapaligiran na batay sa X.Org at Wayland, at maaaring pinagsamantalahan kapag lokal na nagkokonekta ng mga device at kapag nagmamanipula ng mga device na may Bluetooth na interface. Kung ang X server ay tumatakbo bilang root, ang kahinaan ay nagbibigay-daan sa code na maisakatuparan na may mataas na mga pribilehiyo.

Ang problema ay sanhi ng isang error sa pag-format ng linya sa code na responsable para sa pag-output ng impormasyon ng koneksyon ng device sa log. Sa partikular, binago ng evdev_log_msg function, gamit ang isang tawag sa snprintf, ang orihinal na string ng format ng log entry, kung saan idinagdag ang pangalan ng device bilang prefix. Susunod, ang binagong string ay ipinasa sa log_msg_va function, na ginamit naman ang printf function. Kaya, ang unang argumento sa printf, kung saan inilapat ang pag-parse ng character sa format, ay naglalaman ng hindi wastong panlabas na data, at maaaring simulan ng isang attacker ang stack corruption sa pamamagitan ng pagpapabalik sa device ng isang pangalan na naglalaman ng mga character na format ng string (halimbawa, "Evil %s") .

Pinagmulan: opennet.ru

Magdagdag ng komento