CVE-2026-36418
Description
JimuReport versions 2.3.4 and below are vulnerable to remote code execution due to improper handling of Aviator expressions. The /jmreport/executeSelectApi endpoint passes user-supplied input directly to the Aviator expression engine without adequate validation allowing attackers to execute arbitrary code.
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
Affected products
1- Range: <=2.3.4
Patches
Vulnerability mechanics
Root cause
"User-supplied input in the `paramValue` parameter is passed directly to the Aviator expression engine without validation, enabling arbitrary expression injection."
Attack vector
An attacker sends a crafted POST request to `/jmreport/executeSelectApi` with a `paramArray` JSON containing a `paramValue` that starts with `=`. The backend passes this value directly to the Aviator expression engine without adequate validation, allowing arbitrary expression execution [ref_id=1]. The researcher demonstrates two payloads: one using JNDI injection (`InitialContext.doLookup`) and another leveraging the hutool-core library's `RuntimeUtil.execForStr` to execute system commands such as `calc` [ref_id=1].
Affected code
The vulnerability resides in the `/jmreport/executeSelectApi` endpoint of JimuReport, specifically in `org.jeecg.modules.jmreport.desreport.b.a`. The `paramValue` parameter is extracted from user-supplied JSON, passed through `ExpressUtil.a()`, and then compiled and executed by the Aviator expression engine via `exp.execute()` [ref_id=1].
What the fix does
The advisory does not include a published patch. The root cause is that the `ExpressUtil.a()` method compiles and executes user-controlled input as an Aviator expression when the input starts with `=`, with no sanitization or allowlist of permitted functions [ref_id=1]. A proper fix would require validating or restricting the expressions that can be passed to the Aviator engine, or removing the ability to inject arbitrary expressions entirely.
Preconditions
- networkThe attacker must have network access to the `/jmreport/executeSelectApi` endpoint.
- inputThe attacker must supply a `paramValue` that begins with `=` to satisfy the expression-triggering condition.
Generated on Jun 18, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
1News mentions
0No linked articles in our index yet.