В реализация на интерфейса за асинхронен вход/изход io_uring, включен в ядрото на Linux от версия 5.1, е открита уязвимост (CVE-2022-29582), която позволява на непривилегирован потребител да получи права root в системата, включително при стартиране на експлоита от контейнер. Уязвимостта е резултат от достъп до вече освободен блок памет, проявяваща се в ядрото на Linux от версия 5.10 и е отстранена през април в ъпдейтите 5.10.111, 5.15.34 и 5.17.3.
Достъпът до освободена памет се случва в резултат на условие на състезание при обработката на таймаути в функцията io_flush_timeouts(), която премахва записа за таймаут от списъка и отменя самия таймаут, без проверка дали таймаутът е създаден или премахнат в момента.
Изследователи са подготвили работещ експлоит, който не изисква включването на пространства на имена за потребителски идентификатори (user namespaces) и може да предостави root достъп в основната система при стартиране на експлоита от непривилегирован потребител в изолиран контейнер. Експлоитът работи и в изолирана среда nsjail в дистрибуцията Google COS (Container Optimized OS), базирана на Chromium OS и използвана в Google Cloud Platform в виртуални машини Compute Engine. Експлоитът е проектиран за работа с версии на ядрото от 5.10 до 5.12.
Източник: opennet.ru
