CWEweakness
CWE-917 Improper Neutralization of Special Elements used in an Expression Language Statement
- Alternate terms
- EL Injection, Expression Language Injection
- Abstraction
- Base
- Structure
- Simple
- Status
- Incomplete
- Languages
- Java
- CWE version
- 5.0
Description
The product constructs all or part of an expression language (EL) statement in a framework such as a Java Server Page (JSP) using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended EL statement before it is executed.
Common consequences
• Confidentiality: Read Application Data — An attacker could insert an expression that references private data, which is then included in the output.
• Integrity: Execute Unauthorized Code or Commands — An attacker could execute arbitrary expressions.
Potential mitigations
• [Architecture and Design] Avoid adding user-controlled data into an expression interpreter when possible.
• [Implementation] If user-controlled data must be added to an expression interpreter, one or more of the following should be performed:
• Validate that the user input will not evaluate as an expression
• Encode the user input in a way that ensures it is not evaluated as an expression
• [System Configuration, Operation] The framework or tooling might allow the developer to disable or deactivate the processing of EL expressions, such as setting the isELIgnored attribute for a JSP page to "true".
Detection methods
• Automated Static Analysis: Automated static analysis, commonly referred to as Static Application Security Testing (SAST), can find some instances of this weakness by analyzing source code (or binary/compiled code) without having to execute it. Typically, this is done by building a model of data flow and control flow, then searching for potentially-vulnerable patterns that connect "sources" (origins of input) with "sinks" (destinations where the data interacts with external components, a lower layer such as the OS, etc.)
Observed examples
• CVE-2021-44228: Product does not neutralize ${xyz} style expressions, allowing remote code execution. (log4shell vulnerability in log4j)
Related
Observed example · CVE (1)
- CVE-2021-44228 Apache Log4j2 2.0-beta9 through 2.15.0 (excluding security releases 2.12.2, 2.12.3, and 2.3.1) JNDI features used in configuration, log… vulnerability
Child of · CWE (2)
Peer of · CWE (1)
- CWE-1336 Improper Neutralization of Special Elements Used in a Template Engine weakness
Referenced by CVE · weakness (213)
- CVE-2026-95664 Improper Neutralization of Special Elements used in an Expression Language Statement ('Expression Language Injection') vulnerability in… vulnerability
- CVE-2026-109432 Camunda 7.24.0 before 7.24.14 and 7.23.0 before 7.23.17 contains an expression injection vulnerability where AdhocQueryValidator.validate()… vulnerability
- CVE-2026-83531 Improper Control of Generation of Code ('Code Injection'), Improper Neutralization of Special Elements used in an Expression Language… vulnerability
- CVE-2026-108334 A flaw was found in the internal WebAssembly (WASM) shim used by the Kuadrant operator. vulnerability
- CVE-2026-104711 Improper neutralization of special elements used in an expression language statement ('Expression Language Injection') vulnerability in… vulnerability
- CVE-2026-87830 In the StAX streaming WS-SecurityPolicy validator, certain relative or unsupported XPath expressions can be converted into paths that never… vulnerability
- CVE-2026-91145 Activiti through 7.1.0.M6 fails to validate hash-brace deferred expressions in process variables, allowing attackers to bypass expression… vulnerability
- CVE-2026-52439 An issue in xiandafu beetl 3.20.2 allows a remote attacker to execute arbitrary code via the type.new function and the property reflection… vulnerability
- CVE-2026-65591 n8n contains a sanitizer bypass vulnerability in the legacy expression evaluator's computed-member handler. vulnerability
- CVE-2026-57281 Jenkins Script Security Plugin 1402.v94c9ce464861 and earlier does not reject Groovy AST transformation annotations carrying an extensions… vulnerability
- CVE-2026-11561 Improper neutralization of special elements used in an expression language statement ('expression language injection') vulnerability in… vulnerability
- CVE-2026-40985 Applications that configure the WebFlowELExpressionParser are vulnerable to the use of malicious Unified EL expressions. vulnerability
- CVE-2026-41717 Spring Data MongoDB contains a SpEL (Spring Expression Language) expression injection vulnerability. vulnerability
- CVE-2026-41719 A SpEL Injection vulnerability exists in the Spring Data KeyValue if unsanitized user input is passed as Sort into a repository query… vulnerability
- CVE-2026-41729 Spring Data REST is vulnerable to SpEL expression injection through map-typed properties when processing JSON Patch… vulnerability
- CVE-2026-8888 Version 3.0.7 of the Securly Chrome Extension downloads config.json over HTTP and compiles server-provided patterns as JavaScript regular… vulnerability
- CVE-2026-44209 Banks generates meaningful LLM prompts using a template language that makes sense. vulnerability
- CVE-2026-2586 An authenticated Remote Code Execution (RCE) vulnerability was identified in GlassFish's Administration Console. vulnerability
- CVE-2026-2587 A critical Remote Code Execution (RCE) vulnerability was identified in the server-side template rendering mechanism used by the Glassfish… vulnerability
- CVE-2026-31380 Improper Neutralization of Special Elements used in an Expression Language Statement ('Expression Language Injection') vulnerability in… vulnerability
- CVE-2026-26462 Offline Hospital Management System 5.3.0 allows remote code execution due to an improper Electron renderer configuration. vulnerability
- CVE-2026-8759 A vulnerability was identified in xiandafu beetl up to 3.20.2. vulnerability
- CVE-2026-41901 Thymeleaf is a server-side Java template engine for web and standalone environments. vulnerability
- CVE-2026-41705 Spring AI's MilvusVectorStore#doDelete(List) implementation is vulnerable to filter-expression injection via unsanitized document IDs. vulnerability
- CVE-2026-41883 OmniFaces is a utility library for Faces. vulnerability
- CVE-2026-28201 An improper input validation, together with an overly permissive default CORS configuration in Open Notebook v1.8.1 allows remote attacker… vulnerability
- CVE-2026-42811 In plain terms, Apache Polaris is supposed to issue short-lived GCS credentials that only work for one table's files, but a crafted… vulnerability
- CVE-2026-40897 Math.js is an extensive math library for JavaScript and Node.js. vulnerability
- CVE-2026-40477 Thymeleaf is a server-side Java template engine for web and standalone environments. vulnerability
- CVE-2026-40478 Thymeleaf is a server-side Java template engine for web and standalone environments. vulnerability