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 реагирования на инциденты. В образовательных целях.

Репозиторий
3 месяцев назадЕщё не проверено

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться

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

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


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

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


📋 Содержание

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

  • 📌 Обзор

    ПолеДетализация
    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

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

    Уязвимость 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;
    }
    

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

    ДистрибутивВерсияСтатус
    Red Hat Enterprise Linux10.1✅ Уязвим
    Ubuntu LTS24.04✅ Уязвим
    Amazon Linux2023✅ Уязвим
    SUSE Linux16✅ Уязвим
    DebianНедавний стабильный✅ Уязвим
    FedoraНедавний✅ Уязвим
    Kubernetes (узлы)Все на ядре ≤7.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 — используйте для обучения, преподавания и защиты систем. Никогда для атак.


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

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

    Скачать инструмент