flawopen.com/Teardowns/cve-2026-1731-beyondtrust-websocket-command-injection
CVE-2026-1731: внедрение команд в BeyondTrust
CVE-2026-1731 позволяет выполнять команды без аутентификации через WebSocket в BeyondTrust Remote Support/PRA. Установите патч и проверьте системы.
Представьте стойку регистрации, где у посетителя спрашивают номер версии, а ответ передают калькулятору, который вычисляет формулы вместо проверки цифр. Ввод может превратиться из данных в инструкции. 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 уязвимостей, эксплуатация которых подтверждена в реальных атаках.
Связи со стандартами
- Ссылка CWE для слабого места, описанного в этом руководстве: CWE-78
- CISA KEV — добавлено 2026-02-13 — CVE-2026-1731
Анализ первопричины
В уведомлении 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 сообщила о нескольких группах и разных действиях после эксплуатации. Эти сообщения подтверждают наблюдавшуюся активность, но не означают, что у всех пострадавших была одна и та же цепочка.
Пошаговый сценарий атаки
Открытый appliance принимает подключение протокола
Уязвимая служба предоставляет WebSocket-путь протокола тонкого клиента. Rapid7 указывает, что путь доступен без аутентификации; BeyondTrust классифицирует проблему как RCE до аутентификации.
Удалённая сторона задаёт версию протокола
Обёртка считывает из соединения удалённое значение версии. Оно контролируется отправителем запроса и не является доверенной локальной настройкой.
Bash воспринимает значение как арифметический операнд
Уязвимое сравнение использует числовые операторы Bash. Поскольку Bash вычисляет операнды как выражения, непроверенный ввод не обязательно остаётся обычным текстом.
Внедрённая команда выполняется от имени службы
Успешная эксплуатация может выполнять команды ОС в контексте пользователя сайта BeyondTrust. Поставщик оценивает влияние на конфиденциальность, целостность и доступность как высокое.
Наблюдавшаяся эксплуатация создаёт дальнейшие риски
BeyondTrust сообщила о первых попытках и ограниченной активности против открытых, не обновлённых локальных appliances. GTIG позже сообщила о нескольких группах и дальнейших действиях; это сведения о конкретных кампаниях, а не универсальная цепочка.
Исправление проверяет значение до сравнения
Патч отклоняет неверную удалённую версию и завершает работу обёртки; согласование протокола продолжается только для допустимого значения. Установите патч или исправленный выпуск и проверьте системы, которые были открыты во время уязвимости.
Исходный код: Уязвимый 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
Чек-лист по защите системы для инженеров
- ✓Составьте перечень всех appliances Remote Support и Privileged Remote Access, включая локально размещённые системы без автоматических обновлений.
- ✓Установите BT26-02-RS или обновите Remote Support до 25.3.2 либо новее; установите BT26-02-PRA или обновите Privileged Remote Access до 25.1.1 либо новее согласно актуальному уведомлению BeyondTrust.
- ✓Если локальная система была доступна из интернета и не обновлена к 9 февраля 2026 года, следуйте инструкциям BeyondTrust по реагированию и проверьте несанкционированный доступ, закрепление, повышение привилегий и доступ к данным.
- ✓Проверьте сетевую и прикладную телеметрию на неожиданные WebSocket-сеансы и необычные дочерние процессы или команды от учётной записи службы; сопоставьте сигналы с нормальным поведением appliance.
- ✓На каждой границе shell проверяйте поля протокола по строгому списку до числового сравнения; не передавайте недоверенный текст в арифметику Bash,
evalили строку команды. - ✓Добавьте регрессионные тесты на пустые, слишком длинные, знаковые, содержащие пробелы и не десятичные версии; проверка должна отклонять их до сравнения или запуска процесса.