
Scanner passivo di vulnerabilità per CVE-2026-1731 — BeyondTrust RS/PRA pre-auth RCE (CVSS 9.9). Solo uso educativo e difensivo.
╔═══════════════════════════════════════════════════════════════╗
║ ║
║ 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 ║
╚═══════════════════════════════════════════════════════════════╝
Uno scanner di vulnerabilità passivo per CVE-2026-1731 — una vulnerabilità critica (CVSS 9.9) di esecuzione remota di codice pre-autenticazione in BeyondTrust Remote Support (RS) e Privileged Remote Access (PRA).
Questo strumento identifica istanze BeyondTrust vulnerabili utilizzando solo richieste HTTP GET standard. Non vengono inviati payload di exploit. Non vengono stabilite connessioni WebSocket. Non viene tentata alcuna autenticazione.
Aggiornamento: 16/02/2026
L'applicazione dell'hotfix BT26-02-RS o BT26-02-PRA farà apparire come vulnerabili le istanze BeyondTrust rilevate inferiori a RS (v21.3 - 25.3.1) o PRA (v22.1 - 24.X), poiché l'hotfix non comporta incrementi di versione; pertanto, le istanze patchate con l'hotfix (BT26-02-RS o BT26-02-PRA) appariranno come vulnerabili. Una volta aggiornata la release base, l'istanza apparirà come non vulnerabile". Secondo il vendor, la correzione ufficiale è affrontata in Remote Support 25.3.2 e successive | Privileged Remote Access 25.1 e successive
Autore: NetGuard 24/7 LLC
Questo strumento è fornito esclusivamente per scopi EDUCATIVI e di DIFESA AUTORIZZATA.
Puoi utilizzare questo strumento SOLO contro sistemi di tua proprietà o per i quali hai esplicita autorizzazione scritta per il test. La scansione non autorizzata di sistemi che non possiedi può violare leggi applicabili, inclusi il Computer Fraud and Abuse Act (CFAA) e statuti simili in altre giurisdizioni.
Gli autori non si assumono alcuna responsabilità per l'uso improprio di questo strumento. Utilizzando questo software, accetti di usarlo in modo responsabile e in conformità con tutte le leggi e i regolamenti applicabili.
| Campo | Dettaglio |
|---|---|
| CVE | CVE-2026-1731 |
| CVSS | 9.9 (Critico) |
| Advisory | BT26-02 |
| Tipo | Esecuzione remota di codice pre-autenticazione |
| Vettore | Endpoint WebSocket /nw — Iniezione di valutazione aritmetica Bash |
| Impatto | RS ≤ 25.3.1, PRA ≤ 24.3.4 |
| Corretto | RS 25.3.2+, PRA 25.1.1+ |
| Sfruttamento | Attivo in natura dal 12 febbraio 2026 |
CVE-2026-1731 è una variante di CVE-2024-12356 (la vulnerabilità utilizzata dall'APT cinese per violare il Dipartimento del Tesoro degli Stati Uniti). Entrambe prendono di mira lo stesso endpoint WebSocket /nw e lo script Bash sottostante thin-scc-wrapper. La patch BT24-10 per CVE-2024-12356 ha aggiunto un controllo di sanità numerica, ma non è riuscita a prevenire la valutazione aritmetica Bash del parametro remoteVersion — che CVE-2026-1731 sfrutta.
Questo scanner utilizza 8 metodi di fingerprinting passivo — validati su istanze BeyondTrust reali — per determinare la versione del prodotto e lo stato di vulnerabilità senza inviare alcun traffico di exploit.
| # | Metodo | Endpoint | Cosa Estrae | Confidenza |
|---|---|---|---|---|
| 1 | Estrazione Versione BRDF | GET /get_rdf?comp=sdcust&locale_code=en-us | Versione esatta del prodotto dall'header binario (es., 24.1.4) | ESATTA |
| 2 | Risposta /check_health | GET /check_health | "Health Check: Succeeded" = pre-25.x / "Status: Primary" = 25.x+ | ALTA |
| 3 | Dimensionamento Asset Statici | HEAD /js/login.js | Dimensione file: ~36K-39K = pre-25.x / ~12K = 25.x+ | ALTA |
| 4 | API /get_mech_list | GET /get_mech_list?version=3 | Nome azienda + campo thin_rep_enabled (solo 25.x+) | ALTA |
| 5 | Struttura HTML | GET /login | XHTML 1.1 + BOMGAR = pre-25.x / HTML5 = 25.x+ | MEDIA |
| 6 | Anno Copyright | Footer GET /login | 2002-2024 = pre-25.x / 2002-2025 = 25.x | MEDIA |
| 7 | Info Portale | GET /get_portal_info | Valore X-Ns-Company (indicatore di ricognizione attaccante) | — |
| 8 | Sonda WebSocket | GET /nw (solo HTTP) | Conferma la raggiungibilità della superficie di attacco | — |
Metodo 1 (BRDF) è la stessa tecnica utilizzata da Metasploit e dal plugin Nessus 213456. Quando BRDF restituisce una versione esatta, la confidenza è ESATTA. Alcune istanze 25.x rimuovono la versione da BRDF — in questi casi, i metodi 2-6 vengono valutati e corroborati per dedurre l'intervallo di versione.
/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
# Crea un elenco di target (un host per riga)
cat > targets.txt << 'EOF'
support.example.com
pra.example.com
192.168.1.50
10.0.0.100:8443
remote-support.beyondtrustcloud.com
EOF
# Esegui la scansione
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 Single target hostname or IP
-f, --file FILE File containing targets (one per line)
-o, --output OUTPUT Export results to CSV file
--json JSON_OUTPUT Export results to JSON file
--threads THREADS Concurrent threads (default: 10)
-v, --verbose Verbose per-target output
Il file dei target accetta input flessibile — una voce per riga:
# I commenti sono supportati (righe che iniziano con #)
192.168.1.1
10.0.0.5
support.example.com
support.example.com:8443
https://support.example.com
http://support.example.com # aggiornato automaticamente a HTTPS
support.example.com/login # i percorsi vengono rimossi automaticamente
| Livello | Significato |
|---|---|
| CRITICO | Versione esatta confermata vulnerabile tramite BRDF, o più segnali ad alta confidenza indicano pre-25.x |
| ALTO | Probabilmente vulnerabile ma con meno segnali di corroborazione; verifica manuale raccomandata |
| MEDIO | Dedotto come 25.x+ (RS potrebbe essere ancora vulnerabile fino alla 25.3.1); verificare la patch BT26-02 |
| BASSO/INFO | Istanza SaaS (auto-patchata), versione patchata confermata, o confermata sicura |
| Confidenza | Fonte | Significato |
|---|---|---|
| ESATTA | BRDF /get_rdf | Stringa di versione esatta estratta dal binario (es., 24.1.4) |
| ALTA | Multi-segnale (3+) | 3 o più segnali indipendenti concordano con 0 contraddizioni |
| MEDIA | Multi-segnale (2+) | La maggioranza dei segnali concorda ma con qualche ambiguità |
| BASSA | Non conclusiva | Segnali contrastanti o insufficienti |
| Codice | Significato |
|---|---|
0 | Nessun risultato critico o ad alto rischio |
1 | Rilevati risultati ad alto rischio |
2 | Rilevati risultati critici |
# Esempio: integrazione pipeline CI/CD
python3 cve_2026_1731_scanner.py -f targets.txt -o results.csv
if [ $? -eq 2 ]; then
echo "CRITICO: Trovate istanze BeyondTrust vulnerabili!"
# attiva alert / pagina on-call / apri ticket
fi
[*] Scansione di https://support.example.com...
Stato: VULNERABILE [CRITICO]
Versione: 24.1.4 (tramite BRDF /get_rdf, confidenza: ESATTA)
Azienda: examplecorp
Prodotto: Remote Support
Segnali: health=old, login.js=36458B, html=modern, ©2024
/nw: RAGGIUNGIBILE
| Campo | Descrizione |
|---|---|
target | URL scansionato |
is_beyondtrust | Se BeyondTrust è stato rilevato |
product_type | Remote Support o Privileged Remote Access |
product_version | Versione esatta (se estratta da BRDF) |
version_source | Come è stata determinata la versione |
version_confidence | ESATTA, ALTA, MEDIA o BASSA |
company_name | Valore X-Ns-Company (usato nello sfruttamento) |
copyright_year | Dal footer della pagina di login |
health_check_type | old (pre-25.x) o new (25.x+) |
login_js_size | Dimensione file di /js/login.js |
thin_rep_enabled | Presente solo in 25.x+ |
html_generation | legacy (XHTML) o modern (HTML5) |
is_saas | Istanza SaaS (.beyondtrustcloud.com) |
ws_endpoint_reachable | Se /nw risponde |
vulnerability_status | Risultato della valutazione |
risk_level | CRITICO, ALTO, MEDIO, BASSO o INFO |
details | Dettagli di valutazione leggibili |
Se lo scanner identifica istanze vulnerabili:
/nw se la patch immediata non è possibile/nw con valori remoteVersion insoliti contenenti $() o backtickPull request benvenuti. Se scopri metodi aggiuntivi di fingerprinting passivo o segnali di correlazione delle versioni, apri un issue o una PR.
Licenza MIT — vedi LICENSE per i dettagli.
NetGuard 24/7 LLC https://netguard24-7.com