---
id: "CVE-2026-119703"
kind: "vulnerability"
aliases: ["CVE-2026-119703"]
title: "xiaozhi-esp32-server: WebSocket auth bypass lets attackers impersonate devices"
severity: "medium"
cvss: 6.3
epss: null
exploited: false
status: "open"
category: "ai-tooling"
products: [{"name": "xiaozhi-esp32-server", "fixed": [], "affected": "<= 0.9.8", "ecosystem": "github"}]
ecosystems: []
tags: ["ai-tooling", "esp32", "self-hosted", "websocket", "xiaozhi-esp32-server"]
not_affected_if: ["auth-disabled", "default-config", "empty-allowlist", "not-internet-exposed", "unknown"]
published_at: "2026-10-30T16:17:51+00:00"
first_seen_at: "2026-10-30T16:31:26+00:00"
updated_at: "2026-10-30T16:34:33+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-119703", "first_seen_at": "2026-10-30T16:31:26+00:00"}, {"source": "analyst", "url": null, "first_seen_at": "2026-10-30T16:34:33+00:00"}]
---

# xiaozhi-esp32-server: WebSocket auth bypass lets attackers impersonate devices

xiaozhi-esp32-server, a voice-assistant backend for ESP32 devices, skips Bearer HMAC token checks when a request carries an allowlisted device ID in its Device-ID header. A remote attacker who spoofs that header can open an authenticated WebSocket session, issue voice commands, exchange audio and read that device's conversation context.

_Summary, check and fix written by a model from the sources; labelled as such._

## Affected

- github:xiaozhi-esp32-server affected <= 0.9.8 fixed ?

## How to check

In xiaozhi-server config (config.yaml / manager-api parameters), check server.auth.enabled: true together with a non-empty server.auth.allowed_devices list. If both are set, any client sending a Device-ID header equal to a listed MAC skips Bearer token verification. If auth is disabled or allowed_devices is empty, this path is not used.

## Fix

No released fix found as of 2026-10-30 (latest v0.9.8 is affected). Fix PR #3457 is referenced in issue #3448; watch for a release after v0.9.8. Interim: empty allowed_devices so every device must present a Bearer token, per the issue thread.

## Timeline

- 2026-10-30T16:31:26+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-119703
- 2026-10-30T16:34:33+00:00 analyst — Maintainer-repo issue #3448 (confirmed by contributor on main) read; vulnerable only when server.auth.enabled=true AND allowed_devices non-empty (shipped default enabled:false). No released fix: v0.9.8 notes do not mention it; fix PR #3457 referenced, merge status not confirmed. Not marked verified: how-to-check and who_affected come from an issue thread, not a vendor advisory.

## Documents

- [advisory] Device authentication allowlist can be bypassed by spoofing the Device-ID header (#3448) https://github.com/xinnan-tech/xiaozhi-esp32-server/issues/3448
- [mentions] xiaozhi-esp32-server releases (v0.9.8, 23 Oct 2026) https://github.com/xinnan-tech/xiaozhi-esp32-server/releases

## From the sources

xiaozhi-esp32-server through 0.9.8 contains an authentication bypass vulnerability in WebSocketServer._handle_auth that allows remote unauthenticated attackers to skip Bearer HMAC token verification by spoofing the Device-ID header. Attackers supplying an allowlisted MAC-address-shaped device identifier can open an authenticated WebSocket session, issue voice-assistant commands, exchange audio, and read that device's conversation context.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
