Miggo Logo

GHSA-3632-54q8-m96x: arenavec has multiple memory corruption vulnerabilities in safe APIs

N/A

CVSS Score

Basic Information

CVE ID
-
EPSS Score
-
Published
9/2/2025
Updated
9/2/2025
KEV Status
No
Technology
TechnologyRust

Technical Details

CVSS Vector
-
Package NameEcosystemVulnerable VersionsFirst Patched Version
arenavecrust<= 0.1.1

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The analysis identified multiple memory corruption vulnerabilities in the arenavec crate, stemming from three distinct issues reported on GitHub. Since no patches are available, the analysis is based on the detailed bug reports, which include proofs-of-concept and point to the exact sources of the vulnerabilities.

The root causes are:

  1. Improper Trust (CWE-822): The AllocHandle trait is not declared unsafe, yet the library's internal code makes unsafe assumptions about the validity of pointers returned by user implementations of this trait. This leads to an untrusted pointer dereference in SliceVec::push.
  2. Heap Buffer Overflow (CWE-122): The allocate_inner function, called by SliceVec::reserve, can fail to allocate memory while still increasing the vector's capacity. This causes SliceVec::push to write past the buffer's boundary.
  3. Double Free (CWE-415): The SliceVec::split_off function incorrectly handles ownership when splitting at index 0, leading to two SliceVec instances pointing to the same data. When both are dropped, the data is freed twice.

The identified vulnerable functions are the public APIs that trigger these conditions (push, reserve, split_off) and the underlying trait methods and private functions where the flaws reside (AllocHandle::allocate, AllocHandle::allocate_or_extend, allocate_inner). Any of these functions could appear in a runtime profile during exploitation.

Vulnerable functions

Only Mi**o us*rs **n s** t*is s**tion

WAF Protection Rules

WAF Rule

T** *r*t* **s t** *ollowin* vuln*r**iliti*s: - T** pu*li* tr*it `*r*n*v**::*ommon::*llo***n*l*` *llows t** r*turn o* r*w point*rs t*rou** its m*t*o*s `*llo**t*` *n* `*llo**t*_or_*xt*n*`. *ow*v*r, t** tr*it is not m*rk** *s uns***, m**nin* us*rs o* t

Reasoning

T** *n*lysis i**nti*i** multipl* m*mory *orruption vuln*r**iliti*s in t** `*r*n*v**` *r*t*, st*mmin* *rom t*r** *istin*t issu*s r*port** on *it*u*. Sin** no p*t***s *r* *v*il**l*, t** *n*lysis is **s** on t** **t*il** *u* r*ports, w*i** in*lu** proo*