Skip to content
Exploit

Exploit

sploitus.com • September 1, 2026

##

# CVE-2026-31431 — Полный технический анализ

> **Классификация:** локальное повышение привилегий (LPE) — ядро Linux

> **Воздействие:** `непривилегированный пользователь → root`

> **Затронутый модуль:** `algif_aead` (подсистема AF_ALG ядра)

Ядро Linux предоставляет интерфейс криптографии пользовательскому пространству под названием **AF_ALG** (сокет семейства `AF_ALG`). Этот интерфейс позволяет непривилегированным процессам использовать криптографические ускорители ядра — шифрование, хеширование, генерацию ключей — без необходимости в root.

Один из его модулей — **`algif_aead`** , который реализует режим AEAD (_Authenticated Encryption with Associated Data_), используемый такими алгоритмами, как AES-GCM или ChaCha20-Poly1305.

Ошибка заключается в том, как `algif_aead` обрабатывает операции **`sendmsg()` \+ `recvmsg()`**, когда выходной буфер меньше ожидаемого. Ядро выполняет операцию копирования (`copy_to_user`) без корректной проверки размера, что приводит к:

Переполнение буфера → запись за пределы памяти ядра

└─ memcpy в адрес, частично контролируемый пользователем

Эта запись за пределы границ позволяет перезаписать соседние управляющие структуры ядра в памяти — в частности, указатели на функции или структуры `cred` — для повышения привилегий.

### Почему для эксплуатации не требуется root?

Потому что `AF_ALG` доступен непривилегированным пользователям. Любой процесс может открыть сокет `AF_ALG` и отправлять данные без предварительной аутентификации. Эксплойту не нужна никакая вспомогательная уязвимость.

// Это может сделать любой пользователь системы

int fd = socket(AF_ALG, SOCK_SEQPACKET, 0);

⚠️ Если вы видите `algif_aead` в `lsmod` и ваше ядро `6.2.x` на Ubuntu 23.04, **вы подвержены риску**.

> ⚠️ **Этическое предупреждение:** этот раздел носит исключительно образовательный характер. Эксплуатация систем без явного разрешения незаконна и наказуема. Примеры предназначены для контролируемых лабораторных сред.

2. Отправить sendmsg() с буфером завышенного размера

3. recvmsg() с меньшим буфером → триггер ошибки

### Концептуальный минимальный эксплойт (C)

int fd = socket(AF_ALG, SOCK_SEQPACKET, 0);

bind(fd, (struct sockaddr *)&sa, sizeof(sa));

setsockopt(fd, SOL_ALG, ALG_SET_KEY, key, sizeof(key));

setsockopt(fd, SOL_ALG, ALG_SET_AEAD_AUTHSIZE, NULL, 16);

// Большой буфер → триггер записи за пределы границ

// ... построение msghdr с cmsg ALG_OP_ENCRYPT

// recvmsg с недостаточным буфером → ядро пишет за пределы границ

recv(op_fd, small_buf, sizeof(small_buf), 0);

// Если эксплойт сработал, теперь мы root

> Это упрощённая схема. Настоящий эксплойт требует дополнительных примитивов формирования heap для выравнивания записи за пределы границ со структурой `task_struct->cred`.

Следующие репозитории содержат задокументированные рабочие реализации:

* **copy-fail-c** — эксплойт на чистом C, требует компиляции

* **copy-fail-tiny-elf** — автономный ELF-бинарник, не требует компиляции

`

#### Типичное использование (лаборатория)

# Клонировать и скомпилировать copy-fail-c

git clone

# Ожидаемый результат на уязвимой системе:

wget

Эксплуатирует веб-уязвимость (RCE) → доступ как www-data

Расчётное время от доступа `www-data` до root: ** ⚠️ Это может сломать программное обеспечение, использующее AEAD-шифрование через AF_ALG (редко встречается на стандартных веб-серверах).

### Смягчение с помощью sysctl — ограничение пользовательских namespace

# Отключить непривилегированные user namespaces (ломает некоторые функции Docker)

sudo sysctl -w kernel.unprivileged_userns_clone=0

echo "kernel.unprivileged_userns_clone=0" | sudo tee -a /etc/sysctl.d/99-hardening.conf

sudo sysctl -p /etc/sysctl.d/99-hardening.conf

### Смягчение с помощью AppArmor — блокировка AF_ALG

Создать профиль AppArmor, запрещающий доступ к `AF_ALG`:

network af_alg, # запретить в конкретных профилях

Для веб-процесса (пример nginx/www-data):

# Добавить в профиль AppArmor для www-data или nginx

sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.nginx

### Снижение воздействия — усиление защиты www-data

Хотя это не предотвращает повышение привилегий, это уменьшает начальную поверхность атаки:

* NVD: `

* Коммит ядра с исправлением: подсистема `crypto/algif_aead.c`

* PoC: `

* PoC ELF: `

* Соответствующее уведомление безопасности Ubuntu: USN-XXXX-1

> **Документ подготовлен в академических целях** — системный администратор, 2026

Extracted Entities

Attack Types (1)

Platforms (1)