CVE-2021-39228: linuxfoundation tremor Use After Free
Vulnerability summary
CVE-2021-39228 is a critical (CVSS 9.8) Use After Free vulnerability in linuxfoundation tremor. EPSS estimates a 1.35% chance of exploitation in the next 30 days, higher than 71% of scored vulnerabilities. 1 public exploit is recorded.
Timeline
- 17-09-2021PublishedVulnerability first disclosed.
- 04-08-2024Last modifiedVulnerability information updated.
Description
Tremor is an event processing system for unstructured data. A vulnerability exists between versions 0.7.2 and 0.11.6. This vulnerability is a memory safety Issue when using `patch` or `merge` on `state` and assign the result back to `state`. In this case, affected versions of Tremor and the tremor-script crate maintains references to memory that might have been freed already. And these memory regions can be accessed by retrieving the `state`, e.g. send it over TCP or HTTP. This requires the Tremor server (or any other program using tremor-script) to execute a tremor-script script that uses the mentioned language construct. The issue has been patched in version 0.11.6 by removing the optimization and always cloning the target expression of a Merge or Patch. If an upgrade is not possible, a possible workaround is to avoid the optimization by introducing a temporary variable and not immediately reassigning to `state`.
CVSS metrics
4 scores · 3 sources · 2 versions- CVE.orgCNA6.5MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:NDiffers
- OSV · Crates.ioEcosystem advisory · calculated6.5MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:NDiffers
EPSS trend
Probability
1.35%
Chance of exploitation in the next 30 days
Percentile
71%
Versus all other CVEs
30-day change
0.00 pp
From 1.35% on 19-09-2026
Known exploited
Compare KEV catalogsNot in any of the 3 tracked catalogs.
Public exploits
1 foundTremor Runtime
Maturity: poc
Weaknesses
CWE · root cause- CWE-416Use After FreeThe product reuses or references memory after it has been freed. At some point afterward, the memory may be allocated again and saved in another pointer, while the original pointer references a location somewhere within the new allocation. Any operations using the original pointer are no longer valid because the memory "belongs" to the code that operates on the new pointer.
- CWE-825Expired Pointer DereferenceThe product dereferences a pointer that contains a location for memory that was previously valid, but is no longer valid.
Affected systems
Crates.Io1 product
- tremor-script≥ 0.7.3, < 0.11.6
Linuxfoundation1 product
- tremor≥ 0.7.2, < 0.11.6
Tremor-rs1 product
- tremor-runtime> 0.7.2, < 0.11.6
3 vendors · 3 products
References
6 links- github.com/tremor-rs/tremor-runtime/security/advisories/GHSA-mc22-5q92-8v85X Refsource CONFIRMWEBMitigationThird Party Advisory
- github.com/tremor-rs/tremor-runtime/commit/1a2efcdbe68e5e7fd0a05836ac32d2cde78a0b2eX Refsource MISCWEBPatchThird Party Advisory
- github.com/tremor-rs/tremor-runtime/releases/tag/v0.11.6X Refsource MISCWEBRelease NotesThird Party Advisory