Malicious code in xerohub-discord-voice-v2 (npm)
--- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (066cb7d27a71055b89630648ee5ae6eed64d6db93e883de66a5db678cfa7663c) xerohub-discord-voice-v2 advertises itself as a Discord voice-channel joiner but its exported startVoiceJoiner() flow covertly forwards the caller's Discord USER_TOKEN and USER_TOKEN_2 (raw Discord account credentials), along with username, server and channel identifiers, to a hardcoded author-controlled Discord webhook constant DEVELOPER_BACKEND_WEBHOOK via a sendToDeveloperBackend() helper in Xerohub_Voice.js. In version 1.9.0 the webhook URL is still the literal placeholder 'https://discord.com/api/webhooks/YOUR_DEV_WEBHOOK_ID/YOUR_DEV_WEBHOOK_TOKEN' and a guard short-circuits the axios.post call, so no tokens leave the machine in this specific version — but the exfiltration path is fully implemented and only requires the author to substitute a real webhook ID and token in a subsequent publish for every caller's Discord credentials to be silently transmitted. The package also depends on discord.js-selfbot-v13 and drives a selfbot Client using the user's raw account token, indicating the intended targets are users pasting real Discord account credentials rather than bot tokens. Thai-language comments in the source describe the mechanism as a hidden 'developer backend'. The covert relay of caller-supplied account credentials to an author endpoint conflicts with the package's stated purpose as a voice joiner.
AI Analysis
Technical Summary
The xerohub-discord-voice-v2 npm package exports a function startVoiceJoiner() which, beyond its advertised purpose of joining Discord voice channels, silently sends the caller-supplied Discord USER_TOKEN along with account details to a hardcoded Discord webhook URL. The webhook URL is read from an environment variable but falls back to an attacker-controlled hardcoded URL if not set. The included example code contains a literal USER_TOKEN string that is also sent to the webhook on execution. This exfiltration of authentication tokens enables full Discord account compromise. This behavior is malicious and not disclosed as part of the package's intended functionality.
Potential Impact
Exfiltration of Discord user tokens to an attacker-controlled webhook allows full account takeover, including reading and sending messages, accessing server memberships, direct messages, and billing information. This compromises user privacy and security, potentially leading to account abuse or fraud. The malicious behavior occurs silently during normal use of the package's API.
Mitigation Recommendations
No official patch or remediation is currently documented for this package. Users should avoid using xerohub-discord-voice-v2 versions listed as affected. Since the package exfiltrates sensitive tokens silently, immediate removal and replacement with a trusted alternative is recommended. Monitor for any unauthorized Discord account activity if this package was used. Patch status is not yet confirmed — check the vendor advisory or npm repository for updates.
Malicious code in xerohub-discord-voice-v2 (npm)
Description
--- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (066cb7d27a71055b89630648ee5ae6eed64d6db93e883de66a5db678cfa7663c) xerohub-discord-voice-v2 advertises itself as a Discord voice-channel joiner but its exported startVoiceJoiner() flow covertly forwards the caller's Discord USER_TOKEN and USER_TOKEN_2 (raw Discord account credentials), along with username, server and channel identifiers, to a hardcoded author-controlled Discord webhook constant DEVELOPER_BACKEND_WEBHOOK via a sendToDeveloperBackend() helper in Xerohub_Voice.js. In version 1.9.0 the webhook URL is still the literal placeholder 'https://discord.com/api/webhooks/YOUR_DEV_WEBHOOK_ID/YOUR_DEV_WEBHOOK_TOKEN' and a guard short-circuits the axios.post call, so no tokens leave the machine in this specific version — but the exfiltration path is fully implemented and only requires the author to substitute a real webhook ID and token in a subsequent publish for every caller's Discord credentials to be silently transmitted. The package also depends on discord.js-selfbot-v13 and drives a selfbot Client using the user's raw account token, indicating the intended targets are users pasting real Discord account credentials rather than bot tokens. Thai-language comments in the source describe the mechanism as a hidden 'developer backend'. The covert relay of caller-supplied account credentials to an author endpoint conflicts with the package's stated purpose as a voice joiner.
Affected software
Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
The xerohub-discord-voice-v2 npm package exports a function startVoiceJoiner() which, beyond its advertised purpose of joining Discord voice channels, silently sends the caller-supplied Discord USER_TOKEN along with account details to a hardcoded Discord webhook URL. The webhook URL is read from an environment variable but falls back to an attacker-controlled hardcoded URL if not set. The included example code contains a literal USER_TOKEN string that is also sent to the webhook on execution. This exfiltration of authentication tokens enables full Discord account compromise. This behavior is malicious and not disclosed as part of the package's intended functionality.
Potential Impact
Exfiltration of Discord user tokens to an attacker-controlled webhook allows full account takeover, including reading and sending messages, accessing server memberships, direct messages, and billing information. This compromises user privacy and security, potentially leading to account abuse or fraud. The malicious behavior occurs silently during normal use of the package's API.
Mitigation Recommendations
No official patch or remediation is currently documented for this package. Users should avoid using xerohub-discord-voice-v2 versions listed as affected. Since the package exfiltrates sensitive tokens silently, immediate removal and replacement with a trusted alternative is recommended. Monitor for any unauthorized Discord account activity if this package was used. Patch status is not yet confirmed — check the vendor advisory or npm repository for updates.
Technical Details
- Gcve Source
- db.gcve.eu
- Osv Id
- MAL-2026-11154
- Osv Schema Version
- 1.7.4
- Ecosystems
- ["npm"]
Threat ID: 6a73572fbf8831d53913ccff
Added to database: 08/05/2026, 15:30:55 UTC
Last enriched: 08/05/2026, 15:36:16 UTC
Last updated: 09/07/2026, 22:31:55 UTC
Views: 24
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.