Cyber Resilience

CVE-2024-28847

HighPublic PoCRCE

Published: 15 March 2024

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

Summary

CVE-2024-28847 is a high-severity Code Injection (CWE-94) vulnerability in Open-Metadata Openmetadata. Its CVSS base score is 8.8 (High).

Operationally, ranked in the top 5.9% of CVEs by exploit likelihood; it is not currently listed in the CISA KEV catalog; a public proof-of-concept is referenced.

Deeper analysis

OpenMetadata, a metadata platform for data discovery and governance, contains a Spring Expression Language (SpEL) injection vulnerability tracked as CVE-2024-28847 (CWE-94). The flaw resides in AlertUtil::validateExpression, which is invoked from EventSubscriptionRepository.prepare() during EntityRepository.prepareInternal() and ultimately from EntityResource.createOrUpdate(). Because the authorization check occurs after prepareInternal(), an attacker-supplied expression in an event subscription can be evaluated before access control is enforced.

An authenticated user can exploit the issue by issuing a PUT request to /api/v1/events/subscriptions, which is handled by EventSubscriptionResource.createOrUpdateEventSubscription(). Successful exploitation yields remote code execution with the privileges of the application process, corresponding to the observed CVSS 8.8 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H).

The vulnerability was fixed in OpenMetadata 1.2.4; the project advises immediate upgrade and states that no workarounds exist. The associated EPSS score rose from a low baseline to a peak of 0.2155 (current value 0.1269), indicating that exploitation interest increased after public disclosure.

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. Similarly to the GHSL-2023-250 issue, `AlertUtil::validateExpression` is also called from `EventSubscriptionRepository.prepare()`, which can lead to Remote Code Execution.…

more

`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/events/subscriptions` which gets handled by `EventSubscriptionResource.createOrUpdateEventSubscription()`. This vulnerability was discovered with the help of CodeQL's Expression language injection (Spring) query. This issue may lead to Remote Code Execution and has been addressed in version 1.2.4. Users are advised to upgrade. There are no known workarounds for this vulnerability. This issue is also tracked as `GHSL-2023-251`.

CWE(s)

Related Threats

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

Affected Assets

open-metadata
openmetadata
≤ 1.2.4

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