
Пассивный сканер уязвимостей для CVE-2026-1731 — BeyondTrust RS/PRA pre-auth RCE (CVSS 9.9). Только для образовательного и защитного использования.
╔═══════════════════════════════════════════════════════════════╗
║ ║
║ CVE-2026-1731 ║
║ BeyondTrust RS/PRA Passive Vulnerability Scanner ║
║ ║
╠═══════════════════════════════════════════════════════════════╣
║ PASSIVE SCANNER — EDUCATIONAL & AUTHORIZED USE ONLY ║
║ ║
║ Performs passive fingerprinting via standard HTTP GET. ║
║ No exploit payloads sent. No WebSocket connections. ║
║ Only use against systems you own or are authorized to test. ║
║ ║
║ Methods: BRDF version extraction, /check_health, ║
║ static asset sizing, /get_mech_list API, ║
║ HTML analysis, copyright year, /nw probe ║
║ ║
║ Author: NetGuard 24/7 LLC ║
║ Web: https://netguard24-7.com ║
╚═══════════════════════════════════════════════════════════════╝
Пассивный сканер уязвимостей для CVE-2026-1731 — критической (CVSS 9.9) уязвимости удалённого выполнения кода без аутентификации в BeyondTrust Remote Support (RS) и Privileged Remote Access (PRA).
Этот инструмент выявляет уязвимые экземпляры BeyondTrust, используя только стандартные HTTP GET-запросы. Эксплуатационные полезные нагрузки не отправляются. WebSocket-соединения не устанавливаются. Аутентификация не выполняется.
Обновление: 16.02.2026
Применение горячего исправления BT26-02-RS или BT26-02-PRA приведёт к тому, что обнаруженные экземпляры BeyondTrust ниже RS (v21.3 — 25.3.1) или PRA (v22.1 — 24.X) будут отображаться как уязвимые, поскольку горячее исправление не приводит к увеличению версии. Таким образом, экземпляры, исправленные горячим патчем (BT26-02-RS или BT26-02-PRA), будут отображаться как уязвимые. После обновления базовой версии экземпляр будет отображаться как неуязвимый». По данным вендора, официальное исправление включено в Remote Support 25.3.2 и выше | Privileged Remote Access 25.1 и выше
Автор: NetGuard 24/7 LLC
Этот инструмент предоставляется ТОЛЬКО в ОБРАЗОВАТЕЛЬНЫХ и АВТОРИЗОВАННЫХ ОБОРОНИТЕЛЬНЫХ целях.
Вы можете использовать этот инструмент ТОЛЬКО против систем, которыми владеете или на тестирование которых имеете явное письменное разрешение. Несанкционированное сканирование систем, которыми вы не владеете, может нарушать применимое законодательство, включая Закон о компьютерном мошенничестве и злоупотреблениях (CFAA) и аналогичные законы в других юрисдикциях.
Авторы не несут ответственности за неправомерное использование этого инструмента. Используя данное программное обеспечение, вы соглашаетесь использовать его ответственно и в соответствии со всеми применимыми законами и нормативными актами.
| Поле | Детали |
|---|---|
| CVE | CVE-2026-1731 |
| CVSS | 9.9 (критическая) |
| Консультация | BT26-02 |
| Тип | Удалённое выполнение кода без аутентификации |
| Вектор | WebSocket-конечная точка /nw — инъекция арифметического вычисления Bash |
| Затронуты | RS ≤ 25.3.1, PRA ≤ 24.3.4 |
| Исправлено | RS 25.3.2+, PRA 25.1.1+ |
| Эксплуатация | Активна в дикой природе с 12 февраля 2026 г. |
CVE-2026-1731 — вариант CVE-2024-12356 (уязвимость, использованная китайским APT для взлома Казначейства США). Обе нацелены на одну и ту же WebSocket-конечную точку /nw и лежащий в основе Bash-скрипт thin-scc-wrapper. Патч BT24-10 для CVE-2024-12356 добавил числовую проверку корректности, но не предотвратил арифметическое вычисление Bash параметра remoteVersion — что и эксплуатирует CVE-2026-1731.
Этот сканер использует 8 методов пассивного снятия отпечатков — проверенных на реальных экземплярах BeyondTrust — для определения версии продукта и статуса уязвимости без отправки какого-либо эксплуатационного трафика.
| № | Метод | Конечная точка | Что извлекается | Уверенность |
|---|---|---|---|---|
| 1 | Извлечение версии BRDF | GET /get_rdf?comp=sdcust&locale_code=en-us | Точная версия продукта из бинарного заголовка (например, 24.1.4) | ТОЧНАЯ |
| 2 | Ответ /check_health | GET /check_health | "Health Check: Succeeded" = до 25.x / "Status: Primary" = 25.x+ | ВЫСОКАЯ |
| 3 | Размер статических ресурсов | HEAD /js/login.js | Размер файла: ~36K-39K = до 25.x / ~12K = 25.x+ | ВЫСОКАЯ |
| 4 | API /get_mech_list | GET /get_mech_list?version=3 | Название компании + поле thin_rep_enabled (только 25.x+) | ВЫСОКАЯ |
| 5 | HTML-структура | GET /login | XHTML 1.1 + BOMGAR = до 25.x / HTML5 = 25.x+ | СРЕДНЯЯ |
| 6 | Год авторского права | нижний колонтитул GET /login | 2002-2024 = до 25.x / 2002-2025 = 25.x | СРЕДНЯЯ |
| 7 | Информация портала | GET /get_portal_info | Значение X-Ns-Company (индикатор разведки злоумышленника) | — |
| 8 | WebSocket-проба | GET /nw (только HTTP) | Подтверждает доступность поверхности атаки | — |
Метод 1 (BRDF) — та же техника, что используется в Metasploit и плагине Nessus 213456. Когда BRDF возвращает точную версию, уверенность — ТОЧНАЯ. Некоторые экземпляры 25.x удаляют версию из BRDF — в таких случаях методы 2-6 оцениваются и сопоставляются для вывода диапазона версий.
/nwgit clone https://github.com/YOUR_USERNAME/cve-2026-1731-scanner.git
cd cve-2026-1731-scanner
chmod +x cve_2026_1731_scanner.py
python3 cve_2026_1731_scanner.py -t support.example.com -v
# Создайте список целей (по одному хосту в строке)
cat > targets.txt << 'EOF'
support.example.com
pra.example.com
192.168.1.50
10.0.0.100:8443
remote-support.beyondtrustcloud.com
EOF
# Запустите сканирование
python3 cve_2026_1731_scanner.py -f targets.txt --threads 20 -o results.csv --json results.json -v
usage: cve_2026_1731_scanner.py [-h] (-t TARGET | -f FILE) [-o OUTPUT]
[--json JSON_OUTPUT] [--threads THREADS] [-v]
options:
-t, --target TARGET Один целевой хост или IP-адрес
-f, --file FILE Файл с целями (по одной в строке)
-o, --output OUTPUT Экспорт результатов в CSV-файл
--json JSON_OUTPUT Экспорт результатов в JSON-файл
--threads THREADS Параллельные потоки (по умолчанию: 10)
-v, --verbose Подробный вывод по каждой цели
Файл целей принимает гибкий ввод — одна запись в строке:
# Комментарии поддерживаются (строки, начинающиеся с #)
192.168.1.1
10.0.0.5
support.example.com
support.example.com:8443
https://support.example.com
http://support.example.com # автоматически обновляется до HTTPS
support.example.com/login # пути удаляются автоматически
| Уровень | Значение |
|---|---|
| КРИТИЧЕСКИЙ | Точная версия подтверждена как уязвимая через BRDF, или несколько сигналов с высокой уверенностью указывают на версию до 25.x |
| ВЫСОКИЙ | Вероятно уязвим, но с меньшим количеством подтверждающих сигналов; рекомендуется ручная проверка |
| СРЕДНИЙ | Предположительно 25.x+ (RS всё ещё может быть уязвим до 25.3.1); проверьте патч BT26-02 |
| НИЗКИЙ/ИНФО | SaaS-экземпляр (автоматически исправлен), подтверждённая исправленная версия или подтверждённая безопасность |
| Уверенность | Источник | Значение |
|---|---|---|
| ТОЧНАЯ | BRDF /get_rdf | Точная строка версии, извлечённая из бинарного файла (например, 24.1.4) |
| ВЫСОКАЯ | Мультисигнальная (3+) | 3 или более независимых сигнала совпадают без противоречий |
| СРЕДНЯЯ | Мультисигнальная (2+) | Большинство сигналов совпадают, но с некоторой неоднозначностью |
| НИЗКАЯ | Безрезультатно | Противоречивые или недостаточные сигналы |
| Код | Значение |
|---|---|
0 | Критических или высокорисковых результатов не обнаружено |
1 | Обнаружены результаты с высоким риском |
2 | Обнаружены критические результаты |
# Пример: интеграция с конвейером CI/CD
python3 cve_2026_1731_scanner.py -f targets.txt -o results.csv
if [ $? -eq 2 ]; then
echo "КРИТИЧЕСКИ: обнаружены уязвимые экземпляры BeyondTrust!"
# запустить оповещение / вызвать дежурного / открыть тикет
fi
[*] Сканирование https://support.example.com...
Статус: УЯЗВИМ [КРИТИЧЕСКИЙ]
Версия: 24.1.4 (через BRDF /get_rdf, уверенность: ТОЧНАЯ)
Компания: examplecorp
Продукт: Remote Support
Сигналы: health=old, login.js=36458B, html=modern, ©2024
/nw: ДОСТУПНА
| Поле | Описание |
|---|---|
target | Сканируемый URL |
is_beyondtrust | Обнаружен ли BeyondTrust |
product_type | Remote Support или Privileged Remote Access |
product_version | Точная версия (если извлечена из BRDF) |
version_source | Как была определена версия |
version_confidence | ТОЧНАЯ, ВЫСОКАЯ, СРЕДНЯЯ или НИЗКАЯ |
company_name | Значение X-Ns-Company (используется при эксплуатации) |
copyright_year | Из нижнего колонтитула страницы входа |
health_check_type | old (до 25.x) или new (25.x+) |
login_js_size | Размер файла /js/login.js |
thin_rep_enabled | Присутствует только в 25.x+ |
html_generation | legacy (XHTML) или modern (HTML5) |
is_saas | SaaS-экземпляр (.beyondtrustcloud.com) |
ws_endpoint_reachable | Отвечает ли /nw |
vulnerability_status | Результат оценки |
risk_level | КРИТИЧЕСКИЙ, ВЫСОКИЙ, СРЕДНИЙ, НИЗКИЙ или ИНФО |
details | Понятные человеку детали оценки |
Если сканер выявил уязвимые экземпляры:
/nw, если немедленное исправление невозможно/nw с необычными значениями remoteVersion, содержащими $() или обратные кавычкиПриветствуются pull request'ы. Если вы обнаружите дополнительные методы пассивного снятия отпечатков или сигналы корреляции версий, пожалуйста, откройте issue или PR.
Лицензия MIT — см. LICENSE для подробностей.
NetGuard 24/7 LLC https://netguard24-7.com