The OpenNET Project / Index page

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

Copy Fail - уязвимость в ядре Linux, позволяющая получить root в большинстве дистрибутивов

30.04.2026 13:25 (MSK)

Исследователи из компании Xint выявили в ядре Linux уязвимость (CVE-2026-31431), позволяющую непривилегированному пользователю получить root-доступ к системе. Проблеме присвоено кодовое имя Copy Fail. Доступен прототип эксплоита. Возможность эксплуатации уязвимости продемонстрирована в Ubuntu 24.04 LTS, Amazon Linux 2023, RHEL 10.1 и SUSE 16, но отмечается, что пакеты с ядром из других дистрибутивов, включая Debian, Arch, Fedora, Rocky и Alma, тоже подвержены проблеме, но их отдельно не тестировали.

Уязвимость вызвана логической ошибкой в crypto API (AF_ALG) ядра Linux, допущенной при внесении в 2017 году оптимизации, убирающей лишнюю буферизацию через выполнение по месту (in-place) операций блочного шифрования AEAD (Authenticated Encryption with Associated Data). Проблема возникла из-за необдуманного использования функции splice(), передающей данные между файловыми дескрипторами и каналами (pipe) без копирования, путём передачи ссылок на элементы в страничном кэше. После внесения оптимизации при передаче файла в сокет AF_ALG для расшифровки в структуру scatterlist записывалась не ссылка на отдельный буфер, а прямая ссылка на элементы страничного кэша ядра c данными файла.

В дальнейшем в процессе расшифровки AEAD смешивались привязанные по ссылке данные тега аутентификации ("authentication tag") с копируемыми в RX-буфер дополнительными аутентифицируемыми данными (AAD, Associated Authenticated Data) и шифротекстом, а смещение для операции записи в тег аутентификации рассчитывалось относительно скопированных данных без должных проверок, что позволяло перезаписать произвольные области в страничном кэше.

Уязвимость даёт возможность при каждом запросе перезаписать 4 байта в по выбранному смещению, что позволяет атакующему через отправку серии запросов изменить в страничном кэше содержимое любого файла в системе, доступного для чтения, предварительно добившись его помещения в кэш. Так как при любых операциях чтения из файлов содержимое отдаётся в первую очередь из страничного кэша, после замены информации в страничном кэше ядро или процесс при чтении данных из файла получит не фактические, а подменённые данные, что может применяться для подстановки кода в запускаемые исполняемые файлы или загружаемые разделяемые библиотеки.

Для выполнения кода с правами root достаточно добиться изменения страничного кэша для любого исполняемого файла с флагом suid root. В предложенном эксплоите выполняется чтение исполняемого файла /usr/bin/su и модификация загруженного в страничный кэш содержимого этого файла для подстановки в него своего кода. При последующем запуске утилиты "su" будет загружен в память не оригинальный исполняемый файл с накопителя, а изменённая копия из страничного кэша.

Эксплоит универсален, не требует адаптации к дистрибутивам или версиям ядра, и может использоваться с любыми дистрибутивами. Так как при использовании контейнерной изоляции для всех контейнеров используется общий страничный кэш, уязвимость можно использовать для получения доступа к хост-окружению из контейнера (позднее обещают опубликовать эксплоит для обхода изоляции в Kubernetes).

Уязвимость выявлена при помощи AI примерно после часа экспериментов с анализом кода криптоподсистемы ядра. Проблема проявляется начиная с ядра Linux 4.14, выпущенного в 2017 году, и устранена в ядрах 6.18.22, 6.19.12 и 7.0. Статус устранения уязвимостей в дистрибутивах можно оценить на данных страницах: Debian, Ubuntu, SUSE/openSUSE, RHEL, Gentoo, Arch, Fedora, ROSA. В качестве обходного пути защиты можно отключить модуль ядра algif_aead, который используется в OpenSSL при явном включении движка afalg и в отдельных приложениях (проверить наличие подобных запущенных приложений можно командой "lsof | grep AF_ALG"):

    
       echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
       rmmod algif_aead
    


  1. Главная ссылка к новости (https://www.openwall.com/lists...)
  2. OpenNews: Уязвимость в ядре Linux, позволяющая исказить файлы, доступные только для чтения
  3. OpenNews: Атака по определению состояния памяти процессов при помощи страничного кэша
  4. OpenNews: Уязвимость в ядре Linux, позволяющая повысить свои привилегии в системе
  5. OpenNews: В ядре Linux выявлен новый вариант уязвимости Dirty COW
  6. OpenNews: Критическая уязвимость в ядре Linux, уже эксплуатируемая злоумышленниками
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/65325-kernel
Ключевые слова: kernel, copyfail, aead
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (57) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 13:55, 30/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    SUID - зло. Который раз убеждаюсь.
     
     
  • 2.6, Tron is Whistling (?), 14:03, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Ни отмена SUID, ничего не поможет в этом случае. Дыра позволяет переписать произвольно код любого прокешированного бинарника.
     
  • 2.8, Tron is Whistling (?), 14:05, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    (и не только бинарника, а вообще любого прокешированного файла в принципе)
     
  • 2.12, Аноним (12), 14:06, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    При чем тут SUID? Тут страничный кеш правят, сделать могут что угодно и с кем угодно.
     

  • 1.2, Аноним (2), 13:58, 30/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > но отмечается, что пакеты с ядром из других дистрибутивов, включая Debian, Arch, Fedora, Rocky и Alma, тоже подвержены проблеме, но их отдельно не тестировали
    > и устранена в ядрах 6.18.22, 6.19.12 и 7.0

    Так в Федоре 42-44 актуальное ядро 6.19.14. Че они напраслину наводят...

     
     
  • 2.24, Аноним (24), 14:25, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    кстате да, но тут скорее имеется ввиду что в федоре это в целом могло работать, например, в rhel часто выбрасывают подозрительные плагины и софт, из официальных реп оно не прилетит, а всякие дополнительные вы ставите на свой страх и риск.
     
  • 2.33, Другоанон (?), 14:36, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Ну так естественно, что сперва предупредили разработчиков, подождали исправлений от них, а уж затем опубликовали данные об уязвимости публично. Было бы странно если бы сделали наоборот...
     

  • 1.4, Аноним (4), 13:59, 30/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В такие моменты окупается сборка ядра без всех не нужных тебе модулей.

    # CONFIG_CRYPTO is not set

     
     
  • 2.18, runoverheads (ok), 14:12, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    не шифрования - нет защиты данных. к примеру DM_CRYPT - данных на диске.
     
     
  • 3.28, Аноним (4), 14:32, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Суть сообщения отключать то чем не пользуешься. Если не шифруешь диски, то и модуль не нужен. Заодно будет меньше компилировать.
     
     
  • 4.35, Аноним (35), 14:43, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >Суть сообщения отключать то чем не пользуешься.

    А как понять, чем не пользуешься? Не хочется в один прекрасный момент обнаружить отсутствие дров для условного wifi.
    >Заодно будет меньше компилировать.

    Если ставить готовый бинарник, то вообще компилировать не надо.

     
  • 4.37, runoverheads (ok), 14:44, 30/04/2026 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
  • 2.34, Аноним (34), 14:43, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    А зачем всё отключать? Этого не достаточно?

    CONFIG_CRYPTO_AEAD=y
    CONFIG_CRYPTO_AEAD2=y
    # CONFIG_CRYPTO_USER_API_AEAD is not set

     

  • 1.5, Tron is Whistling (?), 14:02, 30/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Охрененная д(ы|у)рень. И вот глядя на коммитик - а не сознательно ли она была запихана, слишком уж всё просто.
     
     
  • 2.49, PnD (??), 14:59, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    По первой ссылке расписана классическая трёхходовка.
    - Заносим сложную систему. (Здесь пока всё выверено, хотя простые баги могут проскакивать.)
    - Рефакторим, типа для универсальности. В процессе интегрируемся с целевыми узлами, тоже объясняем что так удобнее.
    - Добавляем оптимизацию. Какую надо.

    "Вот только торопиться не надо, да?"©

     

  • 1.7, Аноним (7), 14:04, 30/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Дыра очень опасная, в 2 клика пробивает практически любой актуальный дистр, на Гитхабе можно посмотреть отчеты от людей.
    ИИ стали как шахматные движки уже.
     
     
  • 2.10, Tron is Whistling (?), 14:06, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Она не то, что опасная, она 3.14ц. Это подмена кода любого прокешированного бинарника, замена данных в любом прокешированном файле, который доступен на чтение. Причём замена не на диске, а только в памяти.
     
     
  • 3.15, мяв (?), 14:09, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >3.14ц

    а Вы ведь правы, Ц(С) - он такой.
    зы. Ц был бы, если б, если б оно условно давало политики селинуксу менять.
    но оно не дает, вроде как
    на счет АА не уверена к слову

     
     
  • 4.17, Tron is Whistling (?), 14:11, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Не надо менять политики селинуксу. Надо найти какой-нибудь читабельный бинарник, запускаемый по таймеру или иным способом от рута, и поменять его. А дальше правь что хочешь.
     
     
  • 5.27, Аноним (24), 14:31, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    ну, нет, буквально недавно поднимал туннель на ssh, он из пользователя норм работает, а если через systemd то в папке пользователя прочитать ключ уже не может, selinux запрещает, разрабы сказали что это фича, а не баг, пришлось поправить локальные правила selinux, ну в целом адекватно с учетом контекста
     
  • 3.26, Аноним (34), 14:29, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Ну тут залатали. Ты забыл уже CVE-2022-2590? У всех работала на обновлённых системах по тому же принципу.
     

  • 1.9, Аноним1234 (?), 14:05, 30/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    На моём Ubuntu 24.04 LTS с последники апдейтами эксплоит работает
     
     
  • 2.13, Tron is Whistling (?), 14:08, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Он будет работать везде, где ядро из тех, что были за последние 9 лет, и либо вкомпилен, либо модулем доступен algif_aead. Бань модуль / init.
     
     
  • 3.30, Аноним (34), 14:34, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Ну-ну. На 6.18.23 вон не работает. Вообще-то сейчас уже 6.18.25.
     
  • 2.53, Аноним (53), 15:03, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Пора: https://opennet.ru/65274-ubuntu
     

  • 1.11, Соль земли2 (?), 14:06, 30/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    При множестве глаз... А теперь представьте сколько уязвимостей сами знаете где.
     
     
  • 2.39, Другоанон (?), 14:45, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    При этом "множестве глаз" большое кол-во драйверов/подсистем ядра, на сегодняшний день, никем не сопровождаются. А касаются их, только когда они ломаются из-за изменений в api ядра, и то не вникая в них, чисто устранить ошибку сборки.
     

  • 1.14, Аноним (14), 14:08, 30/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Проверено мною на дистрибутивах RHEL9 и OEL9. Результат следующий:
    AttributeError: module 'os' has no attribute 'splice'

    Эксплойт не работает.

     
     
  • 2.16, мяв (?), 14:10, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    пушто некропитон ?
    на лоре поищите ссылку на С-эксплоит
     
     
  • 3.44, Аноним (14), 14:53, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо. Эксплойт на C сработал. Только одно "но". Для сборки на узле требуется glibc-static, которого исходно нет. А для установки пакета требуются root-права.
     
  • 2.19, Tron is Whistling (?), 14:12, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Пыхтон староват, берите постарше.
    Работает прекрасно.
     
  • 2.25, runoverheads (ok), 14:25, 30/04/2026 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
  • 2.36, Аноним (36), 14:44, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Его еще не оптимизировал, горе-оптимизатор. К счастью.
     
  • 2.54, Аноним (53), 15:06, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Обновляйтесь на 10.1
    https://opennet.ru/64385-oracle
     

  • 1.20, eugener (ok), 14:13, 30/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    На Ubuntu 26.04 эксплоит не работает. Вот польза от использования самого нового ядра.)
     
  • 1.21, Аноним (36), 14:17, 30/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Касперский уже ругается на скрипт эксплоида.
     
     
  • 2.29, Аноним (24), 14:34, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ))) а спортлото?
     
  • 2.32, runoverheads (ok), 14:35, 30/04/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.41, Другоанон (?), 14:50, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    KVRT-шкой что ли проверял? Или касперский полноценную linux версию выпустил?
     
     
  • 3.46, Аноним (36), 14:57, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    В данный момент работаю под виндой. Каспер чуткий - кричит на эксплоид для linux. )
     
  • 2.43, Аноним (43), 14:53, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    "Антивирус в линуксе ненужон!" (с)
     
     
  • 3.50, Аноним (36), 14:59, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Linux в виртуалка, не крякнув, проглотил эскплоид с гитхаба.
     
  • 3.51, Аноним (51), 14:59, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Как антивирус тебя защитит от зиродея? Никак.
     

  • 1.22, Аноним (-), 14:18, 30/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    AOSP (который является дистрибутивом Linux) этому не подвержен... Всё благодаря очень строгим и fine grained политикам SELinux.

    Стоит взять пример с AOSP и адаптировать его модель безопасности под настольные системы.

    Или использовать QubesOS.

     
     
  • 2.40, aname (ok), 14:46, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    SELinux вообще хорош. И его в принципе надо бы побольше юзать
     
  • 2.42, Tron is Whistling (?), 14:51, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Не поможет тебе selinux.
    Если у тебя что-то запускается в кроне том же от рута, что может юзер прочитать - да хоть cat - всё.
     
     
  • 3.55, Аноним (-), 15:11, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Это вопрос архитектуры в целом SELinux 8212 это один из инструментов для реа... большой текст свёрнут, показать
     
     
  • 4.57, Аноним (-), 15:13, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Эх, обрезало Вот начало ... большой текст свёрнут, показать
     
  • 2.47, runoverheads (ok), 14:58, 30/04/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.48, Аноним (51), 14:58, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Да и Qubes не поможет, ты же не будешь по отдельной ОС на процесс выделять, иначе охренешь от системных требований по оперативе, да и без SSD не обойдёшься. Нужно другое API, где вообще на каждый кусочек API - разрешения, вообще на каждый кусочек, с максимальной гранулярностью, и в приложении и либе - манифест, и дальше кусочка попробует пойти - процесс будет уничтожен.
     

  • 1.31, Аноним (36), 14:34, 30/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Rust говорит: У данных должен быть единственный владелец.
     
  • 1.38, хрю (?), 14:44, 30/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >В предложенном эксплоите

    А кто-от рассказывал, что перл не понятный и то ли дело пистон. Тут прям постарались сделать максимально не понятно.

     
     
  • 2.59, Аноним (51), 15:14, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Да, я прифигел от такого отношения, что вместо чистого кода прототип обфусцирован, да ещё какой-то блоб через zlib распаковывает, я бы поостерёггся этот блоб zlibом распаковывать ванильным, а только оным на Rustе.
     

  • 1.45, Аноним (51), 14:55, 30/04/2026 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +1 +/
     
  • 1.52, Аноним (52), 15:03, 30/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Всё ещё верите в "безопасность" контейнеров? )
     
  • 1.56, sig11 (ok), 15:12, 30/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Уязвимость выявлена при помощи AI

    Да что этот ИИ умеет? Человек с мозгами наше все! (сарказм)

     
  • 1.58, PnD (??), 15:13, 30/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Нюанс: в связи с сутью эксплоита "доработанный" файл xxx становится "публичным достоянием" до чистки буферов. И своих прямых обязанностей в связи с этим выполнять не может.

    Нужно что-то типа
    # echo 3 > /proc/sys/vm/drop_caches

    Но из-под исправленного xxx чистка не сработает (понятно почему).
    Нужно положить задачу условному cron/systemd и не забыть прибрать за собой.

    (Не надо пожалуйста меня поправлять. Путь киддиса — страдание. Хватит того что уроды выложили не заглушенный PoC.)

     

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



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

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