FlawOpen

flawopen.com/Teardowns/cve-2026-1731-beyondtrust-websocket-command-injection

● CVE-2026-1731 · CVSS v4 9.9[1] · Критический
Исследования · FlawOpen

CVE-2026-1731: внедрение команд в BeyondTrust

CVE-2026-1731 позволяет выполнять команды без аутентификации через WebSocket в BeyondTrust Remote Support/PRA. Установите патч и проверьте системы.

Вектор CVSSCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:L/SI:H/SA:L[1]
💡 Простыми словами (ELI5)

Представьте стойку регистрации, где у посетителя спрашивают номер версии, а ответ передают калькулятору, который вычисляет формулы вместо проверки цифр. Ввод может превратиться из данных в инструкции. CVE-2026-1731 открывала такую границу в службе BeyondTrust; исправление отклоняет всё, кроме короткой десятичной версии, до сравнения.

Ключевые понятия и термины

CVE-2026-1731
Критическая уязвимость внедрения команд ОС без аутентификации в BeyondTrust Remote Support и Privileged Remote Access.
thin-scc-wrapper
Shell-обёртка BeyondTrust в пути протокола клиента. Анализ исправления Rapid7 указывает на обработку версии, переданной другой стороной, как уязвимую границу.
Арифметическая обработка Bash
Числовые операторы Bash вычисляют операнды как арифметические выражения. Недоверенный текст может перейти границу между данными и выражением.
CWE-78
Ненадлежащая нейтрализация специальных элементов в команде ОС, также называемая внедрением команд ОС.
CISA KEV
Каталог CISA уязвимостей, эксплуатация которых подтверждена в реальных атаках.

Связи со стандартами

Анализ первопричины

В уведомлении BeyondTrust за февраль 2026 года CVE-2026-1731 описана как удалённое выполнение кода до аутентификации в Remote Support и Privileged Remote Access; указаны CWE-78 и CVSS 4.0 9,9. Специально сформированные клиентские запросы могли выполнять команды ОС от имени пользователя сайта. Анализ исправления поставщика от Rapid7 локализует границу в WebSocket-пути thin-scc-wrapper: скрипт считывает контролируемую удалённой стороной remoteVersion и сравнивает её числовыми операторами Bash. Такие сравнения выполняют арифметическую обработку; значение, не являющееся простым числом, может быть разобрано как выражение. Исправление требует одну или две ASCII-цифры (^[0-9]{1,2}$) до сравнения. Приведённый ниже код — сокращённая иллюстрация на основе источников, а не полный скрипт продукта и не доказательство эксплуатации. BeyondTrust сообщила о первых попытках 10 февраля и ограниченной активности против локально размещённых систем, доступных из интернета и не обновлённых до 9 февраля. Позже Google Threat Intelligence Group сообщила о нескольких группах и разных действиях после эксплуатации. Эти сообщения подтверждают наблюдавшуюся активность, но не означают, что у всех пострадавших была одна и та же цепочка.

Пошаговый сценарий атаки

Шаг 1

Открытый appliance принимает подключение протокола

Уязвимая служба предоставляет WebSocket-путь протокола тонкого клиента. Rapid7 указывает, что путь доступен без аутентификации; BeyondTrust классифицирует проблему как RCE до аутентификации.

Шаг 2

Удалённая сторона задаёт версию протокола

Обёртка считывает из соединения удалённое значение версии. Оно контролируется отправителем запроса и не является доверенной локальной настройкой.

Шаг 3

Bash воспринимает значение как арифметический операнд

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

Шаг 4

Внедрённая команда выполняется от имени службы

Успешная эксплуатация может выполнять команды ОС в контексте пользователя сайта BeyondTrust. Поставщик оценивает влияние на конфиденциальность, целостность и доступность как высокое.

Шаг 5

Наблюдавшаяся эксплуатация создаёт дальнейшие риски

BeyondTrust сообщила о первых попытках и ограниченной активности против открытых, не обновлённых локальных appliances. GTIG позже сообщила о нескольких группах и дальнейших действиях; это сведения о конкретных кампаниях, а не универсальная цепочка.

Шаг 6

Исправление проверяет значение до сравнения

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

Исходный код: Уязвимый vs Защищённый вариант

Rapid7 сообщает, что патч BT26-02 добавляет проверку одной или двух цифр перед сравнением remoteVersion. Фрагменты сокращены и не включают протокол продукта и сведения запросов. Главный инвариант — проверка до арифметической обработки Bash; одни кавычки не делают арифметические операнды безопасными. По возможности разбирайте и сравнивайте данные в типизированном компоненте без shell и отклоняйте неверные значения на границе протокола.

Фрагмент исходного кода: thin-scc-wrapper — сокращённая иллюстрация по анализу исправления Rapid7

УЯЗВИМАЯ РЕАЛИЗАЦИЯ
# Сокращённый пример: remoteVersion поступает от другой стороны.
read -r remoteVersion || exit 1
if [[ "$localVersion" -lt "$remoteVersion" ]]; then
    version=$localVersion
else
    version=$remoteVersion
fi
БЕЗОПАСНЫЙ ИСПРАВЛЕННЫЙ ВАРИАНТ
# Отклонить неожиданный ввод до арифметического сравнения.
read -r remoteVersion || exit 1
if [[ ! "$remoteVersion" =~ ^[0-9]{1,2}$ ]]; then
    exit 1
fi
if [[ "$localVersion" -lt "$remoteVersion" ]]; then
    version=$localVersion
else
    version=$remoteVersion
fi

Чек-лист по защите системы для инженеров

Источники