The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Уязвимость в SSH-сервере из Erlang/OTP, допускающая удалённое выполнение кода

18.04.2025 10:09

В библиотеке ssh, входящей в состав инструментария Erlang/OTP, выявлена уязвимость (CVE-2025-32433), позволяющая удалённо без прохождения аутентификации выполнить свой код на SSH-сервере, созданном с использованием уязвимой библиотеки. Проблема присвоен критический уровень опасности (10 из 10).

Один из исследователей безопасности уже подготовил рабочий эксплоит для выполнения кода на уязвимых SSH-серверах. Примечательно, что по словам исследователя код был создан с использованием AI-ассистентов GPT-4, Cursor и Sonnet на основе анализа изменения с исправлением уязвимости, включающего тест для проверки устранения проблемы.

Библиотека от проекта Erlang/OTP предоставляет готовые реализации клиента и сервера SSH и SFTP, поддерживающих протокол SSH 2.0. Отличить проблемные SSH-серверы можно по выводу заголовка "SSH-2.0-Erlang/версия". SSH-серверы на базе Erlang/OTP используются в специализированных системах, например, на IoT- и устройствах для edge-вычислений, а также в качестве отладочного инструмента - Erlang позволяет легко включить SSH-сервер для удалённой отладки своих приложений (предполагается, что подобная отладочная возможность могла быть оставлена включённой во многих проектах, написанных на Erlang). Проблема также проявляется в инструментарии Elixir (реализован поверх Erlang) и во фреймворке Phoenix на его основе, но SSH-сервер в Phoenix по умолчанию не принимает запросы из внешних сетей.

Уязвимость вызвана ошибкой в коде разбора сообщений, из-за которой сообщения SSH_MSG_CHANNEL_REQUEST, допускающие выполнение команды "exec", обрабатывались на стадии до прохождения аутентификации. Пример кода из эксплоита:


    command = 'file:write_file("/lab.txt", <<"pwned">>).'
    return (
        b"\x62"  # SSH_MSG_CHANNEL_REQUEST
        + struct.pack(">I", channel_id)
        + string_payload("exec")
        + b"\x01"  # want_reply = true
        + string_payload(command)
    )

Уязвимость устранена в выпусках Erlang/OTP-27.3.3, 26.2.5.11 и 25.3.2.20. Проследить за устранением уязвимости в дистрибутивах можно на следующих страницах: Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Arch, FreeBSD.

  1. Главная ссылка к новости (https://www.openwall.com/lists...)
  2. OpenNews: Уязвимость в libssh, приводящая к переполнению буфера
  3. OpenNews: Уязвимость в OpenSSH, позволяющая удалённо выполнить код с правами root на серверах с Glibc
  4. OpenNews: Уязвимость в поставляемом во FreeBSD варианте OpenSSH, допускающая удалённое выполнение кода
  5. OpenNews: Mayhem - атака, искажающая биты в памяти для обхода аутентификации в sudo и OpenSSH
  6. OpenNews: Удалённо эксплуатируемая уязвимость в OpenSSH ssh-agent
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/63099-ssh
Ключевые слова: ssh, erlang
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (35) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.4, vantoo (ok), 10:51, 18/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +11 +/
    На IoT, конечно, пофиксят дыру очень быстро (нет).
     
     
  • 2.52, Аноним (-), 16:27, 18/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > На IoT, конечно, пофиксят дыру очень быстро (нет).

    В каком, нахрен IoT этот шланг вообще нашли? Очередной вулн где при всем его 10 из 10 долбануть почти нечего. Какой-то кучке телефонистов, конечно, прилетит.

     

  • 1.38, Аноним (38), 13:17, 18/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Эрланг довольно нишевый инструмент. Здесь кичатся матаном, но чаще это защита нишевости ("Мы не как все, у нас серьёзные технологии!"). Но по факту можно годами писать на Эрланге, не зная никакой сложной математики (если не лезть в distributed algorithms, но это проблема любой distributed-системы, хоть на Go, хоть на C++). Elixir вообще позиционируется как "дружелюбный" язык - и там те же возможности, но с приятным синтаксисом. Сложность Эрланга преувеличена - она не в математике, а в смене парадигмы.
     
     
  • 2.39, Аноним (39), 13:59, 18/04/2025 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Эрланг — это не матан, эрланг — это перекладывание пакетов в сложных сетях телекома.
     
     
  • 3.74, эксперт по всему (?), 23:30, 18/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    никто не перекидывает пакеты эрлангом, его используют для обработки сигнализационного трафика, которого мало
     
  • 2.41, Аноним (41), 14:31, 18/04/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Эликсир эдакая замена ноде. И в плане производительности тоже. Зато скалируется хорошо. Но всё равно весьма специфично, большинство приложений не микросервисы. Матан это разве не про хаскел? Собственно, популярность хаскела вполне отражает востребованность подобного.
     
     
  • 3.48, Аноним (48), 15:28, 18/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >Матан это разве не про хаскел?

    Нет, это заблуждение

     
     
  • 4.49, Аноним (41), 15:40, 18/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >>Матан это разве не про хаскел?
    > Нет, это заблуждение

    Мне сложно представить, кому ещё могут понадобиться функторы и монады. Как результат, единственное применение у ЯП это DSL.

    В таком случае, мне не понятно, почему любая функциональщина (вроде эрланга и эликсира) должна ассоциироваться с математикой. С ней может ассоциироваться разве что вольфрам. Ну и фортран при _очень_ большом желании, больше с ним делать нечего.

     
     
  • 5.54, Аноним (48), 16:30, 18/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >почему любая функциональщина должна ассоциироваться с математикой

    Так она и не должна, но кто-то это придумал и повторяет упорно.

     
  • 5.69, Аноним (-), 18:54, 18/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > В таком случае, мне не понятно, почему любая функциональщина (вроде эрланга и
    > эликсира) должна ассоциироваться с математикой.

    Наверное потому что это продвигают обычно - отбитые на всю бошку математики, которым абстракции покруче дай, хлебом не корми. То что потом эти какахи майнтайнить вообще никто не хочет, ибо раскуривать полет мысли убер-гения всем просто лениво - их не парит. Зато это парит всех остальных - и получается характерный проект, где все эти навороты фигачит 1 человек. А когда ему надоедает, или на него падает автобус, или что там блин еще - проект как раз и оказывается заброшкой. Навечно.

     
     
  • 6.83, Пустотеев (ok), 15:49, 19/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > ... которым абстракции покруче дай ...
    > ... то что потом эти какахи майнтайнить вообще никто не хочет ...

    Забавно читать такое именно в этом топике.

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

    А вот хотя бы разделили бы код на две части - до аутентификации и после, усложнили бы, но уязвимость вообще бы не возникла.

     
     
  • 7.88, Аноним (-), 23:14, 21/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Потому что конкретно эта бага как-раз в куске, который делали как проще,
    > избегали переусложнения. Но оказывается чтоб тут писать и меинтейнить надо было
    > держать в голове все условия, в которых этот "простой" код запускается,
    > что уже не так легко.

    Честно говоря - на обычный бэкдор похоже. Очень уж тупой баг.

    > А вот хотя бы разделили бы код на две части - до аутентификации и после,
    > усложнили бы, но уязвимость вообще бы не возникла.

    Или - взяли бы готовую либу от других и не выделывались бы. Если уж упрощать. Там такие детские баги - если и были то пофикшены сто лет назад. Но не, NIH покусал. И хорошо если только NIH, а не деньги от вон тех, например.

     
  • 5.75, Нуину (?), 02:21, 19/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Мне сложно представить, кому ещё могут понадобиться функторы и монады.

    Кому-кому, последователям теории множеств)

    А монады есть много где. Банально std::optional<T>::and_then (она даже в документации называется Monadic operations)

     
  • 2.44, Аноним (-), 15:01, 18/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Логично, его даже создавали для телекомов Матан это было не только про расписыв... большой текст свёрнут, показать
     
     
  • 3.71, Аноним (-), 18:59, 18/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Точно так же можно рассказать про хаскель.
    > Но что-то неосиляторов на порядок больше чем для какого-то ПХП или СИ.

    Потому что представьте себе. Например мне нужно фичу в энном проекте.

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

    2) В проекте 2 я могу просто пойти и сделать, решив свою проблему. Здесь и сейчас, за 5 минут.

    Вопрос: что же я выберу? Неделями пыхтеть над крутыми абстракциями? Или пойти и сделать? Ну вы поняли. И вон тем, так то, тоже надо - решение задач, а не высокие концепции.


     
     
  • 4.82, Аноним (48), 11:57, 19/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >1) В проекте 1 мне надо вгрузить в мою голову половину мозга кодера, чтобы сделать там даже самый маленький патчик на незначительную фичу, нужную лично мне.

    Жёстко. Надеюсь, никого из сишников это не оскорбит.

     
     
  • 5.87, аноним43481234 (?), 18:37, 20/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вот вот. Писать без абстракций - это жонглировать регистрами и указателями на ассемблере.

    Он без абстракций даже hello world не напишет, просто потому что ему придется отказаться от ядра, операционки, всех библиотек и концепций вроде переменных, констант и прочего.

    Эти противники абстракций такие классные, так уверенно рассказывают что они не нужны, хотя без них давно уже ничего не способны сделать.

     
     
  • 6.90, Аноним (-), 23:25, 21/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Эти противники абстракций такие классные, так уверенно рассказывают что они не
    > нужны, хотя без них давно уже ничего не способны сделать.

    В абстракциях главное - уметь вовремя остановиться. Иначе бесконечность сожрет мозг, и ушедший в матрицу - будет навсегда потерян для всех остальных, соревнуясь с секундной стрелкой - и генеря "нечто", которое никому кроме него даром не упало.

     
  • 5.89, Аноним (-), 23:22, 21/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Жёстко. Надеюсь, никого из сишников это не оскорбит.

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

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

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

     
  • 2.77, Нуину (?), 02:29, 19/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Здесь кичатся матаном

    А кто кичится?

     

  • 1.40, YetAnotherOnanym (ok), 14:09, 18/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > например, на IoT-

    EVM, вообще-то, не такая уж и легковесная штуковина. Кто и зачем стал бы вкорячивать её в контроллер со слабым процессором и ограниченным объёмом памяти - не могу себе представить.

     
  • 1.50, Аноним (50), 15:59, 18/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >exec

    Классика бэкдоров для кода на "безопасных" ЯП. Не нравятся бэкдоры? Иди сам свою собственную программу разрабатывай, со всеми зависимостями.

     
     
  • 2.73, YetAnotherOnanym (ok), 20:09, 18/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Эрланг не позиционировался как "безопасный", то есть исключающий возможность писать с ошибками. Эрланг позиционировался как дающий возможность писать "неубиваемые" программы, способные тащить стопицот одновременных соединений. А накосячить в нём - легко, есть даже книжечка с обзором и разбором наиболее распространённых ошибок - "Erlang in anger".
     
  • 2.79, Пустотеев (ok), 09:05, 19/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Классика бэкдоров для кода на "безопасных" ЯП.

    Ты не разобрался. Это не типичный exec("some_prog $user_dirty_variable")

     

  • 1.51, Аноним (-), 16:16, 18/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Уязвимость вызвана ошибкой в коде разбора сообщений, из-за которой сообщения SSH_MSG_CHANNEL_REQUEST,
    > допускающие выполнение команды "exec", обрабатывались на стадии до прохождения аутентификации.

    Нормальная такая ошибка.

    p.s. а CVE то они как получили? :)

     
     
  • 2.62, Аноним (62), 18:12, 18/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ну это же ssh, иначе как он без экзека
     
     
  • 3.65, Аноним (65), 18:23, 18/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Через библиотеку… А нет, сорян, это ж опенсорс, тут хорошо делать почти никто не умеет, страдайте с exec тогда и скажите спасибо Тео.
     
     
  • 4.80, Пустотеев (ok), 09:40, 19/04/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 3.72, Аноним (-), 19:04, 18/04/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Ну это же ssh, иначе как он без экзека

    Да я не про то, MITRE же - шатдаунили недавно? Для оптимизации DOGE-коина.

     

  • 1.76, Нуину (?), 02:28, 19/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Примечательно, что по словам исследователя код был создан с использованием AI-ассистентов GPT-4, Cursor и Sonnet на основе анализа изменения с исправлением уязвимости

    А хваленый Codepilot не смог найти? Он же вроде подсказывать должен в пулл реквестах.

     
     
  • 2.78, Аноним (-), 08:01, 19/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Эти AI, такие AI... Пока его не пнёшь в нужном направлении, он может слона не заметить.
     
  • 2.84, Аноним (-), 20:33, 19/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > А хваленый Codepilot не смог найти?

    Составлять правильные prompts это наука. Уже сейчас этому начали обучать в том же Гарварде (пока что в факультативном режиме). А что будет через пару лет...

     
     
  • 3.85, Нуину (?), 23:16, 19/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> А хваленый Codepilot не смог найти?
    > А что будет через
    > пару лет...

    Кризис будет экономический через 3 года примерно, вот что будет.

     
     
  • 4.86, Аноним (86), 10:09, 20/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Обоснуй, на каком основании.
     
     
  • 5.91, Нуину (?), 01:09, 22/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Обоснуй, на каком основании.

    Если коротко, то анализ рыночных котировок.

     

  • 1.81, Аноним (81), 10:26, 19/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Автор я опять делаю работу за тебя.

    Версия 25 вышла 2 years and 11 months ago (17 May 2022).

    Итого этот бэкдор не больше трех лет проработал.

    Всё таки тысячи глаз видят что-то…

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру