Решето какое то
May. 8th, 2026 07:25 amhttps://github.com/V4bel/dirtyfrag
Анализ уязвимости Dirty Frag, представленной в репозитории V4bel/dirtyfrag, указывает на критический недостаток в механизмах обработки сетевых пакетов ядра Linux, приводящий к локальному повышению привилегий (LPE).
### Технический контекст
Уязвимость затрагивает подсистемы **IPsec (ESP)** и **RxRPC**. Проблема локализована в путях «быстрого дешифрования» (in-place decryption fast paths) для модулей esp4, esp6 и rxrpc. Корень проблемы заключается в некорректной обработке фрагментированных буферов сокетов (sk_buff fragments), когда они ссылаются на страницы памяти, не принадлежащие ядру монопольно.
### Механизм эксплуатации
1. **Разделение страниц (Page Sharing):** При использовании системных вызовов splice(2), sendfile(2) или флага MSG_SPLICE_PAGES, страницы из кэша страниц (Page Cache) или каналов (pipes) могут быть привязаны к сетевому сокету без копирования данных (zero-copy).
2. **In-place Decryption:** Когда ядро принимает зашифрованный пакет (например, через протокол ESP в IPsec), оно выполняет дешифрование непосредственно в те же страницы памяти, которые находятся в буфере сокета.
3. **Нарушение изоляции:** Уязвимость возникает из-за того, что ядро не проверяет, является ли целевая страница «приватной» и доступной только для записи ядром. Если атакующий привязывает к сокету страницу, отображающую критически важный системный файл (например, /etc/passwd или бинарный файл /usr/bin/su), подсистема дешифрования перезапишет содержимое этой страницы в Page Cache результатами дешифрования.
### Последствия
* **Локальное повышение привилегий:** Непривилегированный пользователь может модифицировать содержимое системных файлов в оперативной памяти. Это позволяет подменить учетные данные или внедрить код в доверенные исполняемые файлы без изменения их состояния на физическом диске.
* **Сходство с Dirty Pipe / Copy Fail:** Методология эксплуатации напоминает уязвимость Dirty Pipe (CVE-2022-0847), однако в данном случае вектором записи выступает не логика работы с пайпами, а сетевой стек дешифрования.
### Сферы воздействия и исправление
Уязвимости подвержены ядра Linux, поддерживающие современные механизмы zero-copy и MSG_SPLICE_PAGES. В качестве временных мер (Workaround) до применения патча рекомендуется:
1. Блокировка загрузки уязвимых модулей: esp4, esp6, rxrpc.
2. Очистка Page Cache после возможной атаки командой echo 3 > /proc/sys/vm/drop_caches для удаления скомпрометированных страниц из памяти.
Техническая реализация в репозитории демонстрирует стабильный обход механизмов защиты памяти за счет архитектурной ошибки в управлении владением страницами внутри сетевого стека.
Анализ уязвимости Dirty Frag, представленной в репозитории V4bel/dirtyfrag, указывает на критический недостаток в механизмах обработки сетевых пакетов ядра Linux, приводящий к локальному повышению привилегий (LPE).
### Технический контекст
Уязвимость затрагивает подсистемы **IPsec (ESP)** и **RxRPC**. Проблема локализована в путях «быстрого дешифрования» (in-place decryption fast paths) для модулей esp4, esp6 и rxrpc. Корень проблемы заключается в некорректной обработке фрагментированных буферов сокетов (sk_buff fragments), когда они ссылаются на страницы памяти, не принадлежащие ядру монопольно.
### Механизм эксплуатации
1. **Разделение страниц (Page Sharing):** При использовании системных вызовов splice(2), sendfile(2) или флага MSG_SPLICE_PAGES, страницы из кэша страниц (Page Cache) или каналов (pipes) могут быть привязаны к сетевому сокету без копирования данных (zero-copy).
2. **In-place Decryption:** Когда ядро принимает зашифрованный пакет (например, через протокол ESP в IPsec), оно выполняет дешифрование непосредственно в те же страницы памяти, которые находятся в буфере сокета.
3. **Нарушение изоляции:** Уязвимость возникает из-за того, что ядро не проверяет, является ли целевая страница «приватной» и доступной только для записи ядром. Если атакующий привязывает к сокету страницу, отображающую критически важный системный файл (например, /etc/passwd или бинарный файл /usr/bin/su), подсистема дешифрования перезапишет содержимое этой страницы в Page Cache результатами дешифрования.
### Последствия
* **Локальное повышение привилегий:** Непривилегированный пользователь может модифицировать содержимое системных файлов в оперативной памяти. Это позволяет подменить учетные данные или внедрить код в доверенные исполняемые файлы без изменения их состояния на физическом диске.
* **Сходство с Dirty Pipe / Copy Fail:** Методология эксплуатации напоминает уязвимость Dirty Pipe (CVE-2022-0847), однако в данном случае вектором записи выступает не логика работы с пайпами, а сетевой стек дешифрования.
### Сферы воздействия и исправление
Уязвимости подвержены ядра Linux, поддерживающие современные механизмы zero-copy и MSG_SPLICE_PAGES. В качестве временных мер (Workaround) до применения патча рекомендуется:
1. Блокировка загрузки уязвимых модулей: esp4, esp6, rxrpc.
2. Очистка Page Cache после возможной атаки командой echo 3 > /proc/sys/vm/drop_caches для удаления скомпрометированных страниц из памяти.
Техническая реализация в репозитории демонстрирует стабильный обход механизмов защиты памяти за счет архитектурной ошибки в управлении владением страницами внутри сетевого стека.
no subject
Date: 2026-05-08 07:37 am (UTC)no subject
Date: 2026-05-08 09:10 am (UTC)