Code injection in Elo via unvalidated programmatic AST fields
Key facts
- Attack vector
- Local
- Privileges required
- None
- User interaction
- None
- Attack complexity
- High
- Impact type
- SQL injection, Code execution
- Confidentiality · integrity · availability
- High · High · High
- Fix status
- Fixed
Attack profile from CVSS 3.1 · CNA. Fix status from CNA and GitHub. Impact type from CWE-89 and CWE-94.
Summary
Elo from 0 before 1.0.1 (the enspirit elo product and the @enspirit/elo npm package) fails to validate values passed to its programmatic AST API. Untyped input such as JSON data or plugin output is interpolated into generated JavaScript, Ruby, Python or SQL without syntax checks (CWE-94). A local attacker with no privileges and no user interaction can craft values that execute arbitrary code in JavaScript, Ruby and Python targets or inject SQL in the SQL target.
Written with Claude Haiku 5.5 from the sources below · 2026-11-06
Description from the CNA
Elo is a purely functional expression language for no-code tools. Prior to 1.0.1, Elo's programmatic AST API accepts arbitrary values from JSON-deserialized input, plugin output, or other untyped sources and interpolates them into generated JavaScript, Ruby, Python, or SQL without runtime syntax validation. The affected fields are int_literal / float_literal .value, variable.name, member_access.property, object_literal keys, datapath segments, lambda.params[].name, and the SQL let binding name. Crafted values become executable expressions or identifiers, allowing arbitrary code execution in JavaScript, Ruby, and Python targets and SQL injection in the SQL target. This programmatic AST-object path is distinct from the plain-string constructor-chain sandbox escape. This issue is fixed in version 1.0.1.
Why it matters now
SSVC decision points
Not available: CISA has not published SSVC decision points for this record.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| enspirit | elo | before 1.0.1 | 1.0.1 | Patch available | CNA |
| — | @enspirit/elo (npm) | before 1.0.1 | 1.0.1 | Patch available | GHSA-x9rp-7wh3-2rj5 |
- elo Vendorenspirit Affected before 1.0.1 Fixed in 1.0.1 Patch available CNA
- @enspirit/elo (npm) Vendor— Affected before 1.0.1 Fixed in 1.0.1 Patch available GHSA-x9rp-7wh3-2rj5
Remediation
Upgrade Elo to version 1.0.1, which fixes the enspirit elo product and the @enspirit/elo npm package.
Written with Claude Haiku 5.5 from the sources below · 2026-11-06
- Fix · CNA elo (enspirit) Fixed in 1.0.1
- Fix · GHSA-x9rp-7wh3-2rj5 @enspirit/elo (npm) Fixed in 1.0.1 Advisory →
Vendor assessments
Timeline
- 2026-11-03 Threatist record created from CVE-2026-44265
- 2026-11-03 Alias added: GHSA-x9rp-7wh3-2rj5
- 2026-11-03 Fix available: npm/@enspirit/[email protected] · GHSA-x9rp-7wh3-2rj5
- 2026-11-03 CVSS score added · GHSA-x9rp-7wh3-2rj5
- 2026-11-03 Weakness changed · GHSA-x9rp-7wh3-2rj5
- 2026-11-03 4 new references · GHSA-x9rp-7wh3-2rj5
- 2026-11-05 Priority changed: MEDIUM → LOW
- 2026-11-06 Affected versions changed · Red Hat
- 2026-11-06 CVSS score added · Red Hat
References
More enspirit vulnerabilities
- TI-2026-84456 Sandbox escape in Elo JavaScript emitter allows arbitrary code execution CVSS 3.1CRITICAL 9.8
- TI-2026-84455 Remote code execution in Elo Ruby backend via unescaped interpolation CVSS 3.1CRITICAL 9.8
Sources
- CVE-2026-44265 · CVE Program
- CVE-2026-44265 · NVD
- FIRST EPSS
- GHSA-x9rp-7wh3-2rj5 · GitHub Advisory Database · CC BY 4.0
- CVE-2026-44265 · Red Hat security data · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences