Sploitus

Exploit for dirtyfrag-patches

kitploit · 2026-08-27

Exploit Code

MARKDOWN115 lines
## 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/