SpEL Injection in `PUT /api/v1/policies` in OpenMetadata
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 1.3.1
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- 1 Nuclei template
- Exploitation: none
- Automatable: yes
- Technical impact: total
Summary
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.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: yes · Technical impact: total
- Record last updated
- EPSS reached 10%
FIRST estimates at least a 10% chance of exploitation in the next 30 days
Affected versions
- open-metadata OpenMetadata
fixed in 1.3.1
- org.open-metadata:openmetadata-serviceMaven
fixed in 1.3.1
References 7
GitHub · open-metadata/OpenMetadata
- Advisory GHSA-7vf4-x5m2-r6gr
- openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/EntityRepository.java · L693
- openmetadata-service/src/main/java/org/openmetadata/service/resources/EntityResource.java · L219
- openmetadata-service/src/main/java/org/openmetadata/service/resources/policies/PolicyResource.java · L365
- openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/PolicyRepository.java · L113