CVE-2023-44472
Executive Summary
CVE-2023-44472 is a Missing Authorization vulnerability in the Unyson WordPress plugin by ThemeFuse, affecting versions up to and including 2.7.28. This flaw allows unauthenticated attackers to bypass authorization checks and perform unauthorized actions, potentially leading to partial integrity compromise. The vulnerability has a CVSS score of 4.3 (Medium) and an EPSS score of 0.0%, indicating low exploitation likelihood at this time. No public proof-of-concept or exploit code has been identified, and the vendor has not released a patch.
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
Supply Chain & Package Security
This vulnerability affects a WordPress plugin distributed via the official WordPress plugin repository and third-party marketplaces. Since Unyson is a closed-source commercial plugin, no package manager (NPM, PyPI, Go, Ruby) is involved. However, the risk extends to any WordPress site using the plugin, as supply chain attacks could target outdated installations.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
- Base Score: 4.3 (Medium)
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: None
- Scope: Unchanged
- Confidentiality Impact: None
- Integrity Impact: Low
- Availability Impact: None
The threat level is Medium due to the low complexity and no required privileges, but the impact is limited to partial integrity compromise.
Deep Dive & Mechanics
The vulnerability resides in the authorization checks within Unyson's AJAX handlers and REST endpoints. The plugin fails to properly validate user capabilities before executing sensitive operations, allowing unauthenticated attackers to trigger actions that should require administrative privileges.
Root Cause: The plugin uses current_user_can() checks inconsistently or not at all in certain functions, particularly those handling theme/plugin options, demo imports, and backup operations.
Attack Vector: An attacker sends crafted HTTP requests to vulnerable endpoints (e.g., /wp-admin/admin-ajax.php with specific action parameters) without authentication.
Impact: Successful exploitation could allow an attacker to modify plugin settings, import malicious demo content, or alter site configurations, leading to defacement or further compromise.
Vulnerable vs. Patched Code
Since no patch is available, the vulnerable code remains in all versions <= 2.7.28. The following is a representative example of the missing authorization:
Vulnerable Code (unyson/framework/includes/option-types/upload/class-fw-option-type-upload.php):
add_action('wp_ajax_fw_upload', 'fw_upload_handler');
function fw_upload_handler() {
// No capability check
$file = $_FILES['file'];
// Process upload...
}
Patched Code (hypothetical):
add_action('wp_ajax_fw_upload', 'fw_upload_handler');
function fw_upload_handler() {
if (!current_user_can('upload_files')) {
wp_die('Unauthorized', 403);
}
$file = $_FILES['file'];
// Process upload...
}
Exploitation & Lab Setup
Red Team
Prerequisites:
- WordPress installation with Unyson <= 2.7.28
- Network access to the target
Exploitation Steps:
- Identify vulnerable endpoints by scanning for Unyson-specific AJAX actions.
- Send an unauthenticated POST request to
/wp-admin/admin-ajax.phpwith the action parameter set to a vulnerable function (e.g.,fw_backup_create). - Observe unauthorized execution of the action.
Example Request:
curl -X POST http://target/wp-admin/admin-ajax.php \
-d "action=fw_backup_create&backup_name=test"
Blue Team
Detection:
- Monitor for AJAX requests to
/wp-admin/admin-ajax.phpwith action parameters starting withfw_from unauthenticated users. - Alert on any successful execution of Unyson actions without a valid nonce or user session.
Hunting:
- Search logs for
admin-ajax.phprequests withaction=fw_*andHTTP_REFERERmissing or from external IPs. - Check for unexpected backup files or demo content imports.
Indicators of Compromise (IOCs)
- Network:
- POST requests to
/wp-admin/admin-ajax.phpwithaction=fw_*parameters from unauthenticated sources. - Unusual
User-Agentstrings in AJAX requests.
- POST requests to
- File System:
- Unexpected files in
/wp-content/uploads/or/wp-content/backups/. - Modified plugin option entries in the database (
wp_optionstable withfw_prefix).
- Unexpected files in
- Logs:
- Repeated 200 responses to
admin-ajax.phpwithout prior login.
- Repeated 200 responses to
Detection Engineering
YARA Rule
rule CVE_2023_44472_Unyson_Auth_Bypass {
meta:
description = "Detects exploitation attempts for CVE-2023-44472 in Unyson plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2023-44472"
strings:
$ajax_action = /action=fw_[a-z_]+/
$wp_ajax = "wp_ajax_"
$admin_ajax = "admin-ajax.php"
condition:
$admin_ajax and $ajax_action and not $wp_ajax
}
Sigma Rule
title: CVE-2023-44472 Unyson Missing Authorization
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects unauthenticated AJAX requests to Unyson plugin endpoints
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains: 'admin-ajax.php'
cs-uri-query|re: 'action=fw_[a-z_]+'
condition: selection
falsepositives:
- Legitimate admin actions (requires authentication)
level: medium
Suricata Rule
alert http any any -> any any (msg:"CVE-2023-44472 Unyson Missing Authorization Attempt"; flow:to_server,established; content:"POST"; http_method; content:"admin-ajax.php"; http_uri; content:"action=fw_"; http_client_body; pcre:"/action=fw_[a-z_]+/R"; classtype:attempted-admin; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable or remove the Unyson plugin if not essential.
- Implement a Web Application Firewall (WAF) rule to block unauthenticated requests to
admin-ajax.phpwithaction=fw_*parameters. - Restrict access to
/wp-admin/directory via.htaccessor IP whitelisting.
Long-term Fix:
- Since no patch is available, consider migrating to an alternative theme framework that is actively maintained.
- Monitor the vendor's website for any future security updates.
Workaround:
- Add the following code to the theme's
functions.phpto enforce capability checks:
add_action('init', function() {
if (defined('DOING_AJAX') && DOING_AJAX) {
$action = $_REQUEST['action'] ?? '';
if (strpos($action, 'fw_') === 0 && !current_user_can('manage_options')) {
wp_die('Unauthorized', 403);
}
}
});
Valters IT
Securing Digital Frontiers
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.