This is a side door on the perimeter that only opens if you never ripped out the old lock
CVE-2026-50751 is an authentication bypass on Check Point Remote Access VPN / Mobile Access when the gateway is configured to use deprecated IKEv1. The vulnerable path is only reachable when all of these are true: Remote Access or Mobile Access is enabled, IKEv1 is enabled for Remote Access, legacy/older clients are allowed, and machine certificate authentication is not mandatory. Affected branches called out by Check Point and national CERT mirrors include R81.20, R82, R82.10, plus several end-of-support lines and affected Spark builds.
The vendor's 9.3 CRITICAL rating is fair in practice. Yes, the exposed population is narrower than a generic internet-facing auth bypass because it depends on a deprecated configuration path, but the moment that path exists this lands on a perimeter VPN gateway, requires no credentials, is actively exploited, and is KEV-listed. The configuration friction shrinks prevalence; it does not shrink the consequence.
4 steps from start to impact.
Find a Check Point VPN edge that still exposes legacy IKEv1
- Internet-reachable Check Point Security Gateway or Spark Firewall
- Remote Access VPN or Mobile Access enabled
- IKEv1 enabled for remote access
- Many enterprises already moved remote access to IKEv2-only
- Internet census is noisy because the vulnerable state is configuration-dependent, not cleanly fingerprintable
- Some exposed Check Point gateways are site-to-site only and not relevant
Drive the handshake down the deprecated certificate-validation path
- Gateway accepts legacy Remote Access clients
- Machine certificate authentication is not mandatory
- Attacker can send IKEv1 traffic to the gateway
- Gateways that require machine certificates break this chain
- Gateways that disallow older clients break this chain
- IPS coverage appeared after disclosure, so unupdated gateways keep the path open
Establish a VPN session without a valid password
- Exploit handshake succeeds
- Gateway policy permits some internal access to authenticated VPN sessions
- This is a VPN-session foothold, not automatic domain admin
- Network segmentation and least-privilege VPN roles can reduce reachable internal services
- Post-auth restrictions may confine the attacker to a smaller internal slice
Pivot from trusted remote foothold to internal compromise
- Usable internal routes after VPN establishment
- Reachable internal services or credentials worth abusing
- Strong internal segmentation, MFA on admin paths, and EDR raise the bar after initial VPN access
- Not every compromised VPN user context reaches crown-jewel systems
- Some victims will detect abnormal login geography or unusual post-VPN behavior
The supporting signals.
| In-the-wild status | Yes. Check Point said exploitation was active on 2026-06-08, with earliest known activity traced back to 2026-05-07 and at least one case tied to a Qilin affiliate. |
|---|---|
| KEV status | CISA KEV-listed on 2026-06-08; NVD reflects the KEV entry and shows the federal due date of 2026-06-11. |
| PoC availability | Public research is out. Check Point published an IPS signature specifically for a PoC exploit, and Help Net Security reported WatchTowr released technical analysis plus a 'Detection Artefact Generator.' |
| EPSS | 0.13731 from the user-supplied intel. That is elevated, but KEV and confirmed exploitation matter more than the model once the threat is already live. |
| CVSS vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:L/A:N — internet-reachable, no creds, no user interaction, with confidentiality-heavy impact and scope change because the exploit crosses the VPN boundary into internal access. |
| Affected configuration | The chain requires Remote Access / Mobile Access enabled, IKEv1 enabled, legacy/older clients allowed, and machine certificate auth not mandatory. |
| Affected versions | Reported affected branches include R81.20, R82, R82.10, plus R81.10.X / R82.00.X Spark and multiple EOS lines: R80.20.X, R80.40, R81, R81.10. |
| Fixed versions | Government CERT mirrors of the vendor bulletin list fixed minima as R82.10 JHFA Take 20+, R82 JHFA Take 104+, R81.20 JHFA Take 142+, Spark R82.00.10 Build 998002216+, and Spark R81.10.17 Build 996004901+. |
| Scanner / exposure reality | This is hard to census accurately from Shodan/Censys alone because vulnerable state depends on remote-access config, legacy-client support, and cert policy. Rapid7 shipped a check on 2026-06-09, which is a better enterprise signal than raw internet counts here. |
| Disclosure / reporter | Disclosed 2026-06-08 by Check Point; the public exploitation timeline and follow-on research were published by Check Point Research and later expanded by WatchTowr. |
noisgate verdict.
This stays CRITICAL because the single most decisive factor is active KEV-listed exploitation of an unauthenticated remote auth bypass on a perimeter VPN gateway. The deprecated-IKEv1 requirement narrows prevalence, but it does not reduce the blast radius on the installs that still expose the path.
Why this verdict
- Baseline holds: Vendor 9.3 is not inflated for exposed systems because the chain starts with unauthenticated remote access from the internet and ends in a real VPN foothold.
- Friction audit — deprecated path only: I apply downward pressure for four prerequisites: internet-reachable Check Point VPN, Remote Access/Mobile Access enabled, IKEv1 enabled, legacy clients allowed, and machine cert not mandatory. Each prerequisite cuts reachable population, and requiring internal access is *not* part of the chain here — the attacker is external from the start.
- Modern controls only partly help: NGFW posture and good config hygiene should have removed IKEv1; IPS now detects known exploit traffic; EDR does nothing until after the VPN session exists. That means the preventive control is mostly configuration state, not a universal security backstop.
- Active exploitation cancels most downgrade: Check Point observed live attacks dating back to 2026-05-07, CISA added it to KEV on 2026-06-08, and Check Point published an IPS protection specifically referencing public PoCs. Once attackers are already using it, theoretical prevalence arguments get weaker.
- Role multiplier: Low-value role = lab or isolated branch gateway, where success yields a limited segment foothold. Typical role = line-of-business remote-access edge, where success yields tenant/internal user-network access. High-value role = enterprise perimeter VPN concentrator into AD-reachable networks, where the documented chain plausibly ends in domain or fleet compromise after post-auth pivoting. Because this is canonically a network edge appliance, the worst plausible role sets a CRITICAL floor.
Why not higher?
It is not a 10.0-style instant-catastrophe bug because exploitation yields a VPN session, not appliance RCE or immediate domain takeover. The attacker still has to do post-auth work, and the vulnerable state is limited to a deprecated configuration path rather than every default deployment.
Why not lower?
You cannot responsibly put this below CRITICAL when it is unauthenticated, internet-reachable, actively exploited, and affects a perimeter trust boundary. The IKEv1/legacy-client/machine-cert prerequisites reduce how many gateways are exposed, but they do not meaningfully soften the outcome for the gateways that are.
What to do — in priority order.
- Disable IKEv1 for remote access — Force IKEv2-only for Remote Access immediately, within hours. This removes the vulnerable protocol path entirely and is the fastest compensating control when change windows are tighter than hotfix rollout.
- Block legacy remote-access clients — Turn off the setting that allows older/legacy clients to connect, immediately within hours. The exploit depends on keeping that compatibility lane open.
- Require machine certificates — Make machine certificate authentication mandatory immediately, within hours, on affected gateways where client population supports it. This breaks one of the key conditions called out by the vendor and CERT mirrors.
- Enable and update IPS — Pull the latest Check Point IPS updates and enforce the protection for CVE-2026-50751 immediately, within hours. This is not a substitute for patching, but it adds exploit-path detection and blocking while gateway changes propagate.
- Audit for compromise since 2026-05-07 — Review VPN, authentication, and post-auth activity logs back to 2026-05-07 immediately, within hours, because the vendor traced exploitation to that date. Prioritize new VPN sessions, unexpected geographies, and lateral movement from remote-access address pools.
- Relying on downstream MFA alone does not protect the gateway if the attacker already wins a VPN session at the perimeter.
- A generic EDR-only strategy is too late; EDR helps after the foothold, not at the auth-bypass moment on the VPN edge.
- Simply restricting admin access to the firewall is irrelevant; this is about VPN user authentication bypass, not SmartConsole admin login.
- Waiting for the next normal patch cycle is not a control when KEV and active exploitation are already on the board.
Crowdsourced verification payload.
Run this on each Check Point Gaia Security Gateway over SSH as admin with Expert mode or root. Save it as cve-2026-50751-check.sh and run bash cve-2026-50751-check.sh; it performs a gateway-side prescreen based on branch/take and active VPN listeners. It does not fully prove the legacy-client and machine-certificate settings on every build, so unsupported branches or partial data can return UNKNOWN.
#!/usr/bin/env bash
# CVE-2026-50751 prescreen for Check Point Gaia Security Gateway
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN
set -u
unknown() {
echo "UNKNOWN - $1"
exit 2
}
vuln() {
echo "VULNERABLE - $1"
exit 1
}
patched() {
echo "PATCHED - $1"
exit 0
}
have_cmd() {
command -v "$1" >/dev/null 2>&1
}
if ! have_cmd clish; then
unknown "clish not found; this script is intended for Gaia gateways"
fi
VER_OUT="$(clish -c 'show version all' 2>/dev/null || true)"
[ -n "$VER_OUT" ] || unknown "could not read 'show version all' output"
# Normalize whitespace for easier matching
VER_ONE_LINE="$(printf '%s\n' "$VER_OUT" | tr '\n' ' ' | tr -s ' ')"
BRANCH=""
for b in R82.10 R82.00.X R82 R81.20 R81.10.X R81.10 R81 R80.40 R80.20.X; do
if printf '%s' "$VER_ONE_LINE" | grep -q "$b"; then
BRANCH="$b"
break
fi
done
[ -n "$BRANCH" ] || unknown "could not determine branch from version output"
TAKE="$(printf '%s' "$VER_ONE_LINE" | grep -Eo 'Take[[:space:]]+[0-9]+' | head -n1 | grep -Eo '[0-9]+' || true)"
BUILD="$(printf '%s' "$VER_ONE_LINE" | grep -Eo 'Build[[:space:]]+[0-9]+' | head -n1 | grep -Eo '[0-9]+' || true)"
VPN_LISTENER="no"
if have_cmd ss; then
if ss -lun 2>/dev/null | grep -Eq ':(500|4500)[[:space:]]'; then
VPN_LISTENER="yes"
fi
elif have_cmd netstat; then
if netstat -lun 2>/dev/null | grep -Eq ':(500|4500)[[:space:]]'; then
VPN_LISTENER="yes"
fi
fi
VPD_RUNNING="no"
if ps -ef 2>/dev/null | grep -E '[v]pnd|[i]ke' >/dev/null 2>&1; then
VPD_RUNNING="yes"
fi
case "$BRANCH" in
R82.10)
[ -n "$TAKE" ] || unknown "R82.10 detected but could not parse Jumbo Hotfix Take"
if [ "$TAKE" -ge 20 ]; then
patched "R82.10 Take $TAKE is at or above fixed level (Take 20+)"
fi
if [ "$VPN_LISTENER" = "yes" ] || [ "$VPD_RUNNING" = "yes" ]; then
vuln "R82.10 Take $TAKE is below fixed level (Take 20+) and VPN services appear active"
fi
unknown "R82.10 Take $TAKE is below fixed level, but active VPN state could not be confirmed"
;;
R82)
[ -n "$TAKE" ] || unknown "R82 detected but could not parse Jumbo Hotfix Take"
if [ "$TAKE" -ge 104 ]; then
patched "R82 Take $TAKE is at or above fixed level (Take 104+)"
fi
if [ "$VPN_LISTENER" = "yes" ] || [ "$VPD_RUNNING" = "yes" ]; then
vuln "R82 Take $TAKE is below fixed level (Take 104+) and VPN services appear active"
fi
unknown "R82 Take $TAKE is below fixed level, but active VPN state could not be confirmed"
;;
R81.20)
[ -n "$TAKE" ] || unknown "R81.20 detected but could not parse Jumbo Hotfix Take"
if [ "$TAKE" -ge 142 ]; then
patched "R81.20 Take $TAKE is at or above fixed level (Take 142+)"
fi
if [ "$VPN_LISTENER" = "yes" ] || [ "$VPD_RUNNING" = "yes" ]; then
vuln "R81.20 Take $TAKE is below fixed level (Take 142+) and VPN services appear active"
fi
unknown "R81.20 Take $TAKE is below fixed level, but active VPN state could not be confirmed"
;;
R81.10|R81|R80.40|R80.20.X)
if [ "$VPN_LISTENER" = "yes" ] || [ "$VPD_RUNNING" = "yes" ]; then
vuln "$BRANCH is an end-of-support affected branch and VPN services appear active"
fi
unknown "$BRANCH is an end-of-support affected branch, but active VPN state could not be confirmed"
;;
R82.00.X|R81.10.X)
# Spark builds are affected, but Gaia parsing is inconsistent across appliance families.
if [ -n "$BUILD" ]; then
if [ "$BRANCH" = "R82.00.X" ] && [ "$BUILD" -ge 998002216 ]; then
patched "Spark $BRANCH Build $BUILD is at or above fixed level (998002216+)"
fi
if [ "$BRANCH" = "R81.10.X" ] && [ "$BUILD" -ge 996004901 ]; then
patched "Spark $BRANCH Build $BUILD is at or above fixed level (996004901+)"
fi
if [ "$VPN_LISTENER" = "yes" ] || [ "$VPD_RUNNING" = "yes" ]; then
vuln "Spark $BRANCH Build $BUILD appears below fixed level and VPN services appear active"
fi
unknown "Spark $BRANCH Build $BUILD appears below fixed level, but active VPN state could not be confirmed"
fi
unknown "Spark branch detected but build parsing was not reliable on this host"
;;
*)
unknown "unhandled branch '$BRANCH'"
;;
esac
If you remember one thing.
Sources
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.