В публичен достъп е появил се експлоит за GRO Frag — локална уязвимост за повишаване на привилегиите в ядрото на Linux, свързана с обработката на GRO и zero-copy skb в мрежовия стек. Точната дата на първоначалното откритие в публични материали не е посочена. По наличните данни могат да се установят две дати: корекцията е обсъждана в пощенския списък netdev 20 май 2026 година, където тази уязвимост вече е била описвана като подходяща за презаписване на page cache, а публичният PoC е бил публикуван на GitHub Gist 22 май 2026 година.
Като временна мярка до инсталирането на коригирано ядро може да се ограничи векторът на атака чрез sysctl: kernel.io_uring_disabled=1. Този режим забранява създаването на нови экземпляри на io_uring от непривилегировани процеси, освен ако не са включени в разрешената група io_uring_group; при стойност на групата -1 достъпът се запазва само за процеси с CAP_SYS_ADMIN. Това е именно митигация, а не пълноценно коригиране на уязвимостта.
Проблемът е в функцията skb_gro_receive(): при обединяване на пакети GRO ядрото е могло да прехвърля фрагменти от zero-copy skb в друг skb без коректна проверка на състоянието zero-copy и признака SKBFL_MANAGED_FRAG_REFS. В резултат на това страниците на паметта, на които оригиналният skb не е държал отделни ссылки, могат да бъдат освободени неправилно, което води до use-after-free. В патча е посочено, че такава ситуация може да доведе до UAF, както и че намереният вариант е бил подходящ за презаписване на page cache.
Публикуваният PoC описва уязвимостта като LPE чрез GRO managed-frag UAF с използване на io_uring SEND_ZC и виртуален мрежов интерфейс veth. В коментарите на кода е указано, че засегнати са ядрото Linux 6.0+, експлоатацията е възможна от непривилегирован потребител, но изисква достъпен io_uring; за корекция е посочен комит 4db79a322db8 с промяна "net: gro: don’t merge zcopy skbs".
По последствията GRO Frag попада в същата опасна категория грешки като Copy Fail и Dirty Frag: атакуващ с локален непривилегирован достъп успява да промени данните в page cache, а именно в паметта, без задължителна модификация на файла на диска. Подобни грешки са особено неприятни, тъй като засягат границата между "само за четене" на файла и фактическото съдържание, което виждат ядрото и процесите при последващи обращения. Elastic предишно е описала тази категория като практичен начин за получаване на root чрез корупция на page-cache.
Към момента на публикуване отделен CVE идентификатор за GRO Frag, според наличните данни, все още не е присвоен. Като временна мярка администраторите трябва да се насочат към актуализиране на ядрото до версия с корекция, както и към общи мерки за намаляване на риска от подобни LPE: ограничаване на непривилегированите user namespaces там, където е позволено, контрол на използването на io_uring и мониторинг на подозрителни вериги, свързани с локално повишаване на привилегиите. За сродните атаки Copy Fail/DirtyFrag Elastic също така препоръчва комбиниране на пачинг с откриване на нискоуровневи примитиви на експлоатация на уязвимостта.
Нискоуровневите примитиви на експлоатация не са самият „готов хак“, а основни технически техники, от които се изгражда експлоита.
В контекста на GRO Frag това може да означава не откриване на вече готовия факт „потребителят стана root“, а опит за забелязване на отделни подозрителни действия, които експлоита използва по пътя към повишаване на привилегиите.
Източник: linux.org.ru
