Что такое CVE-2026-31431 и почему она получила название Copy Fail
CVE-2026-31431 — это уязвимость локального повышения привилегий (Local Privilege Escalation, LPE) в ядре Linux, затрагивающая криптографический модуль algif_aead. Она получила неофициальное название Copy Fail из-за ошибки в логике копирования данных при выполнении криптографических операций "на месте" (in-place).
Проблема возникла из-за оптимизации, внедрённой в 2017 году: ядро стало использовать один и тот же буфер памяти и для источника, и для приёмника данных при обработке AEAD-шифрования. Однако в определённых сценариях, особенно при взаимодействии с системным вызовом splice(), эта оптимизация приводила к некорректному копированию аутентификационных данных. В результате злоумышленник мог получить контролируемую запись в память ядра, что открывало путь к повреждению критических структур данных.
Разработчики ядра решили проблему радикально: они откатили изменения, связанные с in-place операциями, и вернулись к работе "вне места" (out-of-place), когда исходный и целевой буферы разделены. Это устранило корень уязвимости, но оставило значительный след в экосистеме Linux, поскольку уязвимыми оказались практически все дистрибутивы, выпущенные за последние годы.
Технические детали: как работает эксплуатация
Эксплуатация CVE-2026-31431 основана на взаимодействии трёх компонентов: AF_ALG (пользовательский криптографический API), системного вызова splice() и ошибки обработки при неудачной операции копирования.
AF_ALG — это интерфейс, позволяющий пользовательским приложениям использовать криптографические алгоритмы ядра через сокеты. Модуль algif_aead реализует аутентифицированное шифрование (AEAD), которое используется в таких протоколах, как TLS и IPsec. В уязвимой версии модуль пытался выполнять операции "на месте", то есть использовать один буфер для входных и выходных данных.
Злоумышленник, имеющий доступ к системе как непривилегированный пользователь, может создать AF_ALG-сокет и инициировать операцию AEAD, передав данные через splice(). Из-за ошибки в логике копирования аутентификационных данных (associated data, AD) происходит частичная запись в память ядра. В частности, исследователи обнаружили, что можно выполнить контролируемую 4-байтовую запись в page cache — кэш страниц ядра, где хранятся образы исполняемых файлов.
Эта запись позволяет модифицировать in-memory представление setuid-бинарников, таких как /usr/bin/su, не изменяя файл на диске. При следующем запуске модифицированный бинарник выполняет код с привилегиями root, что полностью ломает границы безопасности системы. Важно отметить, что эксплуатация детерминирована: она не требует гонок (race conditions) и может быть реализована в компактном скрипте размером около 732 байт, работающем на большинстве дистрибутивов.
Вектор атаки и условия эксплуатации
CVE-2026-31431 имеет вектор атаки AV:L (локальный), что означает, что злоумышленнику необходим доступ к системе как непривилегированному пользователю. Однако это не снижает серьёзности угрозы, поскольку такой доступ может быть получен множеством способов: через скомпрометированный CI-раннер, веб-контейнер, SSH-доступ или фишинговую атаку.
Ключевые условия для эксплуатации:
- Возможность выполнения кода от имени локального пользователя (не root).
- Наличие уязвимого ядра Linux (выпущенного с 2017 года до момента установки патча).
- Включённый модуль AF_ALG (по умолчанию активен в большинстве дистрибутивов).
Уязвимость не требует сетевого доступа, компиляции кода или установки дополнительных библиотек. Скрипт эксплойта взаимодействует только со стандартными интерфейсами ядра, что делает его идеальным для работы в ограниченных средах, таких как контейнеры с минимальным набором инструментов.
Особую опасность представляет то, что эксплуатация возможна внутри контейнера без прав root. Поскольку контейнеры используют общее ядро с хостом, атакующий может выйти за пределы контейнера и получить root-доступ ко всей системе. Это делает уязвимость критической для мультитенантных сред и Kubernetes-кластеров.
Затронутые системы и масштаб угрозы
CVE-2026-31431 затрагивает практически все основные дистрибутивы Linux, включая Ubuntu, Debian, Red Hat Enterprise Linux (RHEL), SUSE, Amazon Linux, Fedora и Arch Linux. Уязвимыми считаются ядра, выпущенные с 2017 года до момента применения исправлений.
По данным Microsoft, уязвимость влияет на значительную часть облачных Linux-нагрузок и миллионы Kubernetes-кластеров. Это связано с тем, что большинство облачных провайдеров и корпоративных сред используют стандартные дистрибутивы с ядрами, попадающими в уязвимый диапазон.
Конкретные версии, подтверждённые как уязвимые, включают Ubuntu 24.04 LTS, Amazon Linux 2023, RHEL 10.1 и SUSE 16. Однако это лишь верхушка айсберга: любые системы с ядрами, содержащими коммит 72548b093ee3 (внедрённый в 2017 году), потенциально уязвимы.
Важно отметить, что некоторые пакеты ядра в Ubuntu, такие как linux-aws, linux-kvm, помечены как "Not affected" в определённых релизах, что указывает на то, что они либо не содержат уязвимого кода, либо используют другие механизмы защиты. Тем не менее, администраторам следует проверять статус своих конкретных ядер через официальные каналы.
Оценка серьёзности: CVSS, EPSS и CISA KEV
CVE-2026-31431 получила оценку CVSS 7.8 (High), что отражает высокий уровень серьёзности. Эта оценка учитывает локальный вектор атаки, низкие требования к привилегиям, отсутствие необходимости взаимодействия с пользователем и высокое воздействие на конфиденциальность, целостность и доступность.
Однако более тревожным индикатором является EPSS-оценка, которая составляет 100%. EPSS (Exploit Prediction Scoring System) оценивает вероятность эксплуатации уязвимости в реальных условиях, и 100% означает, что эксплуатация практически неизбежна. Это связано с наличием полностью рабочего PoC-эксплойта, который был опубликован исследователями.
Кроме того, CISA (Агентство по кибербезопасности и защите инфраструктуры США) добавила CVE-2026-31431 в свой каталог Known Exploited Vulnerabilities (KEV), что подтверждает факты активной эксплуатации в дикой природе. Хотя Microsoft отмечает, что на момент публикации их отчёта активная эксплуатация была ограничена в основном тестированием PoC, добавление в KEV означает, что атаки уже происходят или неизбежны в ближайшее время.
Для администраторов это означает, что задержка с установкой патчей недопустима: каждая минута промедления увеличивает риск компрометации.
Влияние на облачные среды и Kubernetes
Уязвимость Copy Fail представляет особую угрозу для облачных инфраструктур и Kubernetes-кластеров по нескольким причинам.
Во-первых, контейнеры разделяют ядро хоста, поэтому уязвимость в ядре автоматически затрагивает все контейнеры, работающие на узле. Если злоумышленник получает возможность выполнить код в любом контейнере (например, через скомпрометированный образ или уязвимое приложение), он может использовать CVE-2026-31431 для выхода за пределы контейнера и получения root-доступа к хосту.
Во-вторых, page cache, который атакуется эксплойтом, является общим для всех контейнеров на узле. Это означает, что модификация кэша может повлиять на другие контейнеры, работающие на том же хосте, что расширяет радиус атаки.
В-третьих, в мультитенантных облачных средах, где несколько клиентов размещают свои рабочие нагрузки на общих узлах, успешная эксплуатация может привести к компрометации данных других клиентов. Это нарушает изоляцию арендаторов и может иметь серьёзные юридические и репутационные последствия.
Microsoft подчёркивает, что уязвимость особенно опасна в CI/CD-средах, где часто выполняются непроверенные сторонние скрипты, и в Kubernetes, где поды могут запускаться с минимальными привилегиями, но при этом иметь доступ к общему ядру.
Как обнаружить уязвимость и признаки эксплуатации
Обнаружение уязвимости CVE-2026-31431 начинается с проверки версии ядра на всех системах. Это можно сделать с помощью команды uname -r, которая покажет текущую версию. Затем необходимо сверить её с базами данных уязвимостей вашего дистрибутива (например, Ubuntu CVE tracker, Red Hat CVE database) или использовать специализированные сканеры.
Однако более сложной задачей является обнаружение признаков эксплуатации. Поскольку атака происходит в памяти и не изменяет файлы на диске, традиционные антивирусы и системы обнаружения вторжений могут не заметить её. Microsoft Defender XDR предлагает несколько детекторов, включая:
- Exploit:Linux/CopyFailExpDl.A — обнаружение загрузки эксплойта.
- Exploit:Python/CopyFail.A — обнаружение Python-скрипта, используемого для эксплуатации.
- Behavior:Linux/CVE-2026-31431 — обнаружение подозрительного поведения, связанного с AF_ALG и splice().
Администраторам рекомендуется мониторить следующие индикаторы:
- Необычные вызовы AF_ALG-сокетов из непривилегированных процессов.
- Аномальную активность системного вызова splice() в сочетании с криптографическими операциями.
- Изменения в поведении setuid-бинарников, например, неожиданное выполнение команд с повышенными привилегиями.
Также важно регулярно проверять журналы ядра (dmesg) на наличие сообщений об ошибках, связанных с algif_aead, и использовать инструменты мониторинга целостности файлов, хотя они не помогут при атаке на page cache.
Практические шаги по защите и митигации
Первоочередная мера — установка обновлений ядра от вашего дистрибутива. Canonical, Red Hat, SUSE и другие вендоры выпустили исправления для CVE-2026-31431. Например, Ubuntu опубликовала обновления для ядер 6.8, 6.14 и 6.17 в различных версиях LTS. Рекомендуется немедленно применить эти обновления, особенно на системах, доступных из интернета или используемых в мультитенантных средах.
Если немедленное обновление невозможно, временной мерой может быть блокировка создания AF_ALG-сокетов. Это можно сделать с помощью модуля безопасности, такого как SELinux или AppArmor, или путём ограничения доступа к устройству /dev/crypto. Однако такая мера может нарушить работу легитимных приложений, использующих аппаратное шифрование.
Дополнительные рекомендации:
- Проведите инвентаризацию всех систем и определите, какие из них уязвимы.
- Приоритизируйте обновление систем, где выполняются непроверенные скрипты (CI/CD) или контейнеры.
- В Kubernetes используйте политики безопасности подов (Pod Security Policies), чтобы ограничить возможности контейнеров.
- Рассмотрите возможность быстрого пересоздания узлов (node recycling) после обнаружения компрометации.
- Используйте решения для управления уязвимостями, такие как Microsoft Defender Vulnerability Management, для автоматического выявления уязвимых устройств.
Важно помнить, что уязвимость не требует прав root для эксплуатации, поэтому даже контейнеры с ограниченными привилегиями представляют риск. Любой доступ к системе должен рассматриваться как потенциальная точка входа.
Сравнение с другими уязвимостями ядра и уроки для безопасности
CVE-2026-31431 напоминает другие известные уязвимости ядра Linux, такие как Dirty Pipe (CVE-2022-0847) и Dirty COW (CVE-2016-5195), которые также позволяли локальным пользователям повышать привилегии через манипуляции с памятью. Однако Copy Fail имеет несколько отличительных особенностей.
Во-первых, эксплуатация детерминирована и не требует гонок, что делает её более надёжной и простой в реализации. Во-вторых, атака на page cache позволяет модифицировать исполняемые файлы без изменения на диске, что затрудняет обнаружение. В-третьих, уязвимость затрагивает криптографический модуль, который обычно считается безопасным, что подчёркивает важность аудита даже доверенных компонентов.
Уроки для администраторов:
- Регулярно обновляйте ядра, даже если нет явных признаков угрозы.
- Используйте автоматические системы управления патчами.
- Внедряйте мониторинг подозрительной активности на уровне ядра.
- Ограничивайте доступ к системным вызовам и интерфейсам, которые не требуются для работы приложений.
Уязвимость также подчёркивает важность сотрудничества между вендорами и исследователями: быстрое реагирование Microsoft, Canonical и других компаний позволило выпустить исправления в течение нескольких дней после публикации PoC.
Роль VPN и безопасного интернета в контексте CVE-2026-31431
Хотя CVE-2026-31431 является локальной уязвимостью, она имеет косвенное отношение к безопасному интернету и VPN. VPN-сервисы часто работают на Linux-серверах, и если эти серверы уязвимы, злоумышленник, получивший доступ к одному из них, может скомпрометировать всю VPN-инфраструктуру.
Кроме того, многие VPN-клиенты используют криптографические библиотеки, которые могут взаимодействовать с AF_ALG. Если на клиентской системе установлено уязвимое ядро, атакующий с локальным доступом может использовать Copy Fail для повышения привилегий и перехвата VPN-трафика или изменения настроек безопасности.
Для пользователей VPN важно:
- Убедиться, что их операционная система обновлена, включая ядро.
- Использовать VPN-провайдеров, которые следят за безопасностью своих серверов и быстро применяют патчи.
- Не запускать непроверенные скрипты на системах, где установлен VPN-клиент.
В контексте безопасного интернета CVE-2026-31431 напоминает, что даже самые защищённые каналы связи могут быть скомпрометированы через уязвимости на конечных точках. Поэтому комплексная безопасность должна включать не только шифрование трафика, но и регулярное обновление всех компонентов системы.
Вопросы и ответы
Что такое CVE-2026-31431 и как она влияет на систему?
CVE-2026-31431 — это уязвимость локального повышения привилегий в ядре Linux, затрагивающая криптографический модуль algif_aead. Она позволяет непривилегированному пользователю выполнить контролируемую запись в память ядра, что может привести к получению root-доступа. Уязвимость также может быть использована для выхода из контейнера и компрометации всей системы.
Какие дистрибутивы Linux затронуты уязвимостью Copy Fail?
Уязвимость затрагивает практически все основные дистрибутивы, включая Ubuntu, Debian, Red Hat Enterprise Linux, SUSE, Amazon Linux, Fedora и Arch Linux. Уязвимыми считаются ядра, выпущенные с 2017 года до момента установки исправлений. Конкретные версии можно проверить в базах данных уязвимостей вашего дистрибутива.
Как защититься от CVE-2026-31431, если обновление ядра невозможно?
Если немедленное обновление невозможно, можно временно заблокировать создание AF_ALG-сокетов с помощью SELinux или AppArmor. Также рекомендуется ограничить доступ к системным вызовам splice() для непривилегированных пользователей. Однако эти меры могут нарушить работу легитимных приложений, поэтому обновление ядра остаётся приоритетным.
Может ли уязвимость быть использована удалённо?
Нет, CVE-2026-31431 не является удалённой уязвимостью. Для эксплуатации требуется локальный доступ к системе как непривилегированному пользователю. Однако она может быть объединена с другими векторами атак, такими как SSH-доступ или выполнение кода в контейнере, что делает её опасной в облачных средах.
Как обнаружить признаки эксплуатации CVE-2026-31431?
Признаки эксплуатации включают необычные вызовы AF_ALG-сокетов из непривилегированных процессов, аномальную активность splice() и изменения в поведении setuid-бинарников. Microsoft Defender XDR предоставляет детекторы, такие как Exploit:Linux/CopyFailExpDl.A и Behavior:Linux/CVE-2026-31431. Также рекомендуется мониторить журналы ядра.
Какие меры следует предпринять в Kubernetes-среде для защиты от Copy Fail?
В Kubernetes необходимо обновить ядра на всех узлах кластера, использовать политики безопасности подов для ограничения возможностей контейнеров и внедрить мониторинг подозрительной активности. Также важно быстро пересоздавать узлы после обнаружения компрометации, чтобы минимизировать последствия.
Почему уязвимость называется Copy Fail и как она связана с криптографией?
Название Copy Fail отражает ошибку в логике копирования данных при выполнении криптографических операций "на месте" в модуле algif_aead. Из-за этой ошибки аутентификационные данные копировались некорректно, что позволяло злоумышленнику перезаписывать память ядра. Уязвимость связана с криптографией, поскольку AF_ALG используется для шифрования и аутентификации данных.