{"id":"CVE-2026-121557","kind":"vulnerability","aliases":["CVE-2026-121557"],"related":[],"title":"WPPConnect Server: missing auth lets anyone send WhatsApp messages","description":"WPPConnect Server through 2.10.74 contains a missing authentication vulnerability that allows unauthenticated attackers to send WhatsApp messages by calling the Chatwoot webhook route without verifyToken middleware. Attackers who know or guess a connected session name can POST outgoing message bodies to send arbitrary texts or files from that account to any number.","summary":"WPPConnect Server through 2.10.74 exposes a Chatwoot webhook route that skips its token check. An unauthenticated attacker who knows or guesses a connected session name can send arbitrary text or files from that WhatsApp account to any number.","severity":"high","cvss":8.2,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"wppconnect-server","fixed":[],"affected":"<= 2.10.74","ecosystem":"npm"}],"ecosystems":[],"tags":["ai-tooling","chatwoot","self-hosted","whatsapp","wppconnect"],"not_affected_if":["not-internet-reachable","route-not-exposed"],"how_to_check":"- Run your WPPConnect Server version (package.json or the Docker image tag); versions up to and including 2.10.74 are listed as affected.\n- In src/routes/index.ts, find the /api/:session/chatwoot route (line ~963 in v2.10.74) and check whether verifyToken is in its middleware chain.\n- Test from outside: POST to /api/<session>/chatwoot without an Authorization header. Do this only on your own server. Any response other than 401/403 means the route is open.\n- Also check whether the server port (default 21465) is reachable from the internet.","fix":null,"status":"open","published_at":"2026-11-03T16:17:28+00:00","first_seen_at":"2026-11-03T16:21:44+00:00","triaged_at":"2026-11-03T16:23:47+00:00","updated_at":"2026-11-03T16:25:38+00:00","category":"ai-tooling","confidence":0.6,"triage":{"at":"2026-11-03T16:23:47Z","model":"claude-haiku-5-5","output":{"fix":"unknown","reach":"internet","title":"WPPConnect Server: missing auth lets anyone send WhatsApp messages","impact":"medium","summary":"WPPConnect Server through 2.10.74 exposes a Chatwoot webhook route that skips its token check. An unauthenticated attacker who knows or guesses a connected session name can send arbitrary text or files from that WhatsApp account to any number.","audience":"businesses","category":"ai-tooling","nicknames":[],"who_cares":["wppconnect","whatsapp","chatwoot","self-hosted"],"confidence":0.6,"fix_status":"unknown","needs_auth":"no","worst_case":"Attacker sends WhatsApp messages from connected accounts to any number","analyst_note":"Confirm the fixed version and whether the Chatwoot webhook route is enabled by default; check the vulncheck advisory for details.","how_to_check":"- Check the installed WPPConnect Server version against `2.10.74`.\n- Look for the Chatwoot webhook route in the server code and confirm whether `verifyToken` middleware is applied to it.\n- Check whether the webhook endpoint is reachable from the internet.","plain_action":"","needs_analyst":true,"not_affected_if":["route-not-exposed"],"who_is_affected":"Teams running WPPConnect Server up to and including 2.10.74 with the Chatwoot integration route reachable over the network. The sources describe the route as lacking verifyToken middleware, so exposure depends on whether the route is exposed. Deployments with the route blocked or not in use are likely not affected, but the sources do not confirm this.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"unknown"},"cost_usd":0.000715,"input_tokens":4165,"output_tokens":598,"severity_before":"high"},"analyst_status":"done","analyst_note":"Confirm the fixed version and whether the Chatwoot webhook route is enabled by default; check the vulncheck advisory for details.","search":"'-121557':12A,15A '-2026':11A,14A '2.10.74':31B,69C 'account':62B,114C 'ai':20B 'ai-tool':19B 'allow':76C 'anyon':6A 'arbitrari':55B,108C 'attack':44B,78C,92C 'auth':4A 'authent':73C 'bodi':105C 'call':84C 'chatwoot':22B,34B,86C 'check':41B 'connect':50B,98C 'contain':70C 'cve':10A,13A 'expos':32B 'file':58B,111C 'guess':48B,96C 'host':25B 'know':46B,94C 'let':5A 'messag':9A,82C,104C 'middlewar':91C 'miss':3A,72C 'name':52B,100C 'number':65B,117C 'outgo':103C 'post':102C 'rout':36B,88C 'self':24B 'self-host':23B 'send':7A,54B,80C,107C 'server':2A,18A,29B,67C 'session':51B,99C 'skip':38B 'text':56B,109C 'token':40B 'tool':21B 'unauthent':43B,77C 'verifytoken':90C 'vulner':74C 'webhook':35B,87C 'whatsapp':8A,26B,61B,81C 'without':89C 'wppconnect':1A,17A,27B,28B,66C 'wppconnect-server':16A","nicknames":[],"mitigations":[],"who_affected":"Teams that self-host WPPConnect Server (npm wppconnect-server) up to and including 2.10.74, typically as a WhatsApp gateway for Chatwoot or bots. An attacker who can reach the server over the network and knows or guesses the name of a connected session can send text or files from that WhatsApp account to any number, with no token. Servers that are not reachable from untrusted networks, or whose /api/:session/chatwoot route is blocked at a proxy, have much less exposure. The sources do not say whether the route is enabled by default.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"none","audience":"businesses","plain_action":null,"pkeys":["wppconnectserver"],"ptokens":["server","wppconnect"],"labels":["aitooling","chatwoot","high","selfhosted","whatsapp","wppconnect"],"first_public_at":"2026-11-03T16:17:28+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-121557","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-121557","severity":null,"published_at":"2026-11-03T16:17:28+00:00","modified_at":"2026-11-03T16:17:28+00:00","first_seen_at":"2026-11-03T16:21:44+00:00","fetched_at":"2026-11-03T16:21:44+00:00","note":null},{"source":"analyst","external_id":"CVE-2026-121557:1503","url":null,"severity":null,"published_at":"2026-11-03T16:25:38+00:00","modified_at":"2026-11-03T16:25:38+00:00","first_seen_at":"2026-11-03T16:25:38+00:00","fetched_at":"2026-11-03T16:25:38+00:00","note":"Read VulnCheck advisory (third-party CNA text only). It lists a fix commit and GitHub issue #2701, but I could not load either, so no fixed version is confirmed. The releases page I could load tops out at v2.10.63, which conflicts with the 2.10.74 affected range. Whether the Chatwoot route is on by default is not stated in the sources. Nothing marked verified."}],"documents":[{"id":58849,"url":"https://www.vulncheck.com/advisories/wppconnect-server-through-2.10.74-missing-authentication-via-api-session-chatwoot","title":"Third-party advisory: www.vulncheck.com","kind":"advisory","source":"nvd","publisher":"research","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Third-party advisory: www.vulncheck.com"}],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}