CVE-2026-110640 is an OS command injection (CWE-78) in the whisper-node Node.js package through 1.1.1, scored 9.8 critical. A crafted file path or language option is placed into a shell command. I could not confirm a fixed release, so keep untrusted values away from the function.
What's affected
whisper-node through 1.1.1, per the CVE record. The weak values are filePath and whisperOptions.language passed to whisper(). The package builds a command in createCppCommand() and runs it through shelljs exec(), so shell syntax such as command substitution is interpreted.
The fix I found is an open pull request that moves to execFile, and it was not merged when I looked. Check the project for a fixed release before you rely on one.
How to check if you're exposed
Check your dependency tree, including transitive uses:
npm ls whisper-node
Then search for calls to whisper( in your own code and trace where the file path and the language option come from. A path that comes from an upload or a language value taken from a request is the risky pattern. Fixed paths and a language chosen from a short allow list are much safer.
You can also run the free in-browser dependency scan or browse the Gold directory to see where a package or product shows up in your stack.
What to do now
- Find all uses of
whisper-nodeand note which pass user input to it. - Validate the language option against a short list of allowed codes, and generate your own file names for audio files in a fixed directory.
- If you can, replace the call with your own wrapper that runs the underlying binary with
execFileand an argument array. - Watch the project and its pull request for a fixed release, and test it before you upgrade.
- Run transcription workers as a low privilege user with limited network and file access.
Why it matters
Building a command as one string and giving it to a shell is a long standing source of injection bugs. The record says command substitution works here, so even a value that looks harmless can run something else. The class is CWE-78.
Transcription services often handle audio uploads from many users and run on machines with large models and API keys. A command injection there runs with the Node.js process privileges, which can reach more than the audio files.
The record does not flag this CVE as exploited in the wild and it is not a CISA Known Exploited Vulnerability. Reachability matters a lot here. If untrusted input never reaches the function, the risk is low, and a reachability check can tell you which of your services belong in the first group.
Try it yourself
Click through it at your own pace, or open it full screen.
Quick check
Is there a fixed version?
I could not confirm one. A pull request moving to execFile was open when I checked.
What is the quickest mitigation?
Stop passing untrusted values to whisper() and validate the language value against an allow list.
Sources
Last reviewed: 19 October 2026.