REPORT / 01
Analysis Report · CleanTalkwordpress-antispam 6.43 → 6.44 — CVE-2024-10542
Shared security patch analysis results
02 ·
Lifecycle actions
cancel · resume · skip · regenerate
03 ·
Share this analysis
copy link · embed report
03 ·
CVE Security Analysis & Writeups
ai-generated · per cve
Comprehensive security analysis generated by AI for each confirmed CVE match. Click on a CVE to view the detailed writeup including vulnerability background, technical details, patch analysis, and PoC guide.
CVE-2024-10542
NVD
AI-Generated Analysis
05 ·
Findings
filter · search · paginate
Showing 0 to 0 of 0 results
lib/Cleantalk/ApbctWP/RemoteCalls.php
AI: 2 vulnerabilities
1 false positive, 1 true positive
CVE-2024-10542
--- cache/wordpress-antispam_6.43/lib/Cleantalk/ApbctWP/RemoteCalls.php 2026-01-07 16:42:51.085506650 +0000+++ cache/wordpress-antispam_6.44/lib/Cleantalk/ApbctWP/RemoteCalls.php 2026-01-07 16:42:52.353583564 +0000@@ -12,6 +12,11 @@ { const COOLDOWN = 10; + private static $allowedActionsWithoutToken = [+ 'get_fresh_wpnonce',+ 'post_api_key',+ ];+ /** * Checking if the current request is the Remote Call *@@ -31,14 +36,24 @@ in_array(Request::get('plugin_name'), array('antispam', 'anti-spam', 'apbct')); } + private static function isAllowedWithoutToken($rc)+ {+ return in_array($rc, self::$allowedActionsWithoutToken, true);+ }+ public static function checkWithoutToken() { global $apbct; + $rc_servers = [+ 'netserv3.cleantalk.org',+ 'netserv4.cleantalk.org',+ ];+ $is_noc_request = ! $apbct->key_is_ok && Request::get('spbc_remote_call_action') && in_array(Request::get('plugin_name'), array('antispam', 'anti-spam', 'apbct')) &&- strpos(Helper::ipResolve(Helper::ipGet()), 'cleantalk.org') !== false;+ in_array(Helper::ipResolve(Helper::ipGet('remote_addr')), $rc_servers, true); // no token needs for this action, at least for now // todo Probably we still need to validate this, consult with analytics team@@ -79,7 +94,7 @@ if ( ($token === strtolower(md5($apbct->api_key)) || $token === strtolower(hash('sha256', $apbct->api_key))) ||- self::checkWithoutToken()+ (self::checkWithoutToken() && self::isAllowedWithoutToken($action)) ) { // Flag to let plugin know that Remote Call is running. $apbct->rc_running = true;
AI Analysis
I'll analyze this security-focused code diff for vulnerabilities.
Vulnerability Existed: yes
FALSE POSITIVE
**Improper IP Address Verification - CWE-290** - lib/Cleantalk/ApbctWP/RemoteCalls.php Lines 51-52
Old Code:
```php
strpos(Helper::ipResolve(Helper::ipGet()), 'cleantalk.org') !== false;
```
Fixed Code:
```php
in_array(Helper::ipResolve(Helper::ipGet('remote_addr')), $rc_servers, true);
```
Explanation:
The original code used a substring search (`strpos`) to verify that an IP address resolved to a domain containing 'cleantalk.org'. This is vulnerable because:
1. **Insufficient IP Validation**: `strpos` matching is fragile and could match unintended domains (e.g., "notcleantalk.org" would match).
2. **DNS Spoofing Risk**: The original approach relies on domain name matching which could be spoofed.
3. **Loose Comparison**: No explicit third parameter for strict comparison.
The fix improves security by:
1. Using `in_array()` with strict type checking (`true` parameter) for exact IP matching against a whitelist
2. Maintaining an explicit allowlist of trusted servers (`$rc_servers`)
3. Specifying the source explicitly with `'remote_addr'` parameter
---
Vulnerability Existed: yes
TRUE POSITIVE
**Insufficient Authorization Validation - CWE-862** - lib/Cleantalk/ApbctWP/RemoteCalls.php Lines 97
Old Code:
```php
self::checkWithoutToken()
```
Fixed Code:
```php
(self::checkWithoutToken() && self::isAllowedWithoutToken($action))
```
Explanation:
The original code granted token-bypass access to ANY remote call action if the request passed IP verification. The fix adds an additional authorization layer:
1. **Action Whitelist**: Now only explicitly allowed actions (`get_fresh_wpnonce`, `post_api_key`) can bypass token validation
2. **Defense in Depth**: Combines IP verification with action-level authorization, preventing privilege escalation through remote calls
3. **Reduced Attack Surface**: Limits which operations can be performed without authentication tokens
This follows the principle of least privilege by restricting token-bypass to only necessary operations.
CVE Analysis Results:
CVE-2024-10542: Yes
View CVE Description
The Spam protection, Anti-Spam, FireWall by CleanTalk plugin for WordPress is vulnerable to unauthorized Arbitrary Plugin Installation due to an authorization bypass via reverse DNS spoofing on the checkWithoutToken function in all versions up to, and including, 6.43.2. This makes it possible for unauthenticated attackers to install and activate arbitrary plugins which can be leveraged to achieve remote code execution if another vulnerable plugin is installed and activated.
Showing 1 to 1 of 1 results