Спустя три года с момента волны уязвимостей в подсистеме 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 года, т.е. во всех актуальных ядрах, однако известная сейчас возможность применить ее для записи в область за границей выделенного буфера (уязвимость) предположительно была привнесена в феврале 2016 (ядра 4.6-rc1 и новее), с развитием поддержки virtio_net. Исправление пока доступно в виде патча.
• Source: https://www.openwall.com/lists/oss-security/2020/09/03/3
Для создания сокета 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 года, т.е. во всех актуальных ядрах, однако известная сейчас возможность применить ее для записи в область за границей выделенного буфера (уязвимость) предположительно была привнесена в феврале 2016 (ядра 4.6-rc1 и новее), с развитием поддержки virtio_net. Исправление пока доступно в виде патча.
• Source: https://www.openwall.com/lists/oss-security/2020/09/03/3