CVE-2021-24044 — hermes-engine
CRITICALCVE-2021-24044 is a critical-severity (CVSS 9.8) CWE-843 vulnerability in hermes-engine. A fix is available for hermes-engine — see the affected versions and patch details below.
Access of Resource Using Incompatible Type in Hermes
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
How broadly this vulnerability is actually deployed: weekly install volume shows current usage, a proxy for how much of the ecosystem is exposed.
hermes-enginenpmDescription
By passing invalid javascript code where await and yield were called upon non-async and non-generator getter/setter functions, Hermes would invoke generator functions and error out on invalid await/yield positions. This could result in segmentation fault as a consequence of type confusion error, with a low chance of RCE. This issue affects Hermes versions prior to v0.10.0.
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 📦npm | hermes-engine | all versions | 0.10.0npm install hermes-engine@0.10.0 |
Affected Products
hermesfacebookDetection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for hermes-engine, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update hermes-engine to 0.10.0 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms CVE-2021-24044 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 CVE-2021-24044 in your dependencies?
Find it across npm, including transitive dependencies.