LINUX.ORG.RU

В Linux закрыта уязвимость ssh-keysign-pwn, позволяющая локальным пользователям читать root-файлы

 ssh-keysign-pwn, , ,


1

1

В ядре Linux исправлена уязвимость, получившая неофициальное название ssh-keysign-pwn. Проблема позволяет локальному непривилегированному пользователю читать файлы, которые должны быть доступны только root, включая приватные SSH host-ключи и, в отдельных сценариях, /etc/shadow. На момент публикации отдельный CVE для проблемы ещё не был назначен.

Несмотря на название, речь идёт не об ошибке в OpenSSH как сетевом сервере sshd, а о дефекте в логике ядра Linux, связанной с проверками ptrace и доступом к файловым дескрипторам другого процесса через pidfd_getfd(2). OpenSSH-утилита ssh-keysign оказалась одним из удобных примеров эксплуатации, потому что она работает с приватными host-ключами, которые обычно принадлежат root и недоступны обычным пользователям.

Суть ошибки в том, что функция __ptrace_may_access() некорректно обрабатывала состояние процесса, у которого уже исчезла структура памяти mm, но ещё оставались открытые файловые дескрипторы. Во время завершения процесса ядро вызывает exit_mm() раньше, чем закрывает,,, файлы через exit_files(). В этот короткий промежуток процесс уже выглядит как не имеющий обычного пользовательского адресного пространства, но его открытые файлы ещё существуют. Из-за этого проверка «dumpable»-состояния могла обходиться, а pidfd_getfd() — получить доступ к чужому файловому дескриптору при совпадающем UID.

Практический сценарий строится вокруг setuid-программ, которые сначала открывают чувствительный файл с правами root, затем сбрасывают привилегии и завершаются, всё ещё имея открытый дескриптор. В опубликованном описании в качестве примера указан ssh-keysign: он открывает /etc/ssh/ssh_host_{ecdsa,ed25519,rsa}_key, после чего сбрасывает права и может завершиться, если EnableSSHKeysign отключён. Эти ключи должны быть доступны только root, поскольку используются для host-based аутентификации.

Второй пример — chage, который может открывать /etc/shadow, затем сбрасывать эффективные права и завершаться. В результате атака не обязательно сразу даёт shell с root-правами, но позволяет получить содержимое файлов, которое обычно считается критически закрытым. Утечка /etc/shadow опасна возможностью последующего офлайн-подбора паролей, а утечка приватных SSH host-ключей — риском подмены хоста или проведения атак на доверенные SSH-сценарии.

Исправление уже принято в основную ветку Linux. Коммит 31e62c2ebbfd с заголовком ptrace: slightly saner 'get_dumpable()' logic меняет поведение проверки dumpability: ядро теперь сохраняет состояние user_dumpable при исчезновении mm и требует корректную проверку CAP_SYS_PTRACE для обхода. Патч затрагивает include/linux/sched.h, kernel/exit.c и kernel/ptrace.c.

Уязвимость была сообщена Qualys и исправлена Линусом Торвальдсом 14 мая 2026 года. Phoronix отмечает, что на момент публикации проблема затрагивала все выпуски ядра Linux вплоть до актуального состояния mainline-дерева до внесения исправления. Автор PoC также указывает, что уязвимыми являются ядра до коммита 31e62c2ebbfd, включая стабильные ветки по состоянию на 14 мая.

Отдельно важно, что для эксплуатации не требуется подгружать специфические модули ядра, как в ряде недавних LPE-уязвимостей. Достаточно локального непривилегированного доступа к системе и наличия подходящего привилегированного helper-процесса. Разработчик Debian Даниэль Бауманн отметил, что эта проблема должна устраняться обновлением ядра и последующей перезагрузкой в исправленное ядро.

В опубликованном репозитории с демонстрацией заявлена проверка на Raspberry Pi OS Bookworm с ядром 6.12.75, Debian 13, Ubuntu 22.04, Ubuntu 24.04, Ubuntu 26.04, Arch и CentOS 9. К этому списку стоит относиться как к данным автора PoC, а не как к исчерпывающему перечню: поскольку ошибка находится в общей логике ядра, фактический охват зависит от версии ядра и наличия backport-исправления у конкретного дистрибутива.

Для администраторов основная рекомендация проста: установить обновлённый пакет ядра от своего дистрибутива и перезагрузить систему. Если есть основания считать, что на машине уже был локальный непривилегированный доступ злоумышленника, после обновления стоит дополнительно рассмотреть ротацию SSH host-ключей и проверку /etc/shadow/учётных записей, поскольку сама уязвимость связана именно с чтением чувствительных файлов, а не только с абстрактным обходом проверки доступа.

В Debian уже началась работа по переносу исправления: Бауманн сообщил о cherry-pick upstream-коммита в trixie-fastforward-backports и об отправке merge request для Debian sid. В merge request прямо указано, что переносится коммит 31e62c2 для исправления ptrace-логики dumpability, позволяющей читать root-файлы непривилегированному пользователю.

>>> Источник

★★★★★

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

Ну что, кожаные мешки, настал ваш час. ИИ выведет вас на чистую воду с вашим говнолинуксом. А я ведь предупреждал, что ваш линукс - говно, объяснял, почему, объяснял, как сделать лучше и даже ковырял пример потенциально сделанного лучше. Но вас всё устраивало. Теперь будем страдать и умирать от этих дыр, которые ИИ печёт как пирожки - читаю новости на ЛОРе и вижу кратный прирост ужасных дыр. Что там Торвальдс писал про мастурбирующих обезьян, помните?

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

Я лично не пробовал, а вот искать уязвимость в программе на Си с помощью ИИ я пробовал, ну как минимум до конфига с падением при подключении клиента дело дошло довольно быстро и я не полностью уследил за мыслью машины при этом. Это не особо сложно, не требует чрезмерно дорогого оборудования и в общем-то доступно более-менее любому разработчику, не нужно иметь особо высокую квалификацию. Касаемо машкода - ChatGPT кое-что знает, например, может расшифровывать мнемоники команд intel, да и ARM. И ничто не мешает тем, кто владеет инструментами обучения, обучить его на машкоде получше.

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

Так это как раз позитив. Всех, кто не пропатчится - отымеют. Разве это не забавно?

Так дыры появляются быстрее патчей, не то что пропатченных ядер. А патчи ещё и приносят новые дыры. Что там про «Объявлена неделя …»

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

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

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

Конечно, главная проблема - это люди, которые это делают, и их выборы. Торвальдс и Си, к примеру. Ну и там всякое АНБ, которое вроде и не при чём.

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

Объявлена неделя …

Что то оптимизмом сильно отдает... Побуду то ли Реалистом то ли Пессимистом и предполагаю минимум о «полугодовой» подобной реальности, причем частых сообщений...
Так что uptime больше недели будет фантастикой казаться =)

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

Да, конечно, может. Если это не может стоковый ChatGPT, то это может дообученная модель. Да, это труднее, т.к. исходный код более понятен. Я даже не буду с тобой об этом спорить. Тут скорее вопрос, что нужно сделать, чтобы не потонуть. Мы все зависим от цифровой инфраструктуры очень сильно, в т.ч. и на работе. И при том, если кто-то нашёл уязвимость, он совершенно не обязательно побежит всем об этом рассказывать. Он может вместо этого пойти и применить её в мирных целях. И такие люди есть, и их достаточно много. И они могут применить это против любого из нас и против всех нас, вместе взятых, и они применят. Это вопрос времени, притом небольшого времени.

den73 ★★★★★
()

Помогло бы переписывание на rust? Что-то сомневаюсь, ошибка тут логическая

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

Если куда-то и пора валить, то в тайгу.

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

Стадия отрицания. Агент может запустить gdb, поставить брекпойнты и исследовать программу так же, как человек.

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

Надо валить на BSD.

Особенно на смартфонах.

Блин … BSD на смартфоне … что-то напоминает…

Это что? яблоки покупать?

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

А потому стоит просто держать запас наличных в кармане, не ездить на а/м с кучей электроники, лучше на дедушкином мотоцикле с коляской. На самолётах не летать, на поездах не ездить. И всё будет норм.

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

Ну как хочешь. Как было в том анекдоте, где два мужика бежали от медведя и один из них начал переобуваться: «мне не нужно убегать от медведя, мне достаточно убежать от тебя»

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

Конечно, хочу. Это, на самом деле, практическая задача. Дизассемблер старых программ и подпрограмм и перевод этого в разумный, годный к использованию текст. Он делается, но _очень редко и сложно, _очень много ручной работы и работы мозга, только самые фанатичные могут, результат редко совпадает с ожиданием. Современные - блоатварь на ипучие порядки, никто и ничто не справится.

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

Я не знаю, может быть ты просто начало этого фильма пропустил. Я, пожалуй много болтаю, т.к. я всё же работаю в ИБ, но тем не менее новость была общедоступной. Как чел с помощью простого ChatGPT за 2000 долларов нашёл то ли многолетнюю уязвимость в линуксе, то ли дыру в хроме, в движке JS, связанную с памятью, и эксплоит разработал. Эта новость была не более 2 месяцев назад. Теперь просто это, видимо, поставили на поток, поэтому эти новости стали появляться по 2 в неделю. Потому что это новая золотая жила, ну или новый ящик Пандоры. А кожаным мешкам только дай покопаться у Пандоры на чердаке. У кого есть локальные мощности, тому и 2000 долларов не нужно платить. А дальше включай логику. Если тем или иным образом ИИ резко усилил возможности по нахождению уязвимостей, то это не зависит от конкретной технологии. На чём обучили - с тем и справится, лучше всех кожаных мешков вместе взятых.

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

Просто сказка про 1000 глаз - сказка. Нет никаких тысячи глаз, никто эти коды кроме автора не видел. ИИ - первый, кто по ним прошёлся.

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

Ну это не совсем уж сказка, кто-то да прошёлся, но чтобы что-то найти, нужно не просто пройтись, а хорошо пройтись. Просто ИИ резко это удешевил. Допустим, в 10 раз. Точный коэффициент не могу сказать. Контекст в миллион токенов - это устрашающий объём информации, которая одновременно содержится в «сознании» ИИ, так что коэффициент может быть очень большим. Но галлюцинации это подрывают, поэтому он может быть и маленьким. Но даже если он равен двум, то это уже прорыв.

den73 ★★★★★
()
Последнее исправление: den73 (всего исправлений: 2)
Ответ на: комментарий от hibou

Авторы свои модели предпочитают обкатывать на чём-то максимально популярном сперва. Это даёт им громкие заголовки и в целом хороший PR. Наиграются с Линуксом и особо популярными либами вроде курла, возьмутся и за BSD. Так, что я тут полностью согасен с комментарием выше (про улицу и праздник).

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

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

О! Тут есть целая бригада чуваков, которая свято верит, что это всё уже давным давно решённая задача для программ масштаба MS-DOS:

Ну код то в целом и так у всех был, любой дизассемблер его выдаёт, и этот листинг не сильно отличается от настоящего исходника, кроме комментариев которых там конечно не будет.

Они щас тебе всё расскажут и объяснят, где ты не прав.

r--r--r--
()
Ответ на: комментарий от r--r--r--

Видимо, я не совсем в теме. А gdb это уже тоже не может? Расшифровать ту команду, на которой PC или как он там называется.

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

То этого достаточно, чтобы искать уязвимости и в машкоде. Хотя да, может быть намного сложнее, чем на уровне исходников. Так же, как и для человека.

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

Во-1, не очень понятно, зачем gdb должен что-то куда-то переводить для поиска уязвимостей.
Во-2, в этом посте есть конкретный процитированный тезис, и не вижу прямой связи с поиском уязвимостей.

r--r--r--
()
Ответ на: комментарий от r--r--r--

Затем, что поиск уязвимостей - это не чтение машиной кода, это работа коллектива агентов. Им даёшь директорию (а желательно, целый компьютер с полным доступом) и они начинают сочетать чтение и постановку экспериментов, т.е. действуют так же, как и человек. В т.ч. они могут создать модифицированные версии программы и проверять гипотезы, а также отлаживаться принтами и брекпойнтами. gdb как консольный инструмент прекрасно подходит, например, можно ходить по шагам и видеть каждую отдельную команду. Про машкод я это не пробовал, а вот для изменения программ на node.js я лично это успешно проделывал, точнее сказать, сидел и смотрел, что делает машина. И это можно делать на локальном оборудовании, на карточке, допустим, за 100 тыр. И код всех агентских систем тоже доступен - просто бери любой Вася и ломай линукс на здоровье.

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

Им даёшь директорию (а желательно, целый компьютер с полным доступом)

Предлагаю дать им сразу целое здание. Пусть работают на благо общества! Можно даже специальное министерство для них сделать - МинИИ, ну и агентам разные ранги присваивать - "действительный статский агент 3-его класса". Мне кажется, норм идея.

r--r--r--
()
Ответ на: комментарий от r--r--r--

ты не здание давай, здание они сами себе купят, нужны ассигнования, ассигнации, понимаешь?

ну и звания придумают, как угодно ИИ-бойарам.

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

Ну я не понимаю иронии. Наверное, ЛОР - это просто сборище замшелых старпёров, которые отвергают новое. Но есть и миллионы молодых, агрессивных, с пластичным мозгом. Которые с ИИ на ты. Мне вроде и жалко было это писать, т.к. получается, что я тут слегка впереди всех и получается деньгами тут сорю, а сам-то даже ещё не успел на этом ни миллиона заработать. Но я знаю, что эти молодые есть, которые ещё на год-два впереди меня по освоению ИИ. Так что я никакого секрета не раскрываю. То, что молодые снесут с лица земли старпёров - это норма, в природе всегда так. А вот то, что они заодно снесут и линукс - это уже проблема. Ну у меня допустим нет банковских приложений на Андроиде и наличные стараюсь иметь хоть в каком-то количестве, а как остальные будут жить - не знаю.

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

А вот то, что они заодно снесут и линукс - это уже проблема.

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

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

Ну например, потому что тысячи глаз теперь реально ищут эти уязвимости, но из них только 500 докладывают о них авторам кода. Соответственно, будет вал атак на уже развёрнутые устройства, например, маршрутизаторы или смартфоны. Во-вторых, начинается интенсивное изменение кода, а это означает, что стабильность кода снизится и возникнут новые ошибки там, где их ещё не было (уже не обязательно уязвимости). Ну ладно, может и не снесут. На самом деле, ломать - не строить. ИИ хорош для поиска уязвимостей, потому что это в общем-то творческая задача - уязвимостей - то много, нашёл одну и молодец. Кроме того, это задача с хорошей обратной связью. Пошёл не в ту сторону - сразу узнал об этом, вернулся и переделываешь. А вот обратная задача - написать код без уязвимостей - гораздо труднее и пока что она ИИ не по зубам (и неизвестно, когда будет). Поэтому в соревновании брони и снаряда наступает нарушение паритета. И самое главное, по моей теории заговора бекдоры в линуксе быть должны обязательно и их заносят сами разработчики. Как они будут теперь выкручиваться я не знаю, впрочем мне это не так и интересно. На самом деле может быть и не снесут прямо вот совсем, но пошатают уж точно. Посмотрим.

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

Ну если вкратце, то по-моему это не «снос», а просто «стресс». Ну да, будут атаки, кто-то пострадает, но не думаю, что это приведёт прям к катастрофе или сносу чего-либо.

CrX ★★★★★
()

Заголовок вводит в заблуждение - ssh-keysign это просто РоС, который под руку подвернулся: уязвимость в ядре и потенциально затрагивает вообще все программы с pidfd_getfd()

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

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

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

и даже ковырял пример потенциально сделанного лучше

Что там Торвальдс писал про мастурбирующих обезьян

Откуда он про тебя знает?!

zabbal ★★★★☆
()

О! На ЛОРе теперь уязвимости публикуют! Помнится лет 100 назад я от модератора «Ай-яй-яй» получил за такие новости. :)

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

А вот то, что они заодно снесут и линукс - это уже проблема

Тут нужно понимать философию ПО как феномена в хозяйстве сапиенса. Я уже писал об этом на ЛОРе, некоторые задатки мыслей. Если применить их к текущей ситуации, просто более интенсивно будут выгребаться говна в Линуксе. А старые непатченные устройства на мусорку. Чем дешевле и быстрее программировать, тем говённее продукт. Именно поэтому программирование вообще появилось - чтобы создавать больше говна. Там где программа должна быть качественным говном, она относительно маленькая и написана на языках типа SPARK, на которых мало кто захочет программировать попсовое говно, за которое в основном и платят зарплату.

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

Просто поймите, что мы - разновидность серунов и ассенизаторов. Кто-то из нас больше серун, кто-то больше ассенизатор, но от этого суть нашей деятельности не меняется. Поймите и примите как должное.

seiken ★★★★★
()

речь идёт не об ошибке в OpenSSH как сетевом сервере sshd, а о дефекте в логике ядра Linux

тут тоже разбираться надо, не закладка ли это была

superuser ★★★★☆
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.