CVE-2026-54133: jmespath.php has CompilerRuntime code injection via unescaped function names
jmespath.php allows users to use JMESPath, software for declaratively specifying how to extract elements from a JSON document, in PHP applications with PHP data structures. Versions prior to 2.9.1 can generate and execute attacker-controlled PHP code when `JmesPath\CompilerRuntime` is used with an attacker-controlled JMESPath expression. The compiler emits parsed JMESPath function names into generated PHP source without sufficient escaping. A crafted expression can cause the generated cache file to contain executable attacker-controlled PHP, which is then loaded by the compiler runtime. The issue is patched in `2.9.1` and later. As a workaround, disable `JP_PHP_COMPILE` and do not use `JmesPath\CompilerRuntime` with attacker-controlled expressions. Use the default `AstRuntime` for untrusted expressions. Applications that must continue accepting untrusted JMESPath expressions before upgrading should ensure those expressions are never evaluated by the compiler runtime.
Metrics
- CVSS v3.1
- 9.8
- Severity
- CRITICAL
- Fixed in
- —
- Affected Products
- 1
HarborGuard Analysis
Synopsis
This is a code injection vulnerability in jmespath.php, a PHP library for extracting data from JSON documents using JMESPath expressions. The flaw is reachable over the network with no authentication required, and affects applications that pass attacker-controlled JMESPath expressions to the CompilerRuntime class, which emits unescaped function names directly into generated PHP cache files. Successful exploitation gives an attacker arbitrary remote code execution on the host running the PHP application. HarborGuard tracks this advisory and will make a patched-image rebuild available the moment the upstream fix is published.
HarborGuard Coverage
Detection is available across every HarborGuard environment: the CVE is ingested from upstream advisory feeds within minutes of publication and matched against customer images in connected registries and CI/CD pipelines, including custom-built images that bundle jmespath.php as a Composer dependency.
AvailableHarborGuard scores this finding at CVSS 9.8 Critical and weights it against each environment's compliance policy to determine urgency and routing, directing alerts to the appropriate team inbox within each customer organization.
AvailableBecause no upstream fix version has been published yet, HarborGuard re-checks the advisory on every ingest cycle and will make a patched-image rebuild available automatically the moment jmespath/jmespath.php 2.9.1 or later is released. For customers with auto-remediation enabled, the rebuild, regression run, and PR against affected workloads will be queued immediately upon upstream patch availability.
Pending upstreamExploit Conditions
- Network reachabilityRequired
The vulnerable code path is exposed over the network; an attacker must be able to send a crafted JMESPath expression to any application endpoint that passes user input to CompilerRuntime.
- AuthenticationNot required
No credentials or account are needed; any unauthenticated request carrying a malicious JMESPath expression is sufficient to trigger the vulnerability.
- Victim interactionNot required
No user action or social engineering is required; the attacker drives exploitation entirely through their own network request.
- Attack complexityDetail
The exploit is reliable and condition-free; no race condition, memory layout dependency, or special environmental state is required to achieve code injection.
Blast Radius
- Attacker executes arbitrary PHP code in the context of the web server process, gaining full control over application logic and runtime state.
- Attacker reads any file or secret accessible to the PHP process, including database credentials, API keys, and session tokens stored on disk or in environment variables.
- Attacker writes or modifies files on the host filesystem reachable by the PHP process, including the application source, configuration files, and generated cache files.
- Attacker can crash or destabilize the application process, causing a denial of service for all users of the affected service.
How HarborGuard Handles This
Available on HarborGuard: because no fix version exists for CVE-2026-54133 at this time, HarborGuard continuously re-evaluates the advisory on every ingest cycle and will trigger rebuild and auto-remediation workflows the moment jmespath.php 2.9.1 is published upstream. In the interim, customers can use HarborGuard policy controls to flag any image containing jmespath.php versions below 2.9.1 as non-compliant and block promotion to production registries. As compensating controls, network policy isolation can restrict which services are permitted to accept raw user-supplied JMESPath expressions, and teams should audit application code to confirm that untrusted input is routed only to AstRuntime and never to CompilerRuntime. Where compliance policy permits, auto-remediation customers will receive a rebuilt image, a regression test run, and a PR opened against affected workloads within minutes of the upstream patch landing.
- jmespath / jmespath.php< 2.9.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H