---
id: "CVE-2026-109590"
kind: "vulnerability"
aliases: ["CVE-2026-109590"]
title: "Tour Booking Manager WordPress plugin: stored XSS via hotel map shortcode"
severity: "medium"
cvss: 6.4
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["package", "tour-booking-manager", "wordpress", "wordpress-plugin"]
not_affected_if: ["only-trusted-editors", "plugin-not-installed", "shortcode-unused"]
published_at: "2026-10-28T07:16:44+00:00"
first_seen_at: "2026-10-28T07:31:37+00:00"
updated_at: "2026-10-28T07:33:06+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-109590", "first_seen_at": "2026-10-28T07:31:37+00:00"}]
---

# Tour Booking Manager WordPress plugin: stored XSS via hotel map shortcode

The Tour Booking Manager plugin for WordPress up to and including 2.3.6 does not sanitize the width, height and zoom attributes of the [ttbm-hotel-map] shortcode before writing them into an iframe tag. An authenticated contributor can store script in a page, and it runs for any visitor who opens that page.

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

## How to check

- Check the installed plugin version in the WordPress admin Plugins screen or with `wp plugin get tour-booking-manager --field=version` (slug assumed; unknown from sources)
- Search post content for the shortcode with `grep -R "ttbm-hotel-map" wp-content/` or a database search for `[ttbm-hotel-map`

## Fix

- Update the Tour Booking Manager plugin to a version later than `2.3.6` (the fixed version is unknown from sources)
- Until updated, review pages that contain the [ttbm-hotel-map] shortcode and remove any unexpected width, height or zoom values

## Timeline

- 2026-10-28T07:31:37+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-109590

## From the sources

The Tour Booking Manager plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'width', 'height' and 'zoom' shortcode attributes of the [ttbm-hotel-map] shortcode in versions up to, and including, 2.3.6 This is due to insufficient input sanitization and output escaping on user supplied attributes in the ttbm_hotel_map_shortcode() function, which concatenates the raw attribute values into double-quoted HTML attributes of an <iframe> tag. This makes it possible for authenticated attackers, with contributor-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page.

---

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