Вразливість у реалізації сокетів 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, арка.

Джерело: opennet.ru

Додати коментар або відгук