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

В сетевой подсистеме ядра Linux выявлены две опасные уязвимости, которые позволяют локальному пользователю повысить свои привилегии в системе:

  • Первая уязвимость (CVE-2017-1000112) вызвана состоянием гонки (race condition) в коде управления аппаратно акселерированным разбором фрагментированных UDP-пакетов — UFO (UDP Fragmentation Offload). Суть проблемы в том, что построение пакета для
    UFO осуществляется при помощи вызовов __ip_append_data() и
    ip_ufo_append_data(), а данные передаются через несколько вызовов send(), между которыми атакующий может подменить тип с UFO на не-UFO и вызвать наложение требующего фрагментации хвоста на область памяти вне границ выделенного буфера. Проблема присутствует в ядре с 18 октября 2005 года и проявляется как в стеке IPv4, так и при использовании IPv6.

  • Вторая уязвимость (CVE-2017-1000111) вызвана состоянием гонки при обработке сокетов AF_PACKET с опцией PACKET_RESERVE. Это третья уязвимость в реализации кольцевых буферов TPACKET_V3 сокетов AF_PACKET (функция packet_set_ring), которые включены по умолчанию («CONFIG_PACKET=y») в большинстве дистрибутивов Linux. В отличие от прошлых проблем новая уязвимость проявляется при использовании опции PACKET_VERSION.

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

Уязвимости пока устранены только в Ubuntu, SUSE и openSUSE. Проблемы остаются неисправленными в Fedora, Debian и RHEL/CentOS. Для ядра Linux предложены патчи, в том числе предложено полностью удалить подсистему UFO из ядра 4.14.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.