MvccRwLock allows data races & aliasing violations
Moderate severity
GitHub Reviewed
Published
Aug 25, 2021
to the GitHub Advisory Database
•
Updated Jan 9, 2023
Withdrawn
This advisory was withdrawn on Aug 24, 2021
Description
Reviewed
Aug 9, 2021
Withdrawn
Aug 24, 2021
Published to the GitHub Advisory Database
Aug 25, 2021
Last updated
Jan 9, 2023
Affected versions of the
noise_search
crate unconditionally implement Send/Sync forMvccRwLock
.This can lead to data races when types that are either
!Send
or!Sync
(e.g.Rc<T>
,Arc<Cell<_>>
) are contained insideMvccRwLock
and sent across thread boundaries. The data races can potentially lead to memory corruption (as demonstrated in the PoC from the original report issue).Also, safe APIs of
MvccRwLock
allow aliasing violations by allowing&T
andLockResult<MutexGuard<Box<T>>>
to co-exist in conflicting lifetime regions. The APIs ofMvccRwLock
should either be marked asunsafe
orMbccRwLock
should be changed to private or pub(crate).References