## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-METALX1993-DIRTYFRAG-PATCHES
# Dirty Frag — Патчи ядра
Серия патчей для класса уязвимостей **Dirty Frag** , обнаруженных Hyunwoo Kim (@v4bel).
Dirty Frag позволяет непривилегированному локальному пользователю перезаписывать произвольные байты страничного кэша файлов, доступных только для чтения (например, `/usr/bin/su`, `/etc/passwd`), что приводит к **локальному повышению привилегий до root** во всех основных дистрибутивах Linux.
* * *
## ⚠️ Атрибуция
> **Патчи в этом репозитории НЕ были написаны сопровождающим этого репозитория.**
>
> * **CVE-2026-43284 (патч ESP):** автор — Hyunwoo Kim (@v4bel) и Kuan-Ting Chen. Включён в основную ветку ядра Linux в коммите `f4c50a4034e6`.
> * **CVE-2026-43500 (патч RxRPC):** автор — Hyunwoo Kim (@v4bel). Отправлен в список рассылки netdev по адресу `afKV2zGR6rrelPC7@v4bel`, ожидает включения.
>
>
> Этот репозиторий — **отформатированное зеркало** этих патчей, собранных здесь для удобства в формате, готовом для `git am`. Все заслуги принадлежат оригинальным авторам. Оригинальное исследование и PoC: https://github.com/V4bel/dirtyfrag
* * *
## Патчи
* * *
## Затронутые версии ядра
* **CVE-2026-43284** (ESP): ядра от `4.10` (коммит `cac2661c53f3`, 2017-01-17) до `6.x` до `f4c50a4034e6`
* **CVE-2026-43500** (RxRPC): ядра от `6.4` (коммит `2dc334f1a63a`, 2023-06-08) до актуальной версии (патч ещё не включён)
* * *
## Как применить
### Применение к дереву исходников ядра
root@kitploit:~
git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
cd linux
# Применить патч 1 (ESP — CVE-2026-43284)
git am 0001-net-xfrm-fix-page-cache-write-via-esp-splice-CVE-2026-43284.patch
# Применить патч 2 (RxRPC — CVE-2026-43500)
git am 0002-net-rxrpc-fix-page-cache-write-via-rxkad-splice-CVE-2026-43500.patch
### Применение с помощью `patch` (если git am не сработает из-за расхождения контекста)
root@kitploit:~
patch -p1 < 0001-net-xfrm-fix-page-cache-write-via-esp-splice-CVE-2026-43284.patch
patch -p1 < 0002-net-rxrpc-fix-page-cache-write-via-rxkad-splice-CVE-2026-43500.patch
* * *
## Немедленное смягчение (без перекомпиляции ядра)
Если вы не можете применить патч немедленно, заблокируйте уязвимые модули:
root@kitploit:~
sudo sh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' \
> /etc/modprobe.d/dirtyfrag.conf && \
rmmod esp4 esp6 rxrpc 2>/dev/null; \
echo 3 > /proc/sys/vm/drop_caches"
> **Предупреждение:** Удаление `esp4`/`esp6` отключает IPsec ESP. Оцените последствия перед применением на производственных системах.
* * *
## Техническое резюме
### Корневая причина
Оба варианта имеют одну и ту же корневую причину: путь нулевого копирования `splice()` в ядре помещает **страницу страничного кэша, доступную только для чтения** , непосредственно во фрагмент `skb` без семантики копирования при записи. Последующие криптографические операции на месте записывают в эту страницу страничного кэша, навсегда изменяя содержимое кэшированного файла.
root@kitploit:~
splice(file_fd → pipe → socket)
│
▼
skb->frags[0].page = &page_cache_page_P <- нет CoW!
│
▼
[esp_input / rxkad_verify_packet_1]
расшифровка AEAD/fcrypt на месте src == dst == &P
│
▼
STORE в page_cache_page_P <- произвольная запись в кэш файла, доступного только для чтения
### Стратегия исправления
* * *
## Ссылки
* Оригинальный PoC и описание: https://github.com/V4bel/dirtyfrag
* CVE-2026-43284: https://vulners.com/cve/CVE-2026-43284
* CVE-2026-43500: https://vulners.com/cve/CVE-2026-43500
* Коммит в основной ветке (исправление ESP): https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f4c50a4034e62ab75f1d5cdd191dd5f9c77fdff4
* Патч RxRPC (список рассылки netdev): https://lore.kernel.org/all/afKV2zGR6rrelPC7@v4bel/
* Copy Fail (предшествующая уязвимость): https://copy.fail/
* Dirty Pipe (тот же класс ошибок): https://dirtypipe.cm4all.com/