The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

GRO Frag - седьмая уязвимость класса Copy Fail, предоставляющая права root в Linux

22.05.2026 22:56 (MSK)

В открытом доступе размещён эксплоит для седьмой уязвимости (1, 2-3, 4, 5, 6) в ядре Linux, позволяющей непривилегированному локальному пользователю получить права root, перезаписав данные в страничном кэше. CVE-идентификатор ещё не присвоен, кроме кода эксплоита информации о проблеме пока нет. Исправление доступно только в виде патча, который опубликован 20 мая и 21 мая был принят в основную ветку ядра Linux (корректирующие выпуски ядра ещё недоступны).

Уязвимость присутствует в реализации технологии GRO (Generic Receive Offload), применяемой для ускорения обработки сегментированных пакетов. Уязвимость вызвана ошибкой в реализации механизма zerocopy в функции skb_gro_receive(), осуществляющей прямое изменение данных в страничном кэше для исключения лишней буферизации. При установленном флаге SKBFL_MANAGED_FRAG_REFS пропускалось сохранение ссылки на освобождаемые страницы памяти в поле shinfo->frags, после чего данное поле присоединялось к другому skb без изменения счётчика ссылок, что приводило к обращению к памяти после её освобождения (use-after-free). Проблему удалось эксплуатировать для перезаписи данных в страничном кэше, благодаря манипуляции с указателем на буфер io_uring.

Атака возможна на системы с включённой подсистемой io_uring (io_uring_disabled=0). Для работы эксплоита в системе должен быть доступный на чтение исполняемый файл с флагом SUID-root. Механизм эксплуатации сводится к тому, что атакующий добивается оседания базы пользователей в страничном кэше, после чего подставляет в кэш строку "hax::0:0::/root:/bin/sh". Следом запускается команда "su hax", которая получает не оригинальную базу пользователей с накопителя, а изменённую копию с подставным логином "hax", которому выставлены права root и пустой пароль. Работа эксплоита протестирована в Ubuntu 24.04.

  1. Главная ссылка к новости (https://gist.github.com/lcfr-e...)
  2. OpenNews: PinTheft - шестая уязвимость класса Copy Fail, предоставляющая права root в Linux
  3. OpenNews: DirtyDecrypt - очередная уязвимость класса Copy Fail, предоставляющая права root в Linux
  4. OpenNews: Fragnesia - уязвимость в ядре Linux, позволяющая получить root через изменение страничного кэша
  5. OpenNews: Уязвимости Dirty Frag, изменяющие страничный кэш для получения root в любых дистрибутивах Linux
  6. OpenNews: Copy Fail - уязвимость в ядре Linux, позволяющая получить root в большинстве дистрибутивов
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/65504-kernel
Ключевые слова: kernel
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (43) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 23:31, 22/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +15 +/
    Скоро ядро станет совсем надежным.
     
     
  • 2.7, Аноним (7), 00:22, 23/05/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Как и писал для 5-ой и 6-ой по счету:
    "Чую дальше будет. Сейчас будут идти по каждому кейсу, где используется эта zero-copy оптимизация...".

    Там уже поддержку хотят удалять.

    https://www.phoronix.com/news/Linux-AF-ALF-Zero-Copy-Security

    Короче, пока можно не ребутиться, это далеко не конец.

     

  • 1.2, Аноним (2), 23:34, 22/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >корректирующие выпуски ядра ещё недоступны

    Да у них там как в меме с собачкой «This is fine» =)
    То выпускали новые версии, а с 17 числа ничего, после 7.0.9:
    https://kernel.org

     
  • 1.3, Аноним (3), 23:37, 22/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Не опять, а снова.
     
  • 1.4, Аноним (4), 23:39, 22/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Уязвимости в ядре как грибы после дождя: нашёл одну - поищи рядом ещё.
     
     
  • 2.15, Аноним (15), 01:35, 23/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Пока все были заняты внедрением поддержки раста, уязвимости наплодились после 2010 года...
     
     
  • 3.47, Colorado_House_of_Representatives (?), 11:13, 23/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Эти "все" сейчас здесь, в этой комнате? Rust – реальность, придётся смириться. ИИ – реальность, придётся использовать или уйти в прошлое со стагнацией зарплаты.
     
  • 2.23, одвто7 (?), 02:54, 23/05/2026 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Спасибо ИИ, что помогает находить закладки спецслужб 💪
     
     
  • 3.30, Аноним (15), 04:41, 23/05/2026 [^] [^^] [^^^] [ответить]  
  • +3 +/
    * меняет старые на новые *
     

  • 1.6, Аноним (6), 23:56, 22/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    С кешом шутки плохи, где бы он ни был - в прикладных программах, ядрах ОС или процессорах. Надо уже какой-нибудь libcache сделать, чтобы каждый перестал городить свой огород в котором не может толком разобраться.
     
     
  • 2.34, Грустный (?), 06:50, 23/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Надо уже какой-нибудь libcache сделать

    Поручите эту задачу Claude Code, и он сам всё напишет. 😏

     
     
  • 3.37, Аноним (37), 08:46, 23/05/2026 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Не могу, я уже делегировал ему написание этого комментария...
     

  • 1.9, НяшМяш (ok), 00:30, 23/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    С одной стороны печально. А с другой - это же теперь можно будет рутануть вообще любой старый андроид смартфон, чтобы превратить его во что-то полезное.
     
     
  • 2.17, Аноним (15), 01:37, 23/05/2026 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > можно будет рутануть вообще любой старый андроид смартфон

    "Неможно", там всего этого нету.

     
     
  • 3.31, runoverheads (ok), 05:07, 23/05/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    ну что то есть.
    skb_gro_receive() есть с use-after-free.
    интерфейс с GRO есть на который можно открыть SOCK_STREAM:
    redfin:/ # ethtool -k wlan0 | grep generic-receive-offload
    generic-receive-offload: on
    нельзя только буфер io_uring подставить, отключён. тут не понятно есть ли другие пути.
     
     
  • 4.53, Аноним (53), 12:17, 23/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Мб приложение с правами впнки может AF_PACKET начать слать, а дальше поменять эксплоит на splice вместо io_uring? Полностью эксплоит пока не прочитал, но бага звучит как очередная "мы скормили ro страницу в zerocopy код"
     
  • 2.28, Дырик (?), 04:34, 23/05/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    2023, Google Limiting IO_uring Use Due To Security Vulnerabilities

    https://www.phoronix.com/news/Google-Restricting-IO_uring

     
     
  • 3.29, Аноним (7), 04:39, 23/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Слабаки.

    https://www.phoronix.com/news/QEMU-10.2-Released

     

  • 1.14, Аноним (14), 00:55, 23/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Избавься от кэша и живи легко и счастливо. Операционная система вполне могла бы работать без страничного кэша в теории.
     
     
  • 2.18, Аноним (15), 01:39, 23/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > без страничного кэша

    со скоростью 80286.

     
  • 2.21, Аноним (21), 01:58, 23/05/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >Операционная система вполне могла бы работать без страничного кэша в теории.

    Уважаемый ыксперд, как сделать mov из регистра в ssd?

     
     
  • 3.27, Аноним (14), 04:15, 23/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Ничего незнаю про SSD. но с HDD всё работает.
     

  • 1.19, Аноним (21), 01:48, 23/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    >после чего данное поле присоединялось к другому skb без изменения счётчика ссылок

    Это классический пример того, почему си плохой язык. Изменение счётчика ссылок должно происходить автоматически, независимо от того, помнит об этом программист или нет.
    >что приводило к обращению к памяти после её освобождения (use-after-free)

    Опять ядро писали ненастоящие сишники. Настоящие сишники были бы внимательнее.

     
     
  • 2.51, Аноним (53), 12:10, 23/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > растеры крашат ядро, автоматически посчитав счётчик владения данными в листе, сделал круглые глаза когда выяснилось, что lock был не только для самого листа, но и для референсов (не обязательно указателей) на другие объекты внутри объектов листа

    Да и вообще, код должен автоматически писаться. А то чё-то нифига не получается

     
  • 2.56, Аноним (56), 13:51, 23/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    А что там с утилсами на расте, друг, 113 ошибок вроде было, ты уже все исправил, уже в убунте по дефолту вернули?
     

  • 1.22, Аноним (22), 02:01, 23/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В принципе пропатчить и пересобрать ядро не проблема. Проблема обосновать применение патча для исправления уязвимости у которой нет идентификатора CVE.
     
  • 1.25, Гуманоид (?), 03:54, 23/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Огласите весь список пжлст..я уже устал ядро конпелять.
     
  • 1.26, Аноним (53), 04:09, 23/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Опять баг в привилегированном юзере через unshare CLONE_NEWUSER 124 124 C... большой текст свёрнут, показать
     
  • 1.32, Аноним (32), 06:06, 23/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Не надо было версию ядра поднимать так резко! Вон как кучно пошли! ;))
     
  • 1.33, Аноним (33), 06:40, 23/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вот эта настройка от обратного disabled=0, а не enable=1 за это надо таблетки назначать для головы.
    Соблюдайте главное правило "пусть даже безобразно, но однообразно".
     
  • 1.36, Tester (??), 07:34, 23/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Пора Торвальдс у признать что io uring очень глючный и печальный... За последнее время только он и светится в багах
     
     
  • 2.49, Всем Анонимам Аноним (?), 11:48, 23/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Он уже все сказал за десять лет до появления этого еще, он всегда говорил, что zerocopy - это минное поле.
     
  • 2.52, Аноним (53), 12:13, 23/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Проблема не в io_uring, а в том что всё остальное ядро написано так, будто все по струнке ходят и в контексте ядра не будет bad actors... а потом впускаютс хрен-пойми откуда взявшиеся unprivileged_userns_clone процессы и начинается вот это вот всё.
     

  • 1.38, Килфлаг (?), 08:59, 23/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Пора finpig закапывать bucket
     
  • 1.41, Аноним (41), 09:42, 23/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    В ядре Linux последнее время одни “фраги” и “фейлы”, и ещё парой немножко “грязно”.

    Что за мемы в названиях уязвимостей?

     
     
  • 2.46, Аноним (46), 11:07, 23/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Вы уже чувствуете отвращение?
     

  • 1.42, Аноним (42), 09:48, 23/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А где тут любитель местный io_uring который всем рассказывает что только это делает ядро отличным? Бгыыых.
     

  • 1.43, Аноним (43), 10:17, 23/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Я же правильно понимаю, что если kernel.io_uring_disabled = 2 то можно слегка расслабить булки (до следующего фрага)?
     
     
  • 2.54, Аноним (-), 13:44, 23/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Google не просто так отключил io_uring в AOSP. Почти половина уязвимостей, которые они получали, эксплуатировали io_uring. Они много денег на bounty потратили, и решили, что оно того не стоит.
     

  • 1.44, Аноним (44), 10:24, 23/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Эх, не ту фигню на вейланд меняют...
     
  • 1.45, Мимик (?), 11:04, 23/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Сначала СЖВ повестка в ядре
    Потом затаскивание раста в ядро
    Теперь каждый день по уязвимости

    Итого все нормальные разрабы сбежали, осталась только секта раста с верой в безопасность

     
  • 1.48, Аноним (48), 11:20, 23/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    так это ещё и компЕлЯть надо? venv с необходимыми пакетам создавать ? :think
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2026 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру