Someone left the master key to every firewall in your fleet hanging on the front door
CVE-2026-16232 is an authentication bypass in Check Point Security Management Server and Multi-Domain Security Management Server. A flaw in the authenticateRemoteApplication() method lets an unauthenticated attacker connect to the FWM/CPMI service (TCP 18190), replay the server's own SIC distinguished name during the bootstrap handshake, and mint an application login token with full administrator privileges — no valid certificate required. From there, the attacker generates an SSO ticket, redeems it via the CPM SOAP service (TCP 19009), and has unrestricted SmartConsole access: policy modification, VPN credential extraction, Threat Prevention disablement, and gateway reconfiguration. Affected versions span R77.30 through R82.10; fixes ship as Jumbo Hotfix Takes R82.10 ≥ 36, R82 ≥ 118, and R81.20 ≥ 158. R81.10 and older receive no patch.
The vendor's critical severity (Check Point scored it 9.3; NVD assigned 9.8) is fully justified and, if anything, understates the operational impact. This is not a theoretical lab finding — exploitation was observed in honeypots as early as April 29, 2026, nearly three months before the July 22 public disclosure, and Check Point confirmed a 'handful' of real customer compromises. The management server is the single pane of glass for the entire firewall fleet; owning it is functionally equivalent to owning every gateway it manages. The only thing keeping this from a perfect 10 is that management servers *should* sit on a restricted management VLAN — but the default Trusted Clients setting is Any, meaning most environments that never hardened that config are exposed to any internal or internet-reachable attacker.
5 steps from start to impact.
Reach the Management Plane
- Network path to target on TCP 18190 and 19009
- Trusted Clients configuration allows attacker source IP (default: Any)
- Best-practice deployments restrict management to a dedicated VLAN with explicit IP allowlists
- Internet-exposed management servers are a minority of the installed base
Extract Server SIC DN During Bootstrap
cn=cp_mgmt,o=management_server..gw). The attacker reads this DN from the server certificate — no credentials required. This is a normal protocol behavior that the exploit weaponizes.- Completed TCP connection to CPMI service
- None — this is standard protocol behavior observable by any connected client
Forge Application Bind with Stolen DN
authenticateRemoteApplication() method collapses the untrusted suppliedSicDn and the authenticated peer identity into one variable — when suppliedSicDn is present, the code never calls getCertificateDnName(). The server accepts the attacker as a trusted management application. Weaponized in: Rapid7 PoC (sfewer-r7/CVE-2026-16232), Metasploit module.- Extracted server SIC DN from Step 2
- Unpatched management server
- Patched servers reject the bind — the fix enforces
getCertificateDnName()validation against the peer certificate
Mint Application Token and SSO Ticket
open-database command to obtain a 43-character DLE application token, then calls gen-sso-token to create a SmartConsole SSO ticket with full administrator privileges. This is a standard management API sequence executed under the forged identity.- Successful forged application bind (Step 3)
- None — once the bind succeeds, token minting is a deterministic protocol operation
open-database and gen-sso-token from non-SmartConsole source.Redeem SSO Ticket for Full Admin Session
/cpmws/LoginSvcRemote) on TCP 19009. The server returns DLESESSIONID and CLIENTSESSIONID cookies, granting a fully authenticated SmartConsole session with unrestricted administrator rights. The attacker can now modify security policies, extract VPN credentials, reconfigure gateways, and disable Threat Prevention across the entire managed fleet.- Valid SSO ticket from Step 4
- TCP connectivity to port 19009
- None post-Step 4 — ticket redemption is a standard SOAP call
run-script commands in SmartLog.Any with the specific IP addresses or subnets of authorized administrator workstations. This breaks Step 1 of the attack path by preventing unauthorized network sources from reaching the CPMI/FWM service. This is the single highest-impact mitigation and should be deployed within the noisgate mitigation SLA of ≤ 3 days (CRITICAL). However, given active exploitation evidence, treat this as patch/mitigate immediately, within hours.getCertificateDnName() against the authenticated peer certificate, rejecting forged application binds. This is the definitive remediation. Deploy within the noisgate remediation SLA of ≤ 90 days for CRITICAL, though KEV active exploitation overrides this to immediate. For R81.10 and older, upgrade to a supported release — no hotfix is available.open-database and gen-sso-token commands from unexpected sources, (3) policy install operations without corresponding change-management tickets, (4) connections from the six known IOC IPs. This does not prevent exploitation but reduces dwell time. Deploy immediately.- IPS/Threat Prevention on the managed gateways — The exploit targets the management server directly on its CPMI/FWM service, which is a control-plane protocol. Gateway-level IPS operates on the data plane and does not inspect management traffic destined to the SMS itself.
- MFA on SmartConsole login — The exploit bypasses the entire SmartConsole authentication flow by minting an SSO ticket at the application layer; MFA challenges occur after the point the attacker has already obtained full admin credentials.
- Check Point Identity Awareness or UserCheck — These are data-plane features enforced by gateways, not the management server's own authentication stack. They have no bearing on CPMI protocol authentication.
- WAF or reverse proxy in front of management — The exploit uses the native CPMI binary protocol (not HTTP), so HTTP-layer inspection tools cannot parse or block the malicious payloads.
The supporting signals.
| In-the-Wild Exploitation | Confirmed active. Check Point acknowledged exploitation of a 'handful' of customers. Lupovis honeypots detected automated exploitation attempts as early as April 29, 2026 — nearly 3 months before the July 22 public disclosure. IOC IPs: 151.241.99.207, 151.241.99.233, 158.62.198.182, 192.142.10.99, 139.28.37.250, 194.213.18.137. |
|---|---|
| CISA KEV Status | Listed July 22, 2026. Federal civilian agency remediation deadline: July 25, 2026 (3-day window). Added alongside CVE-2026-50522 (SharePoint). |
| EPSS Score | 0.77972 — 77th percentile. Indicates significantly elevated probability of exploitation within 30 days, consistent with observed active exploitation. |
| PoC / Exploit Availability | Fully weaponized. Rapid7 PoC by Stephen Fewer (sfewer-r7/CVE-2026-16232) released July 28, 2026. Metasploit module available (forges bind → mints SSO ticket → achieves RCE via run-script). Nuclei template available. Listed on pocindex.io. |
| CVSS Vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H (9.8 NVD). Check Point self-scored 9.3; CISA scored 9.1. All agree on Critical. The vector is accurate: network-reachable, low complexity, no auth, no interaction, full CIA impact. |
| Affected Versions | Security Management Server & Multi-Domain Management Server: R77.30, R80, R80.10, R80.20, R80.30, R81, R81.10, R81.20, R82, R82.10. Every supported and EOL release is affected. |
| Fixed Versions | R82.10: Jumbo Hotfix Take 36+. R82: Take 118+. R81.20: Take 158+. R81.10 and older: No fix available — upgrade required. Hotfixes released July 22, 2026. |
| Exposure / Attack Surface | Censys observes ~3,836 hosts worldwide presenting Check Point management server identity on the internet. Default Trusted Clients = Any means unpatched, un-hardened servers accept connections from any IP. Ports: TCP 18190 (CPMI/FWM), TCP 19009 (CPM SOAP). |
| Disclosure Timeline | April 29, 2026: honeypot exploitation detected. July 22, 2026: Check Point advisory + CISA KEV listing + hotfixes released. July 28, 2026: Rapid7 root-cause analysis + PoC published. |
| Reporting Researcher | Root-cause analysis and PoC by Stephen Fewer, Senior Principal Security Researcher at Rapid7 Labs. Original vulnerability discovery attributed to Check Point internal teams and third-party reports of exploitation. |
Sources.
Why this verdict
- Default-open management plane: The default Trusted Clients setting is
Any, meaning an unmodified Check Point SMS accepts CPMI connections from *every* IP address. This is not a misconfiguration edge case — it is the out-of-box default. Organizations that never locked this down (a significant portion of the installed base) are fully exposed to any network-adjacent or internet-positioned attacker. - Pre-disclosure exploitation and full weaponization: Exploitation was observed in the wild 84 days before public disclosure (April 29 → July 22). A Metasploit module, Rapid7 PoC, and Nuclei template now exist. The EPSS score of 0.78 and KEV listing confirm this is not theoretical — it is actively being used by threat actors. This eliminates any friction discount for 'exploit complexity.'
- Management network segmentation provides minor friction: Well-run enterprises isolate the SMS on a dedicated management VLAN accessible only to authorized admin workstations. Internet-facing SMS instances (~3,836 per Censys) represent a fraction of the total installed base. This network-level friction justifies a modest 0.4-point reduction from the NVD 9.8 baseline but does not meaningfully change the severity tier.
- Role multiplier: Check Point Security Management Server is *canonically* a high-value network edge management component — 100% of installations control the firewall fleet by definition. (a) *Low-value role:* Does not exist; nobody runs SMS as a sandbox. (b) *Typical role:* Manages 5–500 firewall gateways for a business unit or site. (c) *High-value role:* Enterprise SMS managing the entire perimeter — policy changes propagate to every gateway within minutes. Blast radius is fleet-scale: full admin access → disable IPS/AV globally, open arbitrary ports, extract all VPN pre-shared keys and certificates, pivot into every network segment the firewalls protect. Because the affected component is the management plane for network edge appliances and 100% of installs occupy the high-value role, the verdict floor is CRITICAL.
- Compounding CVEs amplify impact: The same July 22 advisory disclosed CVE-2026-62144 (management auth bypass + privilege escalation, CVSS 9.3) and CVE-2026-62145 (GaiaOS WebUI local privesc, CVSS 7.5). Chaining 16232 with 62145 yields unauthenticated remote → root on the underlying Gaia OS — beyond just SmartConsole admin.
Why not higher?
The NVD score of 9.8 assumes universal network reachability. In practice, the SMS is typically behind a management VLAN or firewall, and internet-exposed instances (~3,836 globally) represent a small fraction of the total installed base. The 0.4-point reduction from 9.8 to 9.4 acknowledges that a competent network architecture does impose a meaningful (though not decisive) barrier to external exploitation. A score of 10.0 would require no prerequisites whatsoever.
Why not lower?
Any score below CRITICAL (< 9.0) would require dismissing the management-plane blast radius as inconsequential — which it is not. This component *is* the trust anchor for the firewall fleet; compromising it is equivalent to disabling every firewall simultaneously. Active pre-disclosure exploitation, full Metasploit weaponization, KEV listing with a 3-day federal deadline, and a default-open Trusted Clients setting leave zero room for a HIGH or below rating. The network-segmentation friction is real but insufficient to offset fleet-scale impact.
Crowdsourced verification payload.
Run this script on each Check Point Security Management Server in expert mode (Gaia CLI → expert). It requires root/admin shell access. Invoke as: bash check_cve_2026_16232.sh. The script checks the installed Jumbo Hotfix take number against the fixed versions and also verifies the Trusted Clients configuration.
#!/bin/bash
# check_cve_2026_16232.sh — Verify patch status for CVE-2026-16232
# Run on Check Point SMS/MDS in expert mode (Gaia shell)
# Exit codes: 1=VULNERABLE, 0=PATCHED, 2=UNKNOWN
set -euo pipefail
echo "[*] CVE-2026-16232 Check — Check Point SmartConsole Auth Bypass"
echo "[*] Date: $(date -u +%Y-%m-%dT%H:%M:%SZ)"
echo ""
# Determine version and hotfix take
VERSION=$(clish -c 'show version product' 2>/dev/null | grep -oP 'R[0-9]+\.?[0-9]*' | head -1 || echo "UNKNOWN")
TAKE=$(cpinfo -y fw1 2>/dev/null | grep -i 'jumbo.*take' | grep -oP '[0-9]+' | tail -1 || echo "0")
if [ "$VERSION" = "UNKNOWN" ]; then
echo "[!] Could not determine Check Point version."
echo "UNKNOWN"
exit 2
fi
echo "[*] Detected version: $VERSION"
echo "[*] Detected Jumbo Hotfix Take: ${TAKE:-none}"
VULNERABLE=0
case "$VERSION" in
R82.10)
if [ "${TAKE:-0}" -lt 36 ]; then
VULNERABLE=1
echo "[!] R82.10 requires Take 36+. Installed: Take ${TAKE:-none}"
fi
;;
R82)
if [ "${TAKE:-0}" -lt 118 ]; then
VULNERABLE=1
echo "[!] R82 requires Take 118+. Installed: Take ${TAKE:-none}"
fi
;;
R81.20)
if [ "${TAKE:-0}" -lt 158 ]; then
VULNERABLE=1
echo "[!] R81.20 requires Take 158+. Installed: Take ${TAKE:-none}"
fi
;;
R81.10|R81|R80*|R77*)
VULNERABLE=1
echo "[!] $VERSION has NO available fix. Upgrade to R81.20+ required."
;;
*)
echo "[!] Unrecognized version: $VERSION"
echo "UNKNOWN"
exit 2
;;
esac
# Check Trusted Clients setting
echo ""
echo "[*] Checking Trusted Clients (GUI Clients) configuration..."
TC=$(cpmiquerybin attr '' Network Objects "$(hostname)" trusted_client_list 2>/dev/null || echo "QUERY_FAILED")
if echo "$TC" | grep -qi 'any\|0\.0\.0\.0'; then
echo "[!] WARNING: Trusted Clients is set to ANY — management is reachable from all IPs."
echo "[!] Restrict immediately to authorized admin IPs/subnets."
elif [ "$TC" = "QUERY_FAILED" ]; then
echo "[?] Could not query Trusted Clients programmatically."
echo " Manually verify in SmartConsole → Server Properties → Trusted Clients."
else
echo "[+] Trusted Clients appears restricted (not set to Any)."
fi
# Check if management ports are listening on all interfaces
echo ""
echo "[*] Checking management port bindings..."
for PORT in 18190 19009; do
BINDING=$(ss -tlnp 2>/dev/null | grep ":${PORT}" | awk '{print $4}' || echo "")
if [ -n "$BINDING" ]; then
echo "[*] Port $PORT listening on: $BINDING"
else
echo "[*] Port $PORT: not detected in listener list"
fi
done
echo ""
if [ "$VULNERABLE" -eq 1 ]; then
echo "VULNERABLE"
exit 1
else
echo "PATCHED"
exit 0
fi