GHSA-3632-54q8-m96x: arenavec has multiple memory corruption vulnerabilities in safe APIs
The crate has the following vulnerabilities:
The public trait
arenavec::common::AllocHandle
allows the return of raw pointers through its methodsallocate
andallocate_or_extend
. However, the trait is not marked as unsafe, meaning users of the crate may implement it under the assumption that the library safely handles the returned raw pointers. These raw pointers can later be dereferenced within safe APIs of the crate-such asarenavec::common::SliceVec::push
-potentially leading to arbitrary memory access.The safe API
arenavec::common::SliceVec::reserve
can reach the private functionarenavec::common::allocate_inner
. Incorrect behavior inallocate_inner
may result in aSliceVec
with an increased capacity, even though the underlying memory has not actually been expanded. This mismatch betweenSliceVec.capacity
and the actual reserved memory can lead to a heap buffer overflow.The safe API
arenavec::common::SliceVec::split_off
can duplicate the ownership of the elements inself
(of typeSliceVec
) if they implement theDrop
trait. Specifically, whenat == 0
, the method returns a newSliceVec
with the same length asself
. Since bothself
and the returned object point to the same heap memory, dropping one will deallocate the shared memory. When the other is subsequently dropped, it will attempt to free the same memory again, resulting in a double free violation.
References
Code Behaviors & Features
Detect and mitigate GHSA-3632-54q8-m96x with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Learn more about Dependency Scanning →