CVE-2026-89093: Better Messages <= 2.15.33 - Unauthenticated Information Exposure Spoofing via 'X-Real-IP' Header via /guests/register
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 isaibotuser() 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 usercanjoin() and usercanread() — to join administrator-restricted chat rooms, post messages into them, and read the private message history of other users.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
Better Messages – Chat Rooms, Group Chat, Private Messages & AI Chat Bots (WordPress plugin)to a version that resolves this vulnerability.Fixed in 2.15.33 - Configuration
Change the plugin logic so unauthenticated guest registration does not populate the stored IP address from the client-controlled X-Real-IP header, preventing spoofing of the 'ai-chat-bot-' prefix check in is_ai_bot_user().
Better Messages – Chat Rooms, Group Chat, Private Messages & AI Chat Bots (WordPress plugin) X-Real-IP handling for guest registration = Do not trust client-provided X-Real-IP for is_ai_bot_user() privileged internal AI bot identification
Event History
Frequently Asked Questions
Who can exploit this issue?
An unauthenticated remote attacker can exploit it by registering a guest identity through the /guests/register endpoint. No existing account or user interaction is required.
What access can an attacker gain through exploitation?
An attacker can be treated as an internal AI bot, bypassing room role allowlists, draft-status checks, and join filters. This can allow them to join administrator-restricted chat rooms, post messages, and read other users' private message history in those rooms.
What attacker-controlled value is used to trigger the bypass?
The guest registration process stores the client-supplied X-Real-IP header verbatim as the guest record's IP address. Supplying a value with the ai-chat-bot- prefix causes the plugin's bot-identification check to treat the guest as an internal AI bot.
Which versions are affected?
All Better Messages versions up to and including 2.15.33 are affected.