Четвертая уязвимость в реализации сокетов AF_PACKET ядра Linux
В обработчике RAW-сокетов AF_PACKET из состава ядра Linux выявлена очередная уязвимость (CVE-2017-14497), позволяющая инициировать переполнение буфера через выполнение специально оформленного системного вызова. Это четвертая уязвимость в подсистеме AF_PACKET (1, 2, 3) за последний год. В процессе эксплуатации уязвимости может быть инициирован отказ в обслуживании, повреждение содержимого структур в памяти ядра и возможно другие виды эксплуатации.
В частности, возможно создание условий, при которых на каждый поступающий через сетевой интерфейс пакет будет перезаписано 10 байт памяти за пределами выделенного буфера. Например, продемонстрирована возможность использования данной уязвимости для повреждения данных в разделе XFS при эксплуатации уязвимости в процессе выполнения копирования файлов через rsync (были повреждены структуры в памяти, которые влияют на содержимое данных на диске).
Так как для обращения к AF_PACKET требуется наличие полномочий CAP_NET_RAW, атака имеет смысл только из изолированных контейнеров с пользователем root, запущенных с применением пространств имен идентификаторов пользователей (user namespaces) и изолированного сетевого стека (net namespaces). В Debian и Red Hat Enterprise Linux поддержка user namespaces по умолчанию не активирована, но она включена в Ubuntu и Fedora. Проблема проявляется в ядрах с 4.6 по 4.12 включительно и уже устранена в Fedora 26 и Debian. Все версии RHEL/CentOS, Ubuntu и SUSE/openSUSE проблеме не подвержены. Исправление также доступно в виде патча.