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

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

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

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

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

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/pedro-lucas-melo/estudo-de-caso-cve-2026-31431-copyfail
Повышение привилегийАнализ уязвимостейЭксплуатацияОбучение и ОбразованиеРеагирование на ИнцидентыПодобранные Ресурсы
GitHubpedro-lucas-melo/estudo-de-caso-cve-2026-31431-copyfail

Estudo-de-Caso-CVE-2026-31431-CopyFail

🔐 Полное исследование случая CVE-2026-31431 (CopyFail) — критическая уязвимость повышения привилегий в ядре Linux. Включает технический анализ, скрипты проверки, hardening и playbook реагирования на инциденты. В образовательных целях.

Популярное

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

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

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

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

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

🐧 CVE-2026-31431 — CopyFail: Повышение привилегий в ядре Linux

Полное исследование — как была обнаружена, как работает, как тестировать, как воспроизвести (в безопасной среде) и как исправить критическую уязвимость, затрагивающую почти все дистрибутивы Linux с 2017 года.


🚨 Предупреждение / Отказ от ответственности

Этот репозиторий предназначен исключительно для образовательных целей. Информация, представленная здесь, предназначена для специалистов по безопасности, исследователей и студентов в области кибербезопасности. Никогда не используйте описанные здесь методы на системах без явного разрешения. Неправомерное использование этой информации может квалифицироваться как преступление, предусмотренное Законом № 12.737/2012 (Закон Каролины Дикманн) и Гражданским марко об интернете (Закон № 12.965/2014).


📋 Содержание

  • Обзор
  • Как была обнаружена
  • Как работает уязвимость
  • Затронутые системы
  • Сценарии эксплуатации
  • Как тестировать (безопасная лаборатория)
  • Воспроизведение эксплойта
  • Как исправить
  • Индикаторы компрометации (IOC)
  • Извлечённые уроки
  • Ссылки

📌 Обзор


🔍 Как была обнаружена

Уязвимость CopyFail была обнаружена компанией по безопасности Theori во время анализа кода ядра Linux, а именно подсистемы, отвечающей за копирование данных между областями памяти.

Хронология

root@kitploit:~
Март/2026       → Исследователи Theori выявляют аномальное поведение в ядре
Март/2026       → Ответственное раскрытие (Responsible Disclosure) команде безопасности ядра
~1 неделя спустя → Патч upstream доступен на kernel.org
Май/2026        → Код эксплойта (PoC) опубликован публично
01/05/2026      → Microsoft публикует технический анализ
04/05/2026      → CISA добавляет в KEV Catalog (Known Exploited Vulnerabilities)
15/05/2026      → Срок исправления для федеральных агентств США

Почему название "CopyFail"?

Ядро Linux имеет внутренние процедуры, отвечающие за копирование данных между различными областями памяти (userspace ↔ kernelspace). Ошибка получила название CopyFail, потому что затронутый компонент перестаёт копировать определённые данные, когда должен. Это повреждает чувствительные структуры данных внутри ядра, открывая окно для эксплуатации с целью повышения привилегий.


⚙️ Как работает уязвимость

Техническая концепция

Ядро Linux управляет памятью в двух отдельных пространствах:

  • Userspace: где работают обычные процессы (пользователи), с ограниченным доступом
  • Kernelspace: привилегированное пространство, с полным доступом к оборудованию и данным системы
root@kitploit:~
┌─────────────────────────────────────┐
│           USERSPACE                 │
│   Процесс атакующего (uid=1000)     │
│   → вызывает вредоносный syscall    │
└────────────────┬────────────────────┘
                 │ syscall
                 ▼
┌─────────────────────────────────────┐
│           KERNELSPACE               │
│   Процедура копирования данных      │
│   → ОШИБКА: сбой копирования       │
│     метаданных                      │
│   → повреждает структуру управления │
│   → атакующий манипулирует          │
│     указателем                      │
│   → выполняет код как root          │
└─────────────────────────────────────┘

Механизм эксплуатации

  1. Триггер: Атакующий (локальный пользователь без привилегий) вызывает определённый syscall, который запускает дефектную процедуру копирования
  2. Повреждение: Сбой при копировании данных повреждает структуру управления ядра (например, struct учётных данных или указатель на функцию)
  3. Перехват потока управления: Атакующий использует повреждение для перенаправления выполнения ядра
  4. Повышение привилегий: Процесс атакующего начинает работать с uid=0 (root), получая полный контроль над системой

Упрощённый псевдокод ошибки

root@kitploit:~
// УЯЗВИМАЯ версия (упрощённая, для обучения)
int kernel_copy_data(struct user_request *req) {
    struct kernel_buffer kbuf;
    
    // ОШИБКА: копирует только часть данных, игнорируя критические поля
    // Поля безопасности (security_context) не копируются!
    memcpy(&kbuf.data, req->data, req->size);
    // → kbuf.security_context остаётся неинициализированным (мусор в памяти)
    
    process_buffer(&kbuf); // использует повреждённые данные
    return 0;
}

// ИСПРАВЛЕННАЯ версия
int kernel_copy_data(struct user_request *req) {
    struct kernel_buffer kbuf;
    
    // ИСПРАВЛЕНИЕ: копирует всю struct, включая поля безопасности
    if (copy_from_user(&kbuf, req, sizeof(struct kernel_buffer)))
        return -EFAULT;
    
    process_buffer(&kbuf);
    return 0;
}

🎯 Затронутые системы

⚠️ Любой дистрибутив Linux с ядром ≤ 7.0, выпущенный с 2017 года, потенциально уязвим.


💥 Сценарии эксплуатации

Сценарий 1 — Прямая локальная атака

Пользователь без привилегий на общем сервере (например, в среде хостинга, VPS) запускает эксплойт и получает root.

Сценарий 2 — Цепочка с удалённым эксплойтом (RCE → LPE)

root@kitploit:~
Интернет → [RCE через веб-уязвимость] → ограниченная оболочка → [CopyFail] → root

Согласно анализу Microsoft: ошибка может быть объединена в цепочку с эксплойтом, доставленным через интернет (например, RCE в веб-приложении), что приводит к полной компрометации сервера.

Сценарий 3 — Социальная инженерия

Пользователь Linux обманом заставляется открыть вредоносную ссылку или вложение, которое запускает эксплойт локально.

Сценарий 4 — Атака на цепочку поставок

Злоумышленник компрометирует аккаунт разработчика open source и внедряет эксплойт в широко распространяемый код.

Сценарий 5 — Компрометация дата-центра

Скомпрометированный облачный сервер может раскрыть все виртуальные машины, контейнеры, приложения и базы данных клиентов на той же инфраструктуре.


🧪 Как тестировать (безопасная лаборатория)

⚠️ ТОЛЬКО в контролируемой и изолированной среде — виртуальная машина без доступа к внешней сети!

Предварительные требования

root@kitploit:~
# Необходимые инструменты
sudo apt install -y git build-essential libssl-dev bc flex bison

# Проверить текущую версию ядра
uname -r

# Проверить, находится ли она в уязвимом диапазоне (≤ 7.0)
# Пример уязвимого вывода: 6.8.0-51-generic

Настройка тестовой среды

root@kitploit:~
# 1. Создать изолированную виртуальную машину (рекомендуется: VirtualBox или QEMU)
# Используйте ISO Ubuntu 24.04 или Debian Bookworm

# 2. Убедиться, что виртуальная машина НЕ имеет доступа к производственному интернету
# (используйте host-only сеть или изолированный NAT)

# 3. Создать пользователя без привилегий для имитации атакующего
sudo adduser testuser
su - testuser

# 4. Убедиться, что testuser не имеет sudo
sudo whoami  # должно вернуть: "testuser is not in the sudoers file"

Проверка уязвимости системы

root@kitploit:~
# Скрипт проверки (НЕ эксплуатирует, только проверяет)
#!/bin/bash

KERNEL_VERSION=$(uname -r | cut -d. -f1,2)
MAJOR=$(echo $KERNEL_VERSION | cut -d. -f1)
MINOR=$(echo $KERNEL_VERSION | cut -d. -f2)

echo "[*] Обнаружено ядро: $(uname -r)"

if [ "$MAJOR" -lt 7 ] || ([ "$MAJOR" -eq 7 ] && [ "$MINOR" -eq 0 ]); then
    echo "[!] ПОТЕНЦИАЛЬНО УЯЗВИМО к CVE-2026-31431 (CopyFail)"
    echo "[!] Проверьте, применён ли патч вашим поставщиком дистрибутива"
else
    echo "[+] Версия ядра вне затронутого диапазона"
fi

# Проверить, применён ли патч (через журналы изменений пакета)
apt changelog linux-image-$(uname -r) 2>/dev/null | grep -i "CVE-2026-31431" && \
    echo "[+] Патч CVE-2026-31431 найден в журнале изменений" || \
    echo "[?] Патч не обнаружен в журнале изменений — проверьте вручную"

🔬 Воспроизведение эксплойта (контролируемая среда)

🔒 Этот раздел строго образовательный. Код ниже — это упрощённое дидактическое представление вектора атаки — это не реальный эксплойт (который не публикуется здесь по этическим соображениям).

Концептуальная структура эксплойта

root@kitploit:~
#!/usr/bin/env python3
"""
CVE-2026-31431 (CopyFail) — Дидактическое представление
Цель: Обучение наступательной/оборонительной безопасности
НЕ ИСПОЛЬЗОВАТЬ НА СИСТЕМАХ БЕЗ РАЗРЕШЕНИЯ
"""

import ctypes
import os
import sys

def check_environment():
    """Проверяет, находимся ли мы в лабораторной среде"""
    kernel = os.uname().release
    print(f"[*] Ядро: {kernel}")
    print(f"[*] Текущий UID: {os.getuid()}")
    
    if os.getuid() == 0:
        print("[-] Мы уже root. Эксплойт не требуется.")
        sys.exit(0)

def demonstrate_concept():
    """
    Концептуальная демонстрация вектора атаки:
    
    1. Определить уязвимый syscall
    2. Создать payload, запускающий неполное копирование
    3. Отслеживать повреждение памяти
    4. Перенаправить поток для повышения привилегий
    
    В реальном эксплойте:
    - Атакующий использует такие техники, как heap spray или ROP-цепочки
    - Злоупотребляет окном между повреждением и использованием повреждённых данных
    - Перезаписывает учётные данные процесса (uid → 0)
    """
    print("[*] Концепция: триггер дефектной процедуры копирования")
    print("[*] Концепция: отслеживание повреждения struct kernel_buffer")
    print("[*] Концепция: перенаправление потока выполнения")
    print("[*] См.: https://xint.io/blog/copy-fail-linux-distributions")

def main():
    check_environment()
    demonstrate_concept()
    print("\n[i] Для полного технического анализа см.:")
    print("    → https://xint.io/blog/copy-fail-linux-distributions")
    print("    → https://www.microsoft.com/en-us/security/blog/2026/05/01/cve-2026-31431-copy-fail-vulnerability-enables-linux-root-privilege-escalation/")

if __name__ == "__main__":
    main()

Мониторинг во время тестов

root@kitploit:~
# В отдельном терминале отслеживать журналы ядра
sudo dmesg -w | grep -E "(oops|panic|null pointer|exploit|cve)"

# Отслеживать системные вызовы
sudo strace -e trace=all -p <PID_ПРОЦЕССА>

# Проверять изменения UID в реальном времени
watch -n 0.5 'cat /proc/self/status | grep -E "^(Uid|Gid)"'

🛡️ Как исправить

1. Обновить ядро (окончательное исправление)

root@kitploit:~
# Ubuntu / Debian
sudo apt update && sudo apt upgrade -y linux-image-generic
sudo reboot

# Проверить версию после перезагрузки
uname -r

# Red Hat / CentOS / Amazon Linux
sudo dnf update -y kernel
sudo reboot

# SUSE
sudo zypper update -t package kernel-default
sudo reboot

2. Проверить, применён ли патч

root@kitploit:~
# Проверить журнал изменений установленного ядра
apt changelog linux-image-$(uname -r) | grep CVE-2026-31431

# Через трекер CVE Ubuntu
# https://ubuntu.com/security/CVE-2026-31431

# Через базу данных CVE Red Hat
# https://access.redhat.com/security/cve/CVE-2026-31431

3. Временные меры (если невозможно обновить немедленно)

root@kitploit:~
# Ограничить выполнение SUID-бинарников (уменьшает поверхность атаки)
find / -perm -4000 -type f 2>/dev/null

# Включить аудит подозрительных syscall
sudo auditctl -a always,exit -F arch=b64 -S all -k syscall_audit

# Отслеживать попытки повышения привилегий
sudo apt install -y auditd
sudo auditctl -w /etc/passwd -p wa -k passwd_changes
sudo auditctl -w /etc/sudoers -p wa -k sudoers_changes

4. Дополнительное усиление защиты после патча

root@kitploit:~
# Активировать защиту ядра
# /etc/sysctl.conf — добавить:
kernel.dmesg_restrict = 1
kernel.kptr_restrict = 2
kernel.perf_event_paranoid = 3
kernel.unprivileged_bpf_disabled = 1
net.core.bpf_jit_harden = 2

# Применить
sudo sysctl -p

5. Чек-лист реагирования на инцидент

  • Определить все системы Linux с ядром ≤ 7.0
  • Приоритизировать серверы, доступные из интернета или в дата-центрах
  • Применить патчи каждого дистрибутива (не только upstream)
  • Просмотреть журналы аутентификации на предмет подозрительных повышений привилегий
  • Проверить наличие несанкционированных SUID-бинарников
  • Проверить crontab и службы, работающие от root
  • Сообщить команде безопасности и руководству
  • Задокументировать и сообщить при наличии признаков эксплуатации

🔎 Индикаторы компрометации (IOC)

root@kitploit:~
# Признаки возможной эксплуатации:

# 1. Процессы обычного пользователя, работающие от root
ps aux | awk '$1 != "root" && $2 == "0"'

# 2. Недавно созданные SUID-бинарники
find / -perm -4000 -newer /etc/passwd -type f 2>/dev/null

# 3. Подозрительные записи в /etc/passwd
grep "uid=0" /etc/passwd

# 4. Журналы ядра с сообщениями о повреждении
dmesg | grep -iE "(oops|BUG:|corruption|cve)"

# 5. Несанкционированные сетевые подключения
ss -tulnp | grep LISTEN

📚 Извлечённые уроки

Для команд безопасности

  1. Управление патчами критически важно — Патч upstream был доступен примерно через неделю, но дистрибутивам требуется больше времени для доставки. Активно отслеживайте своих поставщиков.

  2. Защита в глубину — LPE сама по себе недостаточна; атакующему нужен первоначальный доступ. Контролируйте, кто имеет доступ к системе.

  3. Цепочки уязвимостей — Отдельные CVE с «низким риском» могут стать критическими при комбинировании. Оценивайте риск в контексте, а не только по изолированному CVSS.

  4. Цепочка поставок — реальный вектор — Широко используемый open source код может быть вектором атаки. Внедрите проверку целостности пакетов.

  5. Kubernetes и контейнеры не застрахованы — Если ядро хоста уязвимо, контейнеры поверх него также затронуты.

Для разработчиков

  1. Всегда копируйте полные struct — Никогда не копируйте отдельные поля struct управления ядра, не убедившись, что все критические поля инициализированы.

  2. Используйте copy_from_user() правильно — Функции копирования ядра имеют специфическую семантику. Прочитайте документацию перед использованием.

  3. Проверка безопасности кода — Изменения в ядре требуют проверки, ориентированной на безопасность, а не только на функциональность.

Для руководителей

  1. Обновления ядра — приоритет — Это не просто «плановое обслуживание». Уязвимости ядра часто являются критическими.

  2. Инвентаризация активов фундаментальна — Вы не можете исправить то, о существовании чего не знаете. Поддерживайте актуальную инвентаризацию систем Linux и их версий ядра.

  3. План реагирования на инциденты — Имейте готовый playbook для критических уязвимостей с агрессивными сроками (например, CISA KEV).


📖 Ссылки

  • CISA KEV Catalog — CVE-2026-31431
  • Theori — Техническое обнаружение CopyFail
  • Microsoft Security Blog — Анализ уязвимости
  • CopyFail — Официальный сайт уязвимости
  • Jorijn Schrijvershof — Подробное объяснение
  • Olhar Digital — Покрытие на португальском
  • Ubuntu Security — CVE Tracker
  • Red Hat — CVE Database

🤝 Вклад

Нашли что-то устаревшее или хотите добавить сценарий тестирования? Откройте issue или PR!

Пожалуйста, соблюдайте кодекс поведения: этот репозиторий предназначен для образования и защиты — не для вредоносной деятельности.


📄 Лицензия

MIT License — используйте для обучения, преподавания и защиты систем. Никогда для атак.


«Знание атаки — первый шаг к построению защиты.»

⭐ Если это исследование было полезным, поставьте звезду репозиторию!

Скачать инструмент
ПолеДетализация
CVE IDCVE-2026-31431
ПсевдонимCopyFail
ТипLocal Privilege Escalation (LPE) — повышение привилегий
Оценка CVSS8.8 (High) / потенциально критическая в цепочке
КомпонентЯдро Linux — механизм копирования данных
ВерсииЯдро Linux ≤ 7.0 (дистрибутивы с 2017 года)
ОбнаруженоTheori (компания по безопасности)
РаскрытоМарт 2026
Патч upstreamДоступен ~через неделю после ответственного раскрытия
Статус CISAВнесено в каталог как активно эксплуатируемое — KEV Catalog
Срок CISAФедеральные агентства должны исправить до 15/05/2026
ДистрибутивВерсияСтатус
Red Hat Enterprise Linux10.1✅ Уязвим
Ubuntu LTS24.04✅ Уязвим
Amazon Linux2023✅ Уязвим
SUSE Linux16✅ Уязвим
DebianНедавний стабильный✅ Уязвим
FedoraНедавний✅ Уязвим
Kubernetes (узлы)Все на ядре ≤7.0✅ Уязвим