CVE-2024-11583
Threat Intelligence Report: CVE-2024-11583
Executive Summary
CVE-2024-11583 is a missing authorization vulnerability in the Borderless – Widgets, Elements, Templates and Toolkit for Elementor & Gutenberg plugin for WordPress, affecting all versions up to and including 1.5.9. The flaw resides in the remove_zipped_font function, which lacks a capability check, allowing authenticated attackers with Subscriber-level access or above to delete previously uploaded icon fonts. This unauthorized data-loss vulnerability has a CVSS score of 4.3 (Medium) and could result in website visual degradation, broken icon rendering, and potential cascading failures across dependent elements and widgets.
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.
No signup required
Technical Analysis
The Borderless plugin for WordPress is a comprehensive toolkit that extends both Elementor and Gutenberg editors with additional widgets, design elements, templates, and typography management features. As part of its functionality, the plugin allows administrators to upload custom icon fonts (.zip archives containing font files such as WOFF, WOFF2, TTF, and associated CSS) to expand the available icon library for site builders.
The vulnerability exists in the remove_zipped_font function, which is registered as an AJAX handler within the plugin's PHP codebase. This function is responsible for deleting previously uploaded icon font archives from the server. The critical flaw is that this function performs deletion operations without first verifying that the requesting user has the appropriate administrative privileges.
In WordPress architecture, AJAX actions are typically registered with prefixes that determine access levels: wp_ajax_ actions require authentication but allow any logged-in user, while wp_ajax_nopriv_ actions allow unauthenticated access. The remove_zipped_font function appears to have been registered using a pattern that does not enforce capability checks (such as current_user_can('manage_options') or similar) within the function body itself.
The vulnerable code pattern likely resembles:
public function remove_zipped_font() {
// Missing: if (!current_user_can('manage_options')) { wp_die(); }
$font_id = sanitize_text_field($_POST['font_id']);
// Deletion logic follows...
wp_delete_attachment($font_id);
// Additional file deletion operations...
}
An authenticated attacker with only Subscriber-level privileges (the lowest trust level in WordPress, typically granted to any user who registers on a site) can craft an AJAX request to the admin-ajax.php endpoint, invoking the remove_zipped_font action. By supplying the ID of a previously uploaded icon font attachment, the attacker triggers the deletion of that font file and its associated attachments from the WordPress media library.
The attack surface is the WordPress admin-ajax endpoint (/wp-admin/admin-ajax.php), which is accessible to all authenticated users. The vulnerability is classified as CWE-862 (Missing Authorization), and the CVSS vector reflects that while network access is required, the attacker needs valid low-privilege credentials, and the impact is limited to availability (data loss without confidentiality or integrity impact).
The affected version range includes all releases from the plugin's initial launch through version 1.5.9. The attack does not require any special user interaction beyond the attacker's own authenticated session, making it a low-complexity exploitation scenario once a valid account is obtained.
Exploitation Scenarios
An attacker with Subscriber-level credentials can systematically delete icon fonts from a target WordPress site through the following chain:
Step 1: Reconnaissance and Target Identification
- The attacker identifies WordPress sites running the Borderless plugin via WordPress version fingerprinting, plugin enumeration through the
readme.txtfile (/wp-content/plugins/borderless/readme.txt), or by inspecting page source for Borderless-specific CSS/JS assets (e.g.,/wp-content/plugins/borderless/assets/css/references). - The attacker verifies the plugin version by fetching
/wp-content/plugins/borderless/readme.txtand checking the "Stable tag" field. Versions 1.5.9 and below are vulnerable. - The attacker acquires or registers a valid Subscriber account on the target site (if registration is enabled), or uses a previously compromised low-privilege credential (e.g., from credential-stuffing attacks).
Step 2: Trigger and Weaponization
- The attacker logs into the WordPress admin panel at
/wp-admin/with the Subscriber account. - Using the WordPress AJAX API, the attacker crafts an HTTP POST request to
/wp-admin/admin-ajax.phpwith the following parameters:action=remove_zipped_fontfont_id=<target_attachment_id>(or the relevant parameter name used by the plugin)
- A typical crafted request using cURL would resemble:
curl -X POST 'https://target.com/wp-admin/admin-ajax.php' \ -H 'Cookie: <attacker_session_cookie>' \ -d 'action=remove_zipped_font&font_id=42' - Since the function lacks a capability check (
current_user_can()), the server processes the deletion request even though the actor is only a Subscriber.
Step 3: Payload and Execution
- The attacker first enumerates existing icon font attachments by querying the WordPress REST API or media endpoints:
/wp-json/wp/v2/media?per_page=100— while Subscribers cannot see all media directly, icon fonts may be discoverable via the plugin's front-end font selector or via directory traversal of the font upload directory (/wp-content/uploads/borderless-fonts/). - The attacker iterates through discovered font IDs, sending repeated deletion requests to remove all available icon fonts.
- If the plugin stores references to deleted fonts in the database (e.g., in
wp_optionsor custom post meta), subsequent requests to render those icons may trigger PHP warnings or fatal errors, further degrading the site.
Step 4: Post-Exploitation Impact
- All custom icon fonts are removed from the media library and the upload directory, breaking any pages, posts, or templates that reference these fonts.
- Icon-dependent widgets, menus, buttons, and design elements render as empty boxes or missing-glyph characters across the entire site.
- The attacker can repeat this process any number of times, as no rate-limiting or privilege escalation paths exist.
- If the site has no default fallback fonts, this denial-of-service persists until an administrator manually re-uploads the fonts — a tedious process for sites using many custom icon sets.
- The attacker maintains persistent access and can re-trigger the deletion immediately after any font re-upload by the administrator, creating an ongoing availability issue.
The exploitation is purely server-side — no client-side scripting, phishing, or social engineering is required. The only preconditions are network access to the WordPress admin-ajax endpoint and possession of any valid authenticated account with Subscriber-level permissions or higher.
Impact Assessment
Business Impact: The primary impact is availability loss (CVSS Availability subscore: Low). While no data is exfiltrated or modified beyond the targeted font files, the cascading visual degradation of the website can significantly damage brand reputation, particularly for marketing and e-commerce sites that rely heavily on custom iconography for navigation, product features, and calls-to-action. For SaaS companies using WordPress as their marketing front-end, this could directly impact conversion rates and lead-generation activities.
Affected Systems: All WordPress installations running Borderless plugin version 1.5.9 or earlier. Given that Borderless is marketed as a toolkit for both Elementor and Gutenberg, any site using either page builder with custom icon fonts is at risk. Multi-site WordPress networks are equally affected provided the plugin is network-activated.
Blast Radius: The direct blast radius is limited to icon font files managed by the plugin. However, the downstream effects encompass every page, widget, and template that references these fonts. A single crafted request can delete one font, but an attacker can issue dozens of requests in rapid succession to strip all fonts, maximizing impact. In worst-case scenarios, if the plugin's deletion routine has side effects on shared CSS files or triggers database inconsistencies, broader site functionality may be compromised.
CVSS Context: With a CVSS score of 4.3 (Medium), this vulnerability is not considered critical, but the low barrier to exploitation (Subscriber-level access is trivial to obtain on most WordPress sites with open registration) suggests the real-world risk is higher than the raw score indicates. The attack complexity is low, no user interaction is required, and the scope is unchanged.
Recovery Cost: Administrative effort to re-upload all icon fonts, verify integrity across pages, and potentially rebuild corrupted templates represents moderate operational overhead. For large enterprise sites with extensive custom font libraries, the recovery cost is non-trivial.
Detection Guidance
Sigma Rule
title: WordPress Borderless Plugin Icon Font Deletion Attempt
id: 5b3e7c2a-9f4d-4b8e-8f1a-3d6e2c5b9a71
status: experimental
description: Detects attempts to exploit CVE-2024-11583 - unauthorized icon font deletion via Borderless plugin
references:
- https://nvd.nist.gov/vuln/detail/CVE-2024-11583
author: Valtersit Security Research
date: 2025/01/15
tags:
- attack.t1485
logsource:
category: webserver
product: apache
definition: 'HTTP access logs for WordPress admin-ajax endpoint'
detection:
selection:
cs-method: 'POST'
cs-uri-stem:
- '/wp-admin/admin-ajax.php'
cs-uri-query|contains:
- 'action=remove_zipped_font'
condition: selection
fields:
- c-ip
- cs(User-Agent)
- cs-uri-query
falsepositives:
- Legitimate administrator actions to remove icon fonts
level: medium
YARA Rule
rule WordPress_Borderless_CVE_2024_11583_Vuln_Source
{
meta:
author = "Valtersit Security Research"
description = "Detects vulnerable Borderless plugin source code containing remove_zipped_font function without capability checks"
cve = "CVE-2024-11583"
date = "2025-01-15"
severity = "medium"
strings:
$func_name = "function remove_zipped_font" ascii wide nocase
$ajax_hook = "wp_ajax_remove_zipped_font" ascii wide nocase
$wp_delete = "wp_delete_attachment" ascii wide nocase
$unlink = "unlink(" ascii wide nocase
$cap_missing_sys = "current_user_can" ascii wide nocase
condition:
$func_name and $ajax_hook and ($wp_delete or $unlink) and not $cap_missing_sys
}
rule WordPress_Borderless_CVE_2024_11583_Exploit_Request
{
meta:
author = "Valtersit Security Research"
description = "Detects HTTP request payloads targeting the vulnerable remove_zipped_font AJAX action"
cve = "CVE-2024-11583"
date = "2025-01-15"
severity = "medium"
strings:
$ajax_action = "action=remove_zipped_font" ascii wide nocase
$font_param = "font_id=" ascii wide nocase
$font_param_alt = "zipped_font" ascii wide nocase
condition:
($ajax_action and ($font_param or $font_param_alt)) and filesize < 20KB
}
Suricata IDS Rule
alert http any any -> any any (
msg:"WordPress Borderless Plugin CVE-2024-11583 - Unauthorized Icon Font Deletion Attempt";
flow:established,to_server;
http.method:"POST";
http.uri:"/wp-admin/admin-ajax.php";
http.request_body;"action=remove_zipped_font";
content:"action=remove_zipped_font"; http_client_body; nocase;
classtype:attempted-dos;
reference:cve,2024-11583;
reference:url,nvd.nist.gov/vuln/detail/CVE-2024-11583;
sid:20241158301;
rev:1;
metadata:attack_target Web_Server, created_at 2025_01_15, deployment Perimeter, signature_severity Major, tag CVE-2024-11583, tag WordPress, tag Borderless, tag Data_Destruction;
)
Elastic Detection
sequence by source.ip with maxspan=30s
[ network where event.action == "connection_attempted" and destination.port == 80 or destination.port == 443 ]
[ http where
http.request.method == "POST" and
url.path == "/wp-admin/admin-ajax.php" and
url.query contains "action=remove_zipped_font"
]
[ file where
event.action in ("delete", "unlink") and
file.path contains "borderless" and
file.extension in ("woff", "woff2", "ttf", "eot", "svg", "zip")
]
Splunk SPL Query
index=web sourcetype=access_combined
| where method="POST" AND uri_path="/wp-admin/admin-ajax.php" AND uri_query LIKE "%action=remove_zipped_font%"
| eval exploit_attempt=if(uri_query LIKE "%action=remove_zipped_font%", "TRUE", "FALSE")
| table _time, clientip, user, uri_query, status, useragent, referer
| stats count by clientip, user, useragent, status
| sort - count
| where count > 5
| rename clientip as "Source_IP", user as "Authenticated_User", uri_query as "Request_Params", status as "HTTP_Status"
| table _time, Source_IP, Authenticated_User, Request_Params, HTTP_Status, useragent, count
Wazuh OSSEC Rule
<group name="wordpress,cve-2024-11583,">
<rule id="606043" level="10">
<decoded_as>web-accesslog</decoded_as>
<match>POST /wp-admin/admin-ajax.php</match>
<regex>action=remove_zipped_font</regex>
<description>WordPress Borderless plugin (CVE-2024-11583) - attempt to delete icon fonts without proper authorization</description>
<group>attack.t1485,access_control,vulnerability,</group>
<mitre>
<id>T1485</id>
</mitre>
<options>no_full_log</options>
<alert>
<severity>10</severity>
</alert>
</rule>
<rule id="606044" level="6">
<if_sid>202411583</if_sid>
<regex>status=200</regex>
<description>Successful exploitation of CVE-2024-11583 - verify icon font files for deletion</description>
<group>attack.t1485,access_control,vulnerability,</group>
<mitre>
<id>T1485</id>
</mitre>
<options>no_full_log</options>
</rule>
</group>
Mitigation & Patch Guidance
Patch Confidence: 2/4 (CLAIMED — a single source claims a patch exists in version 1.6.0, but this has not been independently confirmed by our research team).
1. Immediate Mitigations (Apply Immediately)
- Disable user registration if not strictly required for business operations. Subscriber accounts are the attack vector; removing open registration eliminates the easiest exploitation path.
- Audit and remove inactive or suspicious Subscriber accounts — particularly any that were created recently but show no normal usage patterns.
- Implement a Web Application Firewall (WAF) rule to block POST requests to
/wp-admin/admin-ajax.phpcontainingaction=remove_zipped_fontfrom non-administrator accounts. The Suricata rule above can be adapted for ModSecurity or Cloudflare WAF. - Restrict AJAX endpoint access via
.htaccessor server-level configuration to only allow requests with a valid nonce for administrator sessions. - Take a full backup of the WordPress installation (files and database) before proceeding with updates.
2. Patch and Upgrade Steps
- Check for plugin update: In the WordPress dashboard, navigate to Plugins → Installed Plugins. If Borderless version 1.6.0 or later is available, update immediately.
- Manual update: If the automatic update fails, download the latest version from the WordPress Plugin Repository and replace the plugin files manually via FTP:
wp-content/plugins/borderless/. - Verify the update by confirming the plugin version in
readme.txtshows a version higher than 1.5.9 and that theremove_zipped_fontfunction now includes acurrent_user_can('manage_options')check. - If version 1.6.0 is not yet available from the official repository, consider the following alternatives:
Contact the plugin vendor directly to request the patched version.
If no patched version exists, deactivate and uninstall the plugin until a fix is released. Evaluate alternative Elementor/Gutenberg toolkit plugins that offer equivalent functionality with active security support.
Apply a temporary code-level patch by adding a capability check to the
remove_zipped_fontfunction (this requires developer expertise and will be overwritten on plugin update):// Inside remove_zipped_font(), add this as the first line: if (!current_user_can('manage_options')) { wp_die('Unauthorized'); }
3. Long-Term Hardening
- Principle of Least Privilege: Review all plugin AJAX handlers and ensure they enforce proper capability checks. Consider running a security audit tool (e.g., WPScan) to identify similar missing-authorization issues across other installed plugins.
- WordPress Security Baseline:
- Disable
wp_ajax_nopriv_handlers for any administrative actions. - Use a security plugin (e.g., Wordfence, Sucuri) with file-integrity monitoring and brute-force protection.
- Audit user roles and remove unused accounts on a quarterly basis.
- Implement two-factor authentication (2FA) for all user accounts, especially administrators.
- Disable
- Vendor Risk Management: Only install plugins from vendors with a demonstrated history of timely security patches. Monitor the WordPress Plugin Vulnerabilities database for future Borderless advisories.
- Monitoring: Deploy the detection rules above to your SIEM/SOC infrastructure to alert on exploitation attempts. Regularly review logs for unusual
admin-ajax.phpactivity from low-privilege accounts. - Incident Response Preparation: Maintain recent backups (daily database, weekly full-site) and test restoration procedures to minimize recovery time following any data-loss event.
References
- NVD Entry: https://nvd.nist.gov/vuln/detail/CVE-2024-11583
- WordPress Plugin Repository (Borderless): https://wordpress.org/plugins/borderless/
- Wordfence Threat Intelligence (if published): https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/borderless/
- MITRE ATT&CK Technique T1485 — Data Destruction: https://attack.mitre.org/techniques/T1485/
- WPScan Vulnerability Database: https://wpscan.com/ (search for CVE-2024-11583)
Known Campaigns / Exploit Activity: As of the publication date of this report, there are no known active threat-actor campaigns exploiting CVE-2024-11583 in the wild, nor has it been added to the CISA Known Exploited Vulnerabilities (KEV) catalog. However, given the ease of exploitation and the prevalence of WordPress as a target, exploitation attempts from automated bots and opportunistic attackers should be expected once awareness of the vulnerability spreads. The absence of a confirmed patch increases the window of exposure. Security teams should treat this as a high-priority remediation item for any WordPress estate running the affected plugin versions.
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.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.