Cyber Resilience

CVE-2024-28253

CriticalRCE

Published: 15 March 2024

Published
15 March 2024
Modified
04 September 2025
KEV Added
Patch
CVSS Score v3.1 9.4 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L
EPSS Score 0.9292 99.8th percentile
Risk Priority 75 60% EPSS · 20% KEV · 20% CVSS

Summary

CVE-2024-28253 is a critical-severity Code Injection (CWE-94) vulnerability in Open-Metadata Openmetadata. Its CVSS base score is 9.4 (Critical).

Operationally, ranked in the top 0.2% of CVEs by exploit likelihood; it is not currently listed in the CISA KEV catalog.

Deeper analysis

OpenMetadata, a platform for metadata discovery and governance, contains a SpEL expression injection vulnerability (CWE-94) in the policy-handling code path. The `CompiledRule::validateExpression` method is invoked from `PolicyRepository.prepare`, which is reached via `EntityRepository.prepareInternal` during `EntityResource.createOrUpdate`. Because the authorization check occurs after this preparation step, an attacker-supplied expression can be evaluated before any access control is enforced.

An unauthenticated attacker can trigger the flaw by sending a PUT request to `/api/v1/policies`, which is handled by `PolicyResource.createOrUpdate`. Successful exploitation yields remote code execution on the server, with the issue carrying a CVSS 3.1 score of 9.4 reflecting network-accessible attack with no required credentials or user interaction.

The vulnerability was reported as GHSL-2023-252 and has been fixed in OpenMetadata 1.3.1; the project states there are no known workarounds and recommends immediate upgrade. The associated EPSS score stands at 0.9292 with no material post-disclosure rise indicated.

EU & UK References

Vulnerability details

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()`.…

more

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.

CWE(s)

Related Threats

No named actor attribution yet. ATT&CK technique mapping in progress for this CVE.

Affected Assets

open-metadata
openmetadata
≤ 1.3.1

Mitigating Controls

Likely Mitigating Controls AI

Per-CVE control mapping for this CVE has not run yet; the list below is derived from the weakness types (CWEs) cited in the NVD entry.

addresses: CWE-94

Makes persistent code injection into loaded programs impossible when the executable image itself resides on hardware-protected read-only media.

addresses: CWE-94

Dynamically generated code can be produced and executed inside the isolated chamber, preventing host compromise from code-injection payloads.

addresses: CWE-94

Validates inputs used in dynamic code generation to block injected directives.

addresses: CWE-94

Directly prevents execution of attacker-supplied code written into data memory regions.

References