CVE-2024-28253

Code Injection in OpenMetadata is a unified platform for discovery, observability, and governance powered by a central metadata repository, in-depth lineage, and seamless team collaboration

Verified by Precogs Threat Research
Last Updated: Sep 4, 2025
Base Score
9.4CRITICAL

Executive Summary

CVE-2024-28253 is a critical severity vulnerability affecting appsec. It is classified as Code Injection. Ensure your systems and dependencies are patched immediately to mitigate exposure risks.

Precogs AI Insight

"OpenMetadata contains an unauthenticated remote code execution vulnerability due to Spring Expression Language (SpEL) injection. Attackers send crafted HTTP requests containing SpEL payloads to execute arbitrary Java code. Precogs Application Security Module tracks unescaped dynamic code evaluation pathways."

Exploit Probability (EPSS)
High (92.0%)
Public POC
Available
Exploit Probability
High (84%)
Public POC
Available
Affected Assets
appsecCWE-94

What is this vulnerability?

CVE-2024-28253 is categorized as a critical Code Injection flaw with a CVSS base score of 9.4. Based on our vulnerability intelligence, this issue occurs when the application fails to securely handle untrusted data boundaries.

OpenMetadata is a unified platform for discovery, observability, and governance powered by a central metadata repository, in-depth lineage, and seamless team collaboration. CompiledRule::validateExpression is also called from PolicyRepository.prepare. prepare() is called from EntityRepository.prepareInternal() which, in turn, gets called from EntityResource.createOrUpdate(). Note that even though there is an authorization check (authorizer.authorize()), it gets called after prepareInternal() gets called and therefore after the SpEL expression has been evaluated. In order to reach this method, an attacker can send a PUT request to /api/v1/policies which gets handled by PolicyResource.createOrUpdate(). This vulnerability was discovered with the help of CodeQL's Expression language injection (Spring) query and is also tracked as GHSL-2023-252. This issue may lead to Remote Code Execution and has been addressed in version 1.3.1. Users are advised to upgrade. There are no known workarounds for this vulnerability.

This architectural defect enables adversaries to bypass intended security controls, directly manipulating the application's execution state or data layer. Immediate strategic intervention is required.

Risk Assessment

MetricValue
CVSS Base Score9.4 (CRITICAL)
Vector StringCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L
PublishedMarch 15, 2024
Last ModifiedSeptember 4, 2025
Related CWEsCWE-94

Impact on Systems

Data Exfiltration: Attackers can extract sensitive data from backend databases, configuration files, or internal services.

Authentication Bypass: Exploiting this flaw may allow unauthorized access to protected resources and administrative interfaces.

Lateral Movement: Once initial access is gained, attackers can pivot to internal systems and escalate privileges.

How to Fix and Mitigate CVE-2024-28253

  1. Apply Vendor Patches: Upgrade affected components to their latest, non-vulnerable versions immediately.
  2. Implement Input Validation: Ensure all user-supplied data is validated, sanitized, and type-checked before processing.
  3. Deploy Runtime Protection: Use Precogs continuous monitoring to detect exploitation attempts in real time.
  4. Audit Dependencies: Review and update all third-party libraries and transitive dependencies.

Defending with Precogs AI

OpenMetadata contains an unauthenticated remote code execution vulnerability due to Spring Expression Language (SpEL) injection. Attackers send crafted HTTP requests containing SpEL payloads to execute arbitrary Java code. Precogs Application Security Module tracks unescaped dynamic code evaluation pathways.

Use Precogs to continuously scan your codebase, binaries, APIs, and infrastructure for this vulnerability class and related attack patterns. Our AI-powered detection engine combines static analysis with threat intelligence to identify exploitable weaknesses before attackers do.

Start scanning with Precogs →

Vulnerability Code Signature

Attack Data Flow

StageDetail
SourceUntrusted payload via API or file upload
VectorInput passed to a dynamic code evaluation function
Sinkeval(), exec(), or similar unsafe execution sink
ImpactRemote Code Execution (RCE), full system compromise

Vulnerable Code Pattern

# ❌ VULNERABLE: Dynamic code evaluation
def process_data(user_input):
    # Taint sink: arbitrary code execution
    result = eval(user_input)
    return result

Secure Code Pattern

# ✅ SECURE: Safe parsing
import ast
def process_data(user_input):
    # Sanitized parsing: only evaluates literal structures
    result = ast.literal_eval(user_input)
    return result

How Precogs Detects This

Precogs AI Analysis Engine identifies unsafe dynamic code evaluation paths by tracking untrusted data into sinks like eval() and exec().\n

Related Vulnerabilitiesvia CWE-94

Is your system affected?

Precogs AI detects CVE-2024-28253 in compiled binaries, LLMs, and application layers — even without source code access.