devalue: stringifyAsync can cause an unhandled rejection despite a caught returned promiseGHSA-x5rw-q4pp-hg5g
Fix: sveltejs/devalue@dae8153GHSA-x5rw-q4pp-hg5g is a security vulnerability in devalue. A fix is available for devalue — see the affected versions and patch details below.
Real-World Exposure
How broadly this vulnerability is actually deployed: weekly install volume shows current usage, and reverse-dependency count shows how many other packages break if it stays unpatched.
devaluenpmDescription
When serializing multiple promises, a later promise can reject before an earlier one settles. An internal rejected promise remains unhandled even if the caller catches the returned stringifyAsync promise. Under Node's default unhandled-rejection behavior this can terminate the process. Applications whose asynchronous failures/timing can be influenced by requests are potentially exposed.
This is essentially impossible to exploit, and is much more likely to surface as a developer-introduced bug.
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 📦npm | devalue | ≥ 5.8.0&&< 5.9.3 | 5.9.3npm install devalue@5.9.3 |
Detection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for devalue, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update devalue to 5.9.3 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms GHSA-x5rw-q4pp-hg5g is resolved across your whole dependency graph.
Workarounds
If you can't upgrade right away: gate or disable the affected feature, validate untrusted input at the boundary, and avoid passing attacker-controlled data into the vulnerable path. O3's runtime protection blocks exploitation in production as an interim safeguard until the upgrade lands.
Frequently Asked Questions
Is GHSA-x5rw-q4pp-hg5g in your dependencies?
Find it across npm, including transitive dependencies.