move_elements can double-free objects on panicGHSA-3qm2-rfqw-fmrw
CRITICALFix: okready/scratchpad@891561bGHSA-3qm2-rfqw-fmrw is a critical-severity (CVSS 9.8) CWE-415 vulnerability in scratchpad. A fix is available for scratchpad — see the affected versions and patch details below.
EPSS Exploitation Probability
Probability of exploitation in the next 30 days, from FIRST.org EPSS.
How urgent is this, really
Where this sits among everything scored
Real-World Exposure
scratchpadReal-time download stats are indexed for npm and PyPI packages. This vulnerability affects crates.io packages — download data is not available via public APIs for these ecosystems.
Description
Affected versions of scratchpad used ptr::read to read elements while calling a user provided function f on them. Since the pointer read duplicates ownership, a panic inside the user provided f function could cause a double free when unwinding.
The flaw was fixed in commit 891561bea by removing the unsafe block and using a plain iterator.
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 🦀crates.io | scratchpad | all versions | 1.3.1cargo update -p scratchpad --precise 1.3.1 |
Affected Products
scratchpadscratchpad_projectDetection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for scratchpad, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update scratchpad to 1.3.1 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms GHSA-3qm2-rfqw-fmrw is resolved across your whole dependency graph.
Workarounds
Constrain what reaches the vulnerable code: limit the size and shape of untrusted input, isolate the affected component in a sandboxed or least-privileged process, and enable the platform's memory-safety mitigations (ASLR, stack protector, hardened allocator) so an out-of-bounds access is more likely to fail closed than to be exploitable.
Frequently Asked Questions
Is GHSA-3qm2-rfqw-fmrw in your dependencies?
Find it across crates.io, including transitive dependencies.