Exploited in the wildHIGH

Check Point Gaia DynamicCLI flaw gives local users root, exploited after PHP2Shell

Attackers chained PHP2Shell with a world-writable root socket in Gaia's DynamicCLI service to take over internet-facing Check Point gateways. Install the November Jumbo Hotfix and hunt dynamicCli.log for unexpected commands.

Check Point Gaia OS DynamicCLI (Quantum Security Gateway / Security Management)CVE-2026-123039CVSS7.8CWE-732Network security
Published Nov 12, 2026

Check Point reports exploitation from 2026-10-30 to 2026-11-04 against about two dozen customers. Attackers chained PHP2Shell in the Mobile Access portal with this flaw to gain root. Some intrusions were destructive.

Oct 23, 202620 daysNov 12, 2026

What you need to know

  • Affects Gaia R81 through R82.20 on Security Gateways, Management/Log Servers, Multi-Domain servers and Maestro Orchestrator. Spark and Smart-1 Cloud are not affected.
  • Any local user or process can send commands to a world-writable socket and have them run as root.
  • Exploited from 2026-10-30 after PHP2Shell initial access on Mobile Access portals. Attackers installed webshells and backdoors, and in a limited number of cases also wiped ESXi hosts.
  • Fix: Jumbo Hotfix R82.20 Take 14, R82.10 Take 52, R82 Take 132, R81.20 Take 174. Also apply the PHP2Shell fixes. No fix is listed for R81.10 or R81.
  • Hunt: in /var/log/dynamicCli.log, look for received commands that lack the CPprofile.sh wrapper or that contain curl, wget, nc, base64 or useradd.

What's happening

CVE-2026-123039 is a local privilege escalation in the DynamicCLI service of Check Point Gaia OS. It lets any local user run commands as root 1. Affected products are Security Gateways, Management and Log Servers, Multi-Domain Security Management, Multi-Domain Log Server and Maestro Orchestrator on R81 through R82.20 1. Fixes ship in Jumbo Hotfix takes for R82.20, R82.10, R82 and R81.20 1. R81.10 and R81 are end-of-support and have no fix listed 1. Spark Firewalls and Smart-1 Cloud are not affected 1.

Check Point says it saw active exploitation against "a couple of dozen customers" 1. In the observed incidents, attackers first used PHP2Shell (CVE-2026-109618 / CVE-2026-109619), an unauthenticated RCE in the Mobile Access portal, against internet-facing gateways 2. They then used this flaw to reach root, with activity running from 2026-10-30 to 2026-11-04 2. Check Point Research describes two waves 3: - 2026-10-30: Israeli organizations were targeted, with destructive activity at some. - 2026-11-02: a broader wave across several countries and sectors, with no destruction observed.

With root, the attackers did the following 3: - planted PHP webshells in the portal templates - installed the TSGA backdoor and the TSProxy library - ran the gogo scanner from the gateway In a limited number of cases they moved over SSH to VMware ESXi hosts and ran a wiper that leaves DREAM_ANNEXATION.txt notes 2,3. Check Point Research says TSGA and TSProxy are modified variants of PhiliKit, a toolkit ESET linked to UNC5221. However, it declines to attribute this activity with high confidence 3. VulnDigest found no public proof-of-concept. The CVE is not in CISA KEV.

How it works

Gaia's dynamic (extended) CLI is served by dynamic_server, a daemon running as root that listens on the local IPC socket /tmp/dynamic_socket 1. On affected builds the socket is created with mode 0777 1. The daemon does not authenticate the connecting process, and it executes any command string it receives as root 1. The CNA record lists CWE-732 (incorrect permission assignment for a critical resource) and CWE-862 (missing authorization) 4.

Exploitation requires an existing local account or local code execution on the appliance, and any unprivileged user is enough 1. That is why the CVSS vector is local with low privileges required 4. On its own the bug is not remotely reachable. In the observed attacks, PHP2Shell supplied code execution as the Mobile Access portal service account, and this flaw raised it to root 3.

The fix rejects unauthorized callers to the Dynamic CLI and logs them 1. On a fixed system, /tmp/dynamic_socket has mode 0660 and is owned by root:config 1.

What to do

In order of priority
  1. 1

    Install the fixed Jumbo Hotfix on all Security Gateways and Management Servers 1,2: - R82.20 Take 14 or later - R82.10 Take 52 or later - R82 Take 132 or later - R81.20 Take 174 or later Check Point asks customers to install the November Jumbo Hotfix as soon as operationally possible 2.

  2. 2

    Apply the PHP2Shell fixes (sk1000302), which have been available since 2026-10-23 2. The observed chain began with PHP2Shell, which gave the attackers local access. Upgrade internet-facing Mobile Access deployments first 2.

  3. 3

    If you cannot patch yet, stop dynamic_server and prevent it from restarting, using the dbset process commands in sk1000362 1. This disables the Dynamic CLI commands listed in sk144112 until the process is re-enabled 1.

  4. 4

    Move gateways on R81.10 or R81 to a supported, fixed release, because no fix is listed for them 1. Until then, limit exposure of the Mobile Access portal to trusted networks where operations allow.

  5. 5

    If the Mobile Access portal was internet-facing and unpatched between 2026-10-30 and 2026-11-04, treat the gateway as potentially compromised. Run the dynamicCli.log hunts and the IOC sweep on every gateway and cluster member 1,3.

  6. 6

    On suspected compromise, treat the appliance configuration as stolen. TSGA steals configuration and can persist through snapshots and backups 3. Rotate admin, VPN and other credentials and secrets stored on the gateway, and do not restore from snapshots taken after initial access.

  7. 7

    Review SSH access from gateways to internal hosts, particularly VMware ESXi. Check those hosts for wiper activity and DREAM_ANNEXATION.txt notes 3.

Detection

  • dynamic_server logs every command it receives to /var/log/dynamicCli.log 1. Legitimate requests use a standard Clish wrapper that starts by sourcing CPprofile.sh. On each gateway or cluster member, review any Received = line that lacks this wrapper as possible root execution through the socket 1.
  • Search dynamicCli.log for two further patterns 1: - lines showing the system() sink (Received = #return_value#), which is rare or absent in normal use - commands typical of exploitation, such as nc, curl, wget, base64, useradd, /etc/shadow or authorized_keys The exact grep commands are in sk1000362 1.
  • On patched systems, look for Rejected connection from unauthorized uid in dynamicCli.log 1. A non-zero or unexpected UID (for example 99/nobody) is a blocked escalation attempt. Correlate any bursts with Mobile Access portal, web and authentication logs 1.
  • Confirm the fix is in place: /tmp/dynamic_socket should show mode 0660 and owner root:config, not 0777 1.
  • Look for traces of the PHP2Shell stage in the Mobile Access portal during the attack window 2,3: - hundreds of Apache/PHP worker segfaults - PHP session files under /opt/CPcvpn-R81.20/tmp/, including ones containing upload_progress_pwn
  • Check firewall traffic logs for unexplained gaps, especially after a crash of the logging daemon 2. TSGA can tamper with binary firewall logs 3.
  • Check the file locations in the IOC list for TSGA/TSProxy artifacts and zz*.tpl webshells in the portal templates directory 3. Check Point cautions that a clean IOC sweep does not rule out compromise 2.

Indicators

As published by the cited sources
TypeValueContext
ip130.94.19[.]204Scanning/exploitation source against Mobile Access portals3
ip130.94.19[.]168Second scanning/reconnaissance source2
file path/tmp/CPconfigdaemonTSGA dropper; relaunches as slot_CPconfigdaemon when run as root3
file path/lib/libcpfwcommon.soTSProxy shared library dropped by TSGA3
file pathzz*.tpl (Mobile Access portal templates directory)PHP webshells written after privilege escalation3
file path/tmp/.up.tplWebshell upload path; later copied into the portal as challenge_render.tpl3
otherupload_progress_pwnString in PHP session files under /opt/CPcvpn-R81.20/tmp/ (PHP2Shell stage)3
file pathDREAM_ANNEXATION.txtPolitically themed note left by the wiper; no ransom demand3
sha256edb3e92eb7bda7413a09edcc4b1ba3cbed4bcdf42808a8abce63b6e4c3fda2b3tpl webshell3
sha2564171b521fa6441382aa2fa014a08e18ff9a6e0ab6096c9144072bf46b37a2ec8slot_CPconfigdaemon (TSGA)3
sha256d7549671c7189979f0624ec52dad9ea6a707d23146e3585ab8f8c4720eca0c63CPconfigdaemon (TSGA dropper)3
sha256c7d9477309fac6c638a1128442056a242de086996add8cb49cd6496c36003237destroy_v6 Linux wiper (spelled destory_v6 in source)3

Timeline

  1. Check Point releases PHP2Shell fixes for Gateways and Management; sources do not say whether this release fixes CVE-2026-123039. 2

  2. First exploitation wave: PHP2Shell plus CVE-2026-123039 against Israeli organizations, including destructive activity. 3

  3. Second, broader wave across multiple countries and sectors; no destructive activity seen. 3

  4. Last date Check Point cites for active exploitation of the chain. 2

  5. Check Point creates sk1000362. 1

  6. Check Point publishes its advisory and the Check Point Research report; sk1000362 is updated. 2

Sources

Single source, treat with caution. Researched and drafted by the VulnDigest briefs agent from 4 sources, then checked against them by a separate review step on Nov 12, 2026.

All exploitation evidence comes from Check Point: its support article, its advisory and its research team. No independent research, government or telemetry corroboration was found.

Fixed builds follow Check Point's sk1000362 (Takes 14/52/132/174). The CVE record reportedly implies lower first-fixed Takes. The SK thresholds are the safer choice.

Zero-day status is unclear. Check Point says fixes were available on 2026-10-23, but that date appears to cover PHP2Shell. The release date of the fix for this CVE is not stated.

Not listed in CISA KEV when checked. No public proof-of-concept was identified.

No actor named: Check Point Research notes tooling overlap with PhiliKit, which ESET linked to UNC5221, but declines to make a high-confidence attribution.

The CVE record (CWE-862, CVSS vector) could not be retrieved during verification. The vendor confirms the 7.8 CVSS score.

Spotted an error? Open an issue on sochub.io.