26.09.2020

Уязвимость в реализации сокетов AF_PACKET ядра Linux


Спустя три года с момента волны уязвимостей (1, 2, 3, 4, 5) в подсистеме AF_PACKET ядра Linux выявлена ещё одна проблема (CVE-2020-14386), позволяющая локальному непривилегированному пользователю выполнить код с правами root или выйти из изолированных контейнеров, при наличии в них root-доступа.

Для создания сокета AF_PACKET и эксплуатации уязвимости требуется наличие полномочий CAP_NET_RAW. Тем не менее, указанное полномочие может быть получено непривилегированным пользователем в контейнерах, создаваемых в системах с включённой поддержкой пространств имён идентификаторов пользователей (user namespaces). Например, user namespaces по умолчанию включён в Ubuntu и Fedora, но не активирован в Debian и RHEL. В Android право создавать сокеты AF_PACKET имеет процесс mediaserver, через который может быть эксплуатирована уязвимость.

Уязвимость присутствует в функции tpacket_rcv и вызвана ошибкой вычисления переменной netoff. Атакующий может создать условия, при которых в переменную netoff будет записано значение меньше переменной maclen, что вызовет переполнение при вычислении «macoff = netoff — maclen» и неверной последующей установке указателя на буфер для поступающих данных. В итоге, атакующим может быть инициирована запись от 1 до 10 байт в область за границей выделенного буфера. Отмечается, что в разработке находится эксплоит, позволяющий получить root-права в системе.

Проблема присутствует в ядре с июля 2008 года, т.е. проявляется во всех актуальных ядрах. Исправление пока доступно в виде патча. Отследить появление обновлений пакетов в дистрибутивах можно на следующих страницах: Ubuntu, Fedora, SUSE, Debian, RHEL, Arch.

Источник: https://www.opennet.ru/opennews/art.shtml?num=53656

Добавить комментарий