---
id: "CVE-2026-104000"
kind: "vulnerability"
aliases: ["CVE-2026-104000"]
title: "WordPress Simply Schedule Appointments plugin: stored XSS via status parameter"
severity: "high"
cvss: 7.2
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["package", "self-hosted", "wordpress", "wordpress-plugin"]
not_affected_if: ["patched-version", "plugin-not-installed"]
published_at: "2026-10-16T06:17:04+00:00"
first_seen_at: "2026-10-23T21:57:12+00:00"
updated_at: "2026-10-25T03:29:50+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-104000", "first_seen_at": "2026-10-23T21:57:12+00:00"}]
---

# WordPress Simply Schedule Appointments plugin: stored XSS via status parameter

The Simply Schedule Appointments WordPress plugin up to and including 1.6.12.35 fails to sanitize the 'status' parameter, so unauthenticated attackers can store scripts that run in visitors' browsers. Because debug logging is on by default, the payload can reach an administrator's session when they view the debug log during support work.

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

## How to check

- Check the installed plugin version in wp-admin under Plugins, or run `wp plugin get simply-schedule-appointments --field=version` with WP-CLI
- Confirm whether the plugin's debug logging is enabled in its settings

## Fix

- Update Simply Schedule Appointments to a version later than `1.6.12.35`
- Review stored appointment status values and debug log entries for injected script tags

## Timeline

- 2026-10-23T21:57:12+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-104000

## From the sources

The Simply Schedule Appointments plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'status' parameter in all versions up to, and including, 1.6.12.35 due to insufficient input sanitization and output escaping. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. The malicious payload is stored unconditionally because debug logging is enabled by default, and the debug-log viewer is accessible to anyone holding the site-wide Support PIN (an HMAC-MD5 of AUTH_SALT displayed in wp-admin), meaning the injected script will execute against the administrator's session during ordinary support or troubleshooting workflows.

---

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