
Эксплойт локального повышения привилегий для ядра Linux, использующий CVE-2026-31635: повреждает кэш страниц через дешифрование на месте в RxRPC, перезаписывает файлы, доступные только для чтения, и выполняет шелл-код, с режимом проверки.
Локальное повышение привилегий в Linux в пути расшифровки RxRPC/GSSAPI. Отсутствие проверки
skb_cow_data()вrxgk_decrypt_skb()позволяет неавторизованному локальному атакующему повредить страницы кэша страниц и перезаписать содержимое файлов, доступных только для чтения, в памяти.
Этот репозиторий содержит материалы исследования и доказательство концепции для CVE-2026-31635, локального повышения привилегий в ядре Linux в файле net/rxrpc/rxgk.c.
Уязвимость возникает, когда RxRPC расшифровывает пакеты на месте с использованием AES-CBC, не убедившись предварительно, что данные пакета являются приватными. Если пакет построен из страниц кэша страниц, ядро может записать расшифрованные данные непосредственно в разделяемую файловую память.
Выберите путь, соответствующий вашей цели:
CONFIG_RXGK./dirtydecrypt --checkcd exploitmakedocs/vulnerability-analysis.mddocs/patch-analysis.md и docs/exploit-development.md⚠️ Этот репозиторий предназначен только для авторизованных исследований и тестирования. Не используйте его против систем без явного разрешения.
Выполните следующие проверки, чтобы определить, входит ли ваша среда в зону риска:
uname -r
zgrep CONFIG_RXGK /proc/config.gz 2>/dev/null || grep CONFIG_RXGK /boot/config-$(uname -r)
Если ядро находится в диапазоне 6.10–6.13 и CONFIG_RXGK включён, система может быть уязвима.
Затем используйте режим проверки PoC эксплойта:
cd exploit
./dirtydecrypt --check
Если проверка успешна, система уязвима. Если она корректно завершается с ошибкой или сообщает об отсутствии поддержки RxRPC, то ядро не эксплуатируемо.
Эксплойт использует некорректный пакет RxRPC, чтобы заставить ядро выполнить расшифровку в разделяемую страницу кэша страниц.
Шаги:
rxgk_decrypt_skb() в ядре.Эксплойт продемонстрирован в файле exploit/dirtydecrypt.c.
6.10 – 6.13CONFIG_RXGK=m или CONFIG_RXGK=yrxgkCONFIG_RXGK отключён по умолчаниюgit clone https://github.com/0xFuffM3/CVE-2026-31635-DirtyDecrypt.git
cd exploit
make
Для полностью статической сборки:
make static
./dirtydecrypt --check
Пример использования:
./dirtydecrypt -f /usr/bin/sudo -o /tmp/sudo_patched
./dirtydecrypt -p shellcode/payload.bin
docs/vulnerability-analysis.mddocs/exploit-development.mddocs/patch-analysis.mddocs/affected-kernels.mdОтключите RxRPC, если он не требуется:
sudo rmmod rxrpc
sudo modprobe -r rxgk
echo "blacklist rxrpc" | sudo tee /etc/modprobe.d/blacklist-rxrpc.conf
Обновитесь до исправленной версии ядра:
6.13.26.12.106.6.75Аудит соответствующих операций создания сокетов и ключей:
sudo auditctl -a always,exit -F arch=b64 -S socket -F a0=28 -k rxrpc_sock
В: Может ли этот эксплойт изменять файлы на диске?
A: Нет. Уязвимость повреждает только содержимое кэша страниц; сам файл на диске остаётся неизменным до тех пор, пока страница не будет сброшена.
В: Присутствует ли эта уязвимость на ядрах новее 6.13?
A: Нет, исправление было перенесено, и уязвимый путь кода исправлен в ядрах после 6.13.2.
В: Как safest способ протестировать это?
A: Используйте изолированную виртуальную машину с полноценным уязвимым ядром и одноразовой учётной записью пользователя.
В: Где найти исходный код эксплойта?
A: Смотрите exploit/dirtydecrypt.c и exploit/README.md.
CVE-2026-31635-DirtyDecrypt/
├── README.md
├── LICENSE
├── DISCLAIMER.md
├── CHANGELOG.md
├── exploit/
│ ├── README.md
│ ├── dirtydecrypt.c
│ ├── Makefile
│ └── shellcode/
│ └── payload.asm
└── docs/
├── vulnerability-analysis.md
├── exploit-development.md
├── affected-kernels.md
├── patch-analysis.md
└── references.md
MIT — см. LICENSE.
Этот репозиторий предназначен только для образовательных и авторизованных целей безопасности.
| Свойство | Детали |
|---|
| CVE | CVE-2026-31635 |
| Компонент | net/rxrpc/rxgk.c — rxgk_decrypt_skb() |
| Коренная причина | Отсутствие проверки skb_cow_data() перед расшифровкой |
| Воздействие | Локальное повышение привилегий до root |
| Затронутые ядра | 6.10 – 6.13 |
| Исправлено в | 6.13.2 · 6.12.10 · 6.6.75 |