Уязвимость Copy Fail в ядре Linux: любой локальный пользователь может получить root-доступ за секунды

information security

Компания Theori, специализирующаяся на кибербезопасности, публично раскрыла информацию о критической уязвимости в ядре Linux. Проблема получила идентификатор CVE-2026-31431 и название Copy Fail. Она представляет собой локальную уязвимость повышения привилегий, которая затрагивает все основные дистрибутивы, выпущенные начиная с 2017 года. Вместе с уведомлением исследователи опубликовали рабочий эксплойт - скрипт на Python размером всего 732 байта.

Описание

Что делает Copy Fail особенно опасной? Любой пользователь, имеющий локальную учётную запись на уязвимой системе, может за несколько секунд получить полный административный контроль над машиной. Для этого не нужен пароль. Не требуется искать ошибки конфигурации. Атака не оставляет следов на диске. Достаточно запустить один короткий скрипт, использующий только стандартные библиотеки Python. Эксплойт работает стабильно с первой попытки, без гонок и повторных запусков, и одинаково успешно выполняется во всех основных дистрибутивах Linux, выпущенных за последние восемь лет.

Эксперты отмечают, что масштаб угрозы колоссален. Linux лежит в основе большей части серверной инфраструктуры мира, облачных вычислений и корпоративных рабочих нагрузок. Высокий риск там, где на одном ядре работают несколько пользователей или изолированных задач. Это многопользовательские серверы, конвейеры непрерывной интеграции и доставки (CI/CD), выполняющие непроверенный код, а также кластеры контейнеров. Если злоумышленник получает начальную точку входа на Linux-систему, он может мгновенно использовать Copy Fail для захвата полного контроля над хостом.

Уязвимость затрагивает версии ядра Linux с 4.14 по 7.0-rc. Патчи уже выпущены, но на момент раскрытия они ещё не были установлены во всех дистрибутивах. В списке подтверждённых затронутых систем - Ubuntu 24.04 LTS, Amazon Linux 2023, Red Hat Enterprise Linux 14.3 и SUSE Linux Enterprise Server 16. Исследователи из Theori также подтвердили, что при помощи того же примитива возможен побег из контейнера Kubernetes. Соответствующие материалы будут опубликованы во второй части отчёта.

Корень проблемы кроется в логической ошибке в криптографическом шаблоне под названием authencesn, который доступен любому непривилегированному пользователю через интерфейс AF_ALG (семейство сокетов для доступа к алгоритмам шифрования в ядре). Комбинируя сокет AF_ALG, привязанный к шаблону authencesn(hmac(sha256),cbc(aes)), с системными вызовами splice() и sendmsg(), атакующий может выполнить контролируемую запись четырёх байт в кеш страниц любого файла, доступного для чтения. Это могут быть, например, исполняемые файлы с установленным битом setuid (позволяет запускать программу с правами владельца), такие как /usr/bin/su.

Механизм записи обходит обычный путь записи через виртуальную файловую систему VFS. Ядро не помечает изменённую страницу как "грязную", поэтому файл на диске остаётся нетронутым. Стандартные средства проверки целостности, которые сравнивают контрольные суммы на диске, не обнаружат модификации. Изменяется только кеш страниц в памяти, но именно его ядро использует при загрузке и выполнении двоичных файлов. Таким образом, атакующему достаточно один раз запустить скрипт, и система загрузит модифицированную версию программы из памяти.

Исследовательская платформа ReversingLabs сообщила о наблюдении образцов Copy Fail в день раскрытия. Специалисты использовали систему Spectra Intelligence и зафиксировали оригинальный скрипт Theori - copy_fail_exp.py размером 732 байта с SHA1 83194d178f4b9c6fcdfaed0ea4ae3ec2ca3db6f4. Он появился 29 апреля, а затем, в течение 30 апреля, были обнаружены дополнительные копии с мелкими отличиями. Всего найдено четыре функциональных файла на Python, соответствующих правилам поиска YARA (инструмент для сигнатурного обнаружения вредоносного кода). Различия между ними минимальны: перевод строки LF или CRLF, наличие или отсутствие строки shebang (указывает интерпретатор), незначительные пробелы. Эти изменения не влияют на выполнение, но демонстрируют ограниченность обнаружения по хешам - один и тот же функциональный код даёт разные хеши при каждом копировании, в то время как ключевые строки эксплойта остаются неизменными.

Именно поэтому специалисты ReversingLabs разработали многоуровневый набор правил YARA. Первый уровень нацелен на точное совпадение исходного скрипта, второй охватывает вариации, третий обнаруживает сам примитив атаки. Ключевым якорем для всех правил служит строка authencesn(hmac(sha256),cbc(aes)). Это жёсткое функциональное ограничение эксплойта - заменить её без потери примитива записи в кеш страниц невозможно. Данная сигнатура остаётся стабильной независимо от обфускации, переименования или перепаковки скрипта.

Для администраторов и специалистов по информационной безопасности сейчас критически важно установить патч, исправляющий ошибку, как только он появится в используемом дистрибутиве. До установки обновления следует временно ограничить доступ локальных пользователей к недоверенным системам, а также усилить мониторинг на предмет аномальной активности, связанной с вызовами AF_ALG и splice. Применение правил YARA, опубликованных ReversingLabs, поможет выявить попытки эксплуатации ещё до того, как атакующий успеет закрепиться в системе. Учитывая простоту и надёжность Copy Fail, каждая незащищённая машина с Linux может стать лёгкой добычей.

Индикаторы компрометации

SHA1

  • 047ac05d0cb9c2ee3fc479339210caf36c0f171d
  • 11596758ecc621a946c4f262a6d49ff3b45887c9
  • 14cbc8ac13b7378a040fd12dcb99f6810c0253ce
  • 220a249f8791d060a2f33d59f52fe281f6598dcc
  • 28d304df5855632d5e7b2801d1092460da7dff22
  • 39e8878922b183047d9be0da04402b23da289405
  • 3be49c5ddb11ad62610bdc9f2389f842b753cd53
  • 3f866ee920940b388ddd70b7a8fbf7462f1f5bf2
  • 5878d816b2772285c79801a0706740d8bda469f4
  • 6bc9a09cf2753d6d2325f9db18dcb48503cb0ae9
  • 81e9ca6d22f0323eec32c6254dd84cd437246a84
  • 83194d178f4b9c6fcdfaed0ea4ae3ec2ca3db6f4
  • 86d25436e074e8f999a3bab9d3f3a25f7e969073
  • 87915e67782ebd34d91a2b557b22eccf0f6e3de1
  • 9490c835a03ad3b874f978a4c7a18120bf0f284d
  • 9d387ad2b64da532867f60a97506ce6daec89c51
  • a4d4c899a00f948016279448356c49e8454a09f7
  • dbf2e97d93ed025cf8ab782f0834ffb272f38833
  • de824c48ca8e2d41dcbb99468148370b1f2c1497
  • f2fe4dc6b1823231414b941de723e225268c4f81
  • fb35dbd2973d96d0899dc6318fc2f3cdb080fac2

SHA256

  • 01881b737c106a6d84e8e12cb417671b5f612f13adcb6cb1edd8a46704ddd252
  • 1ce3dc778637cd78e20f115fe1e47debf16d6af538daf95dff14243111779e28
  • 30b0f5b5a054c4df65b48ca792863bf7054b4d793f15f57163792ba6c2b151ae
  • 32a2bd2c5f64b05d5db729a42633b792e00e56dd3e4644d21a6e45273b235dbd
  • 3c5ec61632d0699e048d8428461c4d65f89988a370396db2f070f63ebbf9dbae
  • 44900c631391f0d60eb6d271b8374a08dc1d9be76e403390d27a91ed5f179be9
  • 60b1645b1f3ad7f6391243d58a2a31f974e1599364564a69594b96ba21abe375
  • 624d27965a570bc891a87bd62dab28fe401b145e1cbeea6caebcc53a7689bd9d
  • 7ef953069578beef7daf2d984d16351b0c60c6adcbf8062ffbfaac6ce944c1da
  • 84f44c4a699e025ceff588028c9e041b213d6198fc7fa40b7d24ca6ebbf9b305
  • 8813ad1310ed2e1c1e58cdef0169bef5f38f58b740bd170a370d4baf03dfde99
  • 989854c46208c6c1304e2d7038ecabea0cf19f39e6fda3d28576837c22961f21
  • a567d09b15f6e4440e70c9f2aa8edec8ed59f53301952df05c719aa3911687f9
  • b35ddf2ecd035faf9b38af62779502b7fa19037115054a00ed8d5327a3f2ec03
  • c6dd71f1f41c5d6fca0d3261a5ae9e49d01d6755c62d487e9a0cd7de933d6f64
  • d401e7d1c00605749d6c617ace73ab20a762b72e41c2e1590331596e38219a61
  • d86251e90db613329d4be9cf0355caa69ae88f7416be82a6880b8f9f7b7e691b
  • e097ce64b1bf0933e69c9d342038fb52f4b278da62b265daa3adf22c00658a9c
  • ed0018054d8e7058b299b7591bc32364dbc439c25be4067450189b1a73033c67
  • f6dda491e85981feb1c0900f2b16f556e7aa2ca79b569b1180549cae58c22f98
  • fd27a1d93dfc6afb3f705421449c87069595282c91e279660cb06c384d2acaea

YARA

Комментарии: 0