The OpenNET Project / Index page

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

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

18.05.2026 23:16 (MSK)

В ядре Linux выявлена уязвимость, по аналогии с уязвимостями Copy Fail, Dirty Frag и Fragnesia позволяющая непривилегированному пользователю получить права root, перезаписав данные в страничном кэше. Уязвимости присвоено кодовое имя DirtyDecrypt (проблема также упоминается под именем DirtyCBC). Доступен прототип эксплоита.

CVE-идентификатор в примечании к эксплоиту не упоминается, указано лишь, что исследователи выявили проблему 9 мая, после чего сообщили об этом разработчикам ядра, которые ответили, что их находка дублирует другой отчёт об уже исправленной уязвимости. Так как патч с исправлением уже включён в ядро исследователи решили опубликовать разработанный ими эксплоит. Судя по описанию внутри эксплоита, в нём используется уязвимость CVE-2026-31635, исправление для которой было принято в ядро в апреле и вошло в состав ветки 7.0.0 и сформированного 18 апреля выпуска 6.18.23. Проблема проявляется начиная с ядра 6.16.

Как и в случае с серией уязвимостей Dirty Frag новая уязвимость присутствует в драйвере RxRPC, реализующем семейство сокетов AF_RXRPC и одноимённый RPC-протокол, работающий поверх UDP. Проблема вызвана ошибкой при проверке размера данных в функции rxgk_verify_response() - вместо проверки "if (auth_len > len)" в коде было указано "if (auth_len < len)", что приводило к передаче в функцию rxgk_decrypt_skb() данных с размером, больше допустимого. При выполнении функции rxgk_decrypt_skb() расшифровка данных осуществлялась с подстановкой изменений напрямую в страничный кэш для исключения лишней буферизации. Из-за неверной проверки размера возникала возможность перезаписи данных в страничном кэше по выбранному смещению.

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

Для эксплуатации уязвимости при сборке ядра должна быть активна опция CONFIG_RXGK (проверить можно командой "grep CONFIG_RXGK /boot/config-$(uname -r)"), а для автозагрузки доступен модуль ядра rxrpc.ko (в некоторых системах он не собирается). Работа экплоита проверена в Fedora, и предполагается, что уязвимость также проявляется в ядрах из Arch Linux и openSUSE Tumbleweed. Статус устранения уязвимостей в дистрибутивах можно оценить на данных страницах: Debian, Ubuntu, SUSE/openSUSE, RHEL, Arch, Fedora. В качестве обходного пути защиты можно заблокировать загрузку модуля ядра rxrpc:


   sh -c "printf 'install rxrpc /bin/false\n' > /etc/modprobe.d/dirtydecrypt.conf; rmmod rxrpc 2>/dev/null; true"

Дополнительно можно отметить публикацию в списке рассылки разработчиков ядра Linux патчей, полностью отключающих в crypto API (AF_ALG) оптимизации, использующие прямое обращение к страничному кэшу при расшифровке с использованием алгоритмов "skcipher" и "aead". Оптимизации исключают лишнюю буферизацию данных, но создают риски возникновения серьёзных уязвимостей. Предполагается, что их отключение приведёт лишь к незначительному снижению производительности из-за появления дополнительной операции копирования в отдельный буфер. Патчи приняты сопровождающим подсистему crypto API и включены в ветку "cryptodev", в которой развиваются возможности для передачи в основной состав будущих выпусков ядра Linux.

  1. Главная ссылка к новости (https://www.linkedin.com/pulse...)
  2. OpenNews: Fragnesia - уязвимость в ядре Linux, позволяющая получить root через изменение страничного кэша
  3. OpenNews: Уязвимости Dirty Frag, изменяющие страничный кэш для получения root в любых дистрибутивах Linux
  4. OpenNews: Copy Fail - уязвимость в ядре Linux, позволяющая получить root в большинстве дистрибутивов
  5. OpenNews: Уязвимость в Linux-подсистеме pidfd, позволяющая прочитать недоступные пользователю файлы
  6. OpenNews: QEMUtiny - уязвимости в QEMU, позволяющие получить доступ к хост-окружению из гостевой системы
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/65473-kernel
Ключевые слова: kernel
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (49) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 00:13, 19/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > их находка дублирует другой отчёт об уже исправленной уязвимости.
    > Так как патч с исправлением уже включён в ядро исследователи решили опубликовать разработанный ими эксплоит.

    Нашли уязвимость которой нет?

     
     
  • 2.11, Аноним (11), 00:43, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Нашли уязвимость которой нет?

    Которую уже законопатили. Но попиариться ж не запретишь. Да и в принципе - лучше честно знать какие вулны были.

     
  • 2.12, Аноним (12), 00:51, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Чую дальше будет. Сейчас будут идти по каждому кейсу, где используется эта zero-copy оптимизация...
     
     
  • 3.40, Аноним (40), 09:10, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    отменят zero-copy или починят zero-copy?
     
  • 2.44, Жироватт (ok), 09:30, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нужно срочно пеарить поделия Антропиков, ну.
    Нужно делать продажи подписок и пакетов токенов. Инвесторы уже заждались своих дивидендов, решается судьба куда более лакомых для распилов барж денег: от оконечных ЦОДов до закупок вагонов невидий.

    И ещё месяцев 10-12 такое будет в  постоянно всплывать в новостной ленте, ну, особенно на *не_аффилированных* и *не_зависимых* источниках фидов. Как будто это постоянно не проходили на очередной хайп-кампании.

     
     
  • 3.52, Аноним (52), 10:38, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Нужно срочно пеарить поделия Антропиков, ну.

    А... т.е это просто пиар, а не реальные ошибки которые допустили разработчики ядра?

    Давай пойдем дальше и придумаем теорию заговора, что это спецом добавили, чтобы потом, лет через 10 попиарить ИИшку.

    > И ещё месяцев 10-12 такое будет в  постоянно всплывать в новостной ленте, ну, особенно на *не_аффилированных* и *не_зависимых* источниках фидов. Как будто это постоянно не проходили на очередной хайп-кампании.

    Конечно, это все хайп, а не дидовый код написанный ногами.


     

  • 1.2, Аноним (2), 00:14, 19/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >CONFIG_RXGK

    Что это такое вообще? В моём ядре никаких упоминаний ни в текущем ни в 6.16. Какие-то корпоративные патчи?

     
     
  • 2.4, Аноним (4), 00:22, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Ну модуль-то есть net/rxrpc. Но у меня в конфиге строчка тоже никак не присутствует.
     
  • 2.7, Аноним (-), 00:31, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Что это такое вообще? В моём ядре никаких упоминаний ни в текущем ни в 6.16.
    > Какие-то корпоративные патчи?

    Да и в целом все эти айписеки и RxRPC - импактят полтора особо отбитых энтерпрайза которые за каким-то юзают эти фикальи. Но им вообще лучше бы было бы прямо в AD - АДски раздать трояна по всему энтерпрайзу. Чтоб не скучали и понимали что большому кораблю - большая торпеда. Хотя возможно это уже и произошло...

     

  • 1.3, Аноним (-), 00:19, 19/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Как и в случае с серией уязвимостей Dirty Frag новая уязвимость присутствует в драйвере RxRPC

    Т.е. как и с прошлой уязвимостью - попробуйте, что называется, ее вообще огреть на реально существующем хосте.

    Не, если я могу модуль с этой HEX загрузить - зачем мне эксплойтом то рута получать? А если не могу - то как гасить? Хостов где это уже загружено - на этом глобусе мизер.

     
     
  • 2.28, Аноним (28), 07:19, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Есть такая штука как автозагрузка модулей, модуль сам загрузится при попытке использования RxRPC.
     
  • 2.31, нах. (?), 07:47, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    уровень... этогосайта.

    ну зато ты не вендузятник какой, да?

     
     
  • 3.46, yet another anonymous (?), 09:56, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    А что, AFS действительно сколько-нибудь используется?
     

  • 1.5, Аноним (5), 00:23, 19/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >в основной состав будущих выпусков ядра Linux

    Даже не припомню такого, чтоб так подряд одна за одной...
    Новые версии каждые пару дней выходят:
    https://kernel.org

     
     
  • 2.38, Аноним (38), 08:53, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Да, начиная с 7.0.4 от 7 мая 2026 года.
    ...
    7.0.9 от 17 мая 2026 года.
     

  • 1.6, Aller2TeaM (ok), 00:25, 19/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Чё-то кучно пошли
     
     
  • 2.9, Аноним (11), 00:40, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >  Чё-то кучно пошли

    Да это AI походу кто-то напустил. Пристегните ремни. Клодовские ж нейросетки натренировали. И так далее. Они и стали не совсем отстой в этом. Вот, нащупали золотую жилу в паре парашных модулей нужных полутора корпам которые клали на тесты и фиксы - и развлекуются с самопиаром.

     
  • 2.42, Аноним (40), 09:12, 19/05/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     

  • 1.8, Олег Бартунов (?), 00:35, 19/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    Пощады! Я устал ребутить!
     
     
  • 2.10, Аноним (11), 00:40, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >  Чё-то кучно пошли

    Убунта такая с Live Update: ну что, теперь вы понимаете прелесть Ubnutu Advantage? :)

     
     
  • 3.15, Аноним (5), 01:17, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Live Update

    https://get.opensuse.org/ru/tumbleweed/

     
     
  • 4.21, Аноним (-), 03:09, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >>Live Update
    > https://get.opensuse.org/ru/tumbleweed/

    Да фиг с ней с вашей зюзей, а? Убунта дает до 6 лет спокойной жизни на LTS на серванте. И это все нашару, заметим. Даже больше с упомянутым Advantage. Который конечно не совсем на шару - но некоторые и с ним смогли нахаляву проскочить. А что зюзя сравнимого вообще имела предложить?

     
     
  • 5.23, онанист (?), 05:40, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    дает до 6 лет спокойной жизни на LTS

    проблемы с арифметикой?

     
  • 3.32, нах. (?), 07:50, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Убунта такая с Live Update:

    ну мы уже почти успешно почти пофиксили рутовую дыру в apparmor трехмесячной давности!

    А исправлений для полуторамесячной давности дыр нет ни в лайв виде, ни в виде нормальных обновлений. Ждите, ждите, ждите. (и да, это в апстриме вот эта конкретная дырка пол-года как закрыта. А ваша шт@6ильная 24 - vulnerable. Но вы всегда можете откатиться на 16, там точно нет проблем!)

    Кстати, rh оказывается выпустила с опережением графика - 11 мая а не 12.

     

  • 1.13, Аноним (13), 00:56, 19/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > Проблема проявляется начиная с ядра 6.16.

    И опять старые ядра не подвержены уязвимости.

     
     
  • 2.45, Аноним (45), 09:44, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Сижу на 6.12 и не знаю проблем. Зачем обновлять, пока это ядро актуальное. А там и следующий SLTS. На слаке у мну вообще 5.15.
     
  • 2.48, edo (ok), 10:32, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    удивительно, да, что уязвимости находят только в текущей версии ядра?
     

  • 1.14, Аноним (14), 01:06, 19/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > позволяющая непривилегированному пользователю получить права root, перезаписав данные в страничном кэше

    отключить нафиг этот кэш! пусть все читают с диска!

     
     
  • 2.16, Аноним (16), 01:18, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Ну да! При нынешних скоростях и временах доступа SSD файловый кэш уже становится пятым колесом
     
     
  • 3.17, Аноним (13), 01:42, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А тут не файловый кеш, а страничный. Или ты предлагаешь для каждого экземпляра библиотеки/экзешника делать в памяти копию? Потребовалась либа в ста местах - делать 100 копий в памяти?
     
     
  • 4.37, Аноним (37), 08:45, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Конечно нет!
    Пусть лучше из-за кривого кода твой комп смогут поиметь все кто угодно.
    Ведь это так классно дарить рут незнакомым процессам и людям?
     
  • 3.22, Аноним (-), 03:12, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну да! При нынешних скоростях и временах доступа SSD файловый кэш уже
    > становится пятым колесом

    Как бы тебе сказать то? XIP этот твой SSD не умеет же! Даже NVMEшный. Если б там NVDIMM хотя-бы был - умеющий на чтение как DRAM без особенностей - о чем-то таком можно было бы вести разговор. Но сие пока как-то не попуярно... ибо NAND вообще для XIP не товарищ, ему надо видите ли - именно явно команд в интерфейс кинуть чтоб он данные выгрузил. Это все же далековато от примитивных запросов к DRAM чипам делаемых целиком хардваром от и до.

     
  • 3.49, edo (ok), 10:34, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    лол. доступ к nand flash — десятки микросекунд, доступ к dram — десятки наносекунд
     
  • 2.18, Аноним (13), 01:45, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > пусть все читают с диска!

    Боюсь спросить Вас: а читать - куда, если Вы предлагаете выключить страницы оперативки?

     
     
  • 3.19, Аноним (19), 02:19, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Читать будет вслух специальный сотрудник, приставленный к компьютеру.
     

  • 1.20, Syndrome (ok), 02:53, 19/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Для тех кто хочет избавиться от уязвимых сокетов:

    Минипрограмма на Си которая перечисляет номера сокетов доступных текущему пользователю:
    https://pastebin.com/XREY200p

    Для конверсии номера сокета в имя используем константы из:
    https://github.com/torvalds/linux/blob/master/include/linux/socket.h

    Минимальный набор сокетов необходимых для работы Линукса:
    socket(01): unix socket
    socket(02): ipv4 socket
    socket(10): ipv6 socket
    socket(15): key management api
    socket(16): netlink
    socket(17): raw packet socket
    socket(40): vsock

    Остальные сокеты можно отключить одним из способов:
    1. Используя SELinux отключить доступ к ним для всех кроме Root'a.
    2. Добавить их драйвера в чёрный список.
    3. Отключить их на этапе компиляции ядра.

     
     
  • 2.41, Аноним (41), 09:12, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Минипрограмма на Си

    Для обычных пользователей (не программистов) можно бинарник?

     
     
  • 3.47, Syndrome (ok), 10:31, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Достаточно написать в консоли «gcc start.c -o start».
     
  • 3.50, Аноним (50), 10:35, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    #!/bin/bash

    for ((i=0; i<=256; i++)); do
        python3 - <<EOF 2>/dev/null
    import socket
    import errno

    proto = $i

    try:
        s = socket.socket(proto, 0, 0)
        print(f"socket({proto:02d}) -> 000: This user has access to this socket.")
    except OSError as e:
        if e.errno == 97:
            pass
        elif e.errno == 1:
            print(f"socket({proto:02d}) -> 001: This user does not have access to this socket.")
        else:
            print(f"socket({proto:02d}) -> {e.errno:03d}: Error.")
    EOF

     
     
  • 4.51, Аноним (50), 10:37, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    done в конце ещё забыл
     

  • 1.26, localhostadmin (ok), 06:36, 19/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > вместо проверки "if (auth_len > len)" в коде было указано "if (auth_len < len)"

    У меня вопрос к тому, как это вообще в ядро пропустили. Патчи же должны какие-то тесты проходить, а тут, если я правильно понял, зачем это нужно, программа будет странно себя вести почти при любом пакете

     
     
  • 2.27, Аноним (50), 07:15, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Проблема проявляется начиная с ядра 6.16. Может никто этим протоколом и не воспользовался ещё.

    Но как это разработчики тестировали, ведь реально же постоянные глюки бы были.

     
  • 2.34, нах. (?), 07:53, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > У меня вопрос к тому, как это вообще в ядро пропустили.

    шоколадный же тысячегласс просмотрел, заставил исправить color на colour, и подвинуть на четыре пробела два отступа. Чо вы докопались?

    > Патчи же должны какие-то тесты проходить

    цомпиляетца! В прод, в прод, в прод!

    Песателю патча надо срочно закрыть тикет, а то лишат премии. Она у индуса и так маленькая.

     
  • 2.43, Жироватт (ok), 09:22, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Копры намонстрячили себе фичу и выложили в паблик.
    Сообщество пробежало глазами, погоняло пару очевидных тестовых наборов, понадеявшись на ПРАФЕССИАНАЛЬНЕХ ПРАХРАММИСТОВ НА ФУУУУЛДЕЕЕ у корпа - ПЛАТИНОВОГО СПОНСОРА, получило 'passed', а так как это вообще отдельный модуль, который вкомпилять надо очень отдельной опцией...

    Пеар во время чумы, короче.

     

  • 1.29, Аноним (29), 07:33, 19/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Проблема проявляется начиная с ядра 6.16.

    6.12.xx

     
     
  • 2.30, Аноним (29), 07:35, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    в смысле использую 6.12.xx,  пришлось обновится. два часа собиралось на FX 4300
     
     
  • 3.33, Аноним (50), 07:51, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Зачем обновлялся, если твоя версия не подвержена атаке?
     
     
  • 4.35, нах. (?), 07:54, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    чтоб быть в ногу со временем. Чтоб как у всех!

    (зачем он бесконечно компиляет ведро еще спроси)

     
  • 4.39, Аноним (38), 08:55, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Вполне может быть, что бэкпортировали.
     

  • 1.36, Аноним (36), 08:42, 19/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Funnish bucket
     

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



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

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