CVE-2021-23378

9.8 CRITICAL

📋 TL;DR

CVE-2021-23378 is a critical command injection vulnerability in the picotts npm package. Attackers can execute arbitrary system commands by providing malicious input to the say() function. All users of the picotts package are affected.

💻 Affected Systems

Products:
  • picotts npm package
Versions: All versions
Operating Systems: All operating systems running Node.js
Default Config Vulnerable: ⚠️ Yes
Notes: Any application using picotts with user-controlled input passed to say() function is vulnerable.

📦 What is this software?

⚠️ Manual Verification Required

This CVE does not have specific version information in our database, so automatic vulnerability detection cannot determine if your system is affected.

Why? The CVE database entry doesn't specify which versions are vulnerable (no version ranges provided by the vendor/NVD).

🔒 Custom verification scripts are available for registered users. Sign up free to download automated test scripts.

Recommended Actions:
  1. Review the CVE details at NVD
  2. Check vendor security advisories for your specific version
  3. Test if the vulnerability is exploitable in your environment
  4. Consider updating to the latest version as a precaution

⚠️ Risk & Real-World Impact

🔴

Worst Case

Full system compromise allowing attackers to execute arbitrary commands with the privileges of the Node.js process, potentially leading to data theft, ransomware deployment, or complete system takeover.

🟠

Likely Case

Remote code execution leading to data exfiltration, installation of backdoors, or lateral movement within the network.

🟢

If Mitigated

Limited impact if input validation prevents malicious payloads from reaching the vulnerable function.

🌐 Internet-Facing: HIGH
🏢 Internal Only: HIGH

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Exploitation is straightforward - attacker simply needs to pass malicious shell commands to the vulnerable function.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: N/A

Vendor Advisory: https://github.com/luisivan/node-picotts

Restart Required: Yes

Instructions:

1. Remove picotts package from your project. 2. Use alternative text-to-speech solutions. 3. Restart your application.

🔧 Temporary Workarounds

Input Sanitization

all

Implement strict input validation and sanitization for all user inputs passed to the say() function

Package Replacement

all

Replace picotts with a maintained alternative text-to-speech package

npm uninstall picotts
npm install [alternative-package]

🧯 If You Can't Patch

  • Implement strict input validation to reject any input containing shell metacharacters
  • Run the application with minimal privileges and in a sandboxed environment

🔍 How to Verify

Check if Vulnerable:

Check package.json for picotts dependency: grep -r 'picotts' package.json

Check Version:

npm list picotts

Verify Fix Applied:

Verify picotts is not in package.json and not installed in node_modules

📡 Detection & Monitoring

Log Indicators:

  • Unusual system command execution from Node.js process
  • Suspicious shell commands in application logs

Network Indicators:

  • Unexpected outbound connections from the application server

SIEM Query:

process.name:node.exe AND command_line:*cmd.exe* OR command_line:*powershell* OR command_line:*bash*

🔗 References

📤 Share & Export