Better Messages guest headers can impersonate a privileged AI bot
An unauthenticated guest registration stores X-Real-IP verbatim as the guest IP address. is_ai_bot_user() treats an ai-chat-bot- prefix in that value as an internal bot identity, and user_can_join()/user_can_read() then bypass role allowlists, draft-room checks and join filters. The forged identity can join restricted rooms, post messages and read private history. The exact registration route is not disclosed. Authoritative affected range: <= 2.15.33. Confirmed remediation: 3.0.3.
- Component
- Better Messages – Chat Rooms, Group Chat, Private Messages & AI Chat Bots
- Plugin slug
bp-better-messages- Affected
- <= 2.15.33
- Safe version
3.0.3- Published
- Sep 19, 2026
This CVE was published Sep 19, 2026 and is one of 19 known issues for this plugin.
Update, patch or deactivate.
Confirmed fixed release: 3.0.3. The combined 3.0.0–3.0.3 notes fix guest registration being mistaken for an internal AI bot. 3.0.3 is the conservative upper release in that combined entry. Official changelog: https://wordpress.org/plugins/bp-better-messages/#developers . Disable guest registration until updated. Never derive privileged identity from request headers or an IP-shaped field; use server-controlled bot identities and enforce room authorization independently of that marker.
A safe version is available, so updating to that version or later is the preferred remediation. If an immediate update is not practical, consider a targeted application patch or temporarily restricting the affected functionality.
Deactivate only when warranted by your risk profile, or when advised by your hosting provider in the limited circumstances where the vulnerability cannot otherwise be mitigated. If you’re unsure which action is appropriate, contact Fused or your hosting provider for guidance.
Technical description
The Better Messages – Chat Rooms, Group Chat, Private Messages & AI Chat Bots plugin for WordPress is vulnerable to Information Exposure by Spoofing in all versions up to, and including, 2.15.33. This is due to the `is_ai_bot_user()` function identifying privileged internal AI bot accounts by performing a prefix check for `'ai-chat-bot-'` against a guest record's stored IP address, which is populated verbatim from the client-controlled `X-Real-IP` request header during unauthenticated guest registration. This makes it possible for unauthenticated attackers to register a guest identity that the plugin treats as its own internal AI bot, bypassing the per-room role allowlist, draft-status check, and join filters — which are all short-circuited by the bot check in `user_can_join()` and `user_can_read()` — to join administrator-restricted chat rooms, post messages into them, and read the private message history of other users.
CVE / CNA vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
Primary and upstream sources
- NVD record for CVE-2026-89093
- WordPress upstream reference plugins.trac.wordpress.org
- WordPress upstream reference plugins.trac.wordpress.org
- WordPress upstream reference plugins.trac.wordpress.org
- WordPress upstream reference plugins.trac.wordpress.org
- WordPress upstream reference plugins.trac.wordpress.org
- WordPress upstream reference plugins.trac.wordpress.org
- WordPress upstream reference plugins.trac.wordpress.org
- WordPress upstream reference plugins.trac.wordpress.org
- Wordfence advisory wordfence.com