6 Aug 2024

CleanTalk Isn’t Doing Real Security Reviews of WordPress Plugins and Their Plugin Contains Vulnerabilities

Last week we mentioned in a post that security reviews of WordPress plugins would provide a good idea of how secure they are, but those reviews are rarely done. Just prior to writing that post, we ran across a security provider claiming to being do those reviews and a lot of them. That provider being CleanTalk. In checking in to if they were really doing reviews, we found their own plugin, Anti-Spam by CleanTalk, which they just claimed to do a review of and found no issues, contains easy to spot vulnerabilities because of a lack of basic security. That would have been caught by a real review. We found the same missing check in other plugins they claimed to have reviewed.

We have previously noted on our blog multiple instances where CleanTalk either was very confused about security or just being dishonest. In February, we noted that they had greatly overstated the risk of a vulnerability, seemingly, because they lack a basic understanding of securing web apps. In May, we noted they had made up a “critical” vulnerability in a plugin with 100,000+ installs. That same month, we noted they had claimed that a vulnerability in another 100,000+ install plugin had been fixed, when it hadn’t.

The problems have persisted. In a more recent situation, they were claiming that they had found a persistent (stored) cross-site scripting (XSS) vulnerability in a plugin, but as noted, by another provider they submitted the claim to, it really involved reflected cross-site scripting (XSS). CleanTalk seemed very confused about what was going on.

Based on all that, any claim made by them should be assumed to be unreliable. So already, there would be plenty of reason to think they are not doing the reviews they claim. But what do you find when you start looking in to the claimed reviews?

Impressive Sounding Review Standard

If you go to the page for CleanTalk’s claimed review of their plugin Anti-Spam by CleanTalk, some of the information sounds impressive. They make this claim:

Proudly earned the “Plugin Security Certification” (PSC) from CleanTalk, indicating adherence to stringent security standards.

(It’s unclear why they have quote marks around the name of their certification.)

They also write this under the heading Security Assurance (all in the third-person):

Spam Protection, Anti-Spam, Firewall by CleanTalk places a strong emphasis on security, ensuring that your website remains protected against various spam threats. The plugin has undergone rigorous security testing and has successfully earned the prestigious Plugin Security Certification (PSC) from CleanTalk. This certification affirms the plugin’s compliance with stringent security standards and protocols, demonstrating CleanTalk’s commitment to maintaining the highest level of security for your website. By leveraging CleanTalk’s cloud-based architecture, the plugin performs real-time checks and filters spam efficiently, reducing server load and enhancing overall site performance.

Less Impressive Sounding Review Checks

A critical element to determine the quality of a security review of a WordPress plugins is what is actually checked for. CleanTalk provides this vague explanation of what they areas supposed be checking for:

Successfully tested for SQL Injections, XSS Attacks, CSRF Attacks, Authentication Vulnerabilities, Authentication Bypass Vulnerabilities, Privilege Escalation Vulnerabilities, Buffer Overflow Vulnerabilities, Denial-of-Service (DoS) Vulnerabilities, Data Leakage Vulnerabilities, Insecure Dependencies, Code Execution Vulnerabilities, Privilege Escalation Vulnerabilities, File Unauthorized Access Vulnerabilities, Insufficient Injection Protection, and Information Leakage Vulnerabilities.

There are so many red flags in that.

We are not even sure what some of those are supposed to mean, and it seems likely they don’t either. They claim to check for “Insufficient Injection Protection.” We did a web search on that term, and didn’t find any other mentions other than their own website. Searching for injection protection, brought up results referring to SQL injection, which is separately listed by them as being checked.

They claim to check for “Authentication Vulnerabilities” and “Authentication Bypass Vulnerabilities.” It seems like a bypass of authentication would be an authentication vulnerability.

They also claim to check for “Data Leakage Vulnerabilities” and “Information Leakage Vulnerabilities,” which seem like they would be different names for the same issue.

With another element, “Privilege Escalation Vulnerabilities”, they mention it twice.

They also claim to be checking for “Buffer Overflow Vulnerabilities,” which is not relevant WordPress plugins, since they are written in PHP, not C or another language subject to that issue. That stands out as suggesting they are not on the level at all.

Finally, they claim to check for “Denial-of-Service (DoS) Vulnerabilities,” which could be an issue in a plugin in limited circumstances, but based on everything else mentioned seems more likely to be thrown in there because it widely mentioned issue.

A Lot of Reviews

Something else that raised our suspicions is the number of reviews they were claiming to do. In the month of July, they posted claims that 11 plugins have passed reviews. That is a lot.

Insecure Code in Their Plugin and Others

They posted that certification of their own plugin after we had taken an initial look at the plugins they were claiming to have reviewed. With the first plugin, we took a quick look at, we immediately found that the plugin was lacking basic security and then, with almost no more checking, found it was exploitable. With the next plugin we checked, because it had only recently fixed a vulnerability known about for years, we found that it was also insecure in the same way.

Afer that, we started running plugins they had claimed to have done reviews through our Plugin Security Checker, to see if that identified any possible issues in the plugins. One of the plugins it identified with improper security was Anti-Spam by CleanTalk. Checking into the identified issue, we found another more serious security issue.

In the function apbct_settings__get_key_auto() in the file /inc/cleantalk-settings.php, they are using the security function filter_input() without any filter specified:

2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
function apbct_settings__get_key_auto($direct_call = false)
{
    if ( ! $direct_call ) {
        check_ajax_referer('ct_secret_nonce');
    }
 
    global $apbct;
 
    $website        = parse_url(get_option('home'), PHP_URL_HOST) . parse_url(get_option('home'), PHP_URL_PATH);
    $platform       = 'wordpress';
    $user_ip        = Helper::ipGet('real', false);
    $timezone       = filter_input(INPUT_POST, 'ct_admin_timezone');

So it doesn’t do any filtering.

What is more concerning is that the function includes a nonce check, but not a capability check to limit access to the function. That is despite it being needed there, as the function is AJAX accessible to anyone logged in to WordPress:

363
add_action('wp_ajax_apbct_get_key_auto', 'apbct_settings__get_key_auto');

Other AJAX accessible functions in the plugin are also missing the security check.

That is a really basic part of security. Any security review of a WordPress plugin should have caught that. More importantly, the developer of a security plugin shouldn’t have that sort of issue.

That missing capability check is also a problem in the two other plugins we looked that they had certified as adhering to “stringent security standards.”

Beyond that being a basic part of security that should have been checked during a security review, it seems like at least one of the following things they claim to check on should have checked for this: Authentication Vulnerabilities, Authentication Bypass Vulnerabilities, or Privilege Escalation. We would classify that as a privilege escalation vulnerability.

It gets worse.

It’s a Vulnerability

While normally a nonce check will do the equivalent of a capability check, the WordPress documentation is clear. It shouldn’t be relied on for that:

Nonces should never be relied on for authentication, authorization, or access control. Protect your functions using current_user_can(), and always assume nonces can be compromised.

They have named the nonce they are checking for as “ct_secret_nonce.” It turns out it isn’t a secret, as it is displayed on every admin page of the website.  That is done with the function apbct_admin__enqueue_scripts(), which is in the file /inc/cleantalk-admin.php:

493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
function apbct_admin__enqueue_scripts($hook)
{
    global $apbct;
 
    // Scripts to all admin pages
    wp_enqueue_script(
        'cleantalk-modal',
        APBCT_JS_ASSETS_PATH . '/apbct-public--3--cleantalk-modal.min.js',
        array('jquery'),
        APBCT_VERSION
    );
    wp_enqueue_script(
        'ct_admin_common',
        APBCT_JS_ASSETS_PATH . '/cleantalk-admin.min.js',
        array('cleantalk-modal', 'jquery'),
        APBCT_VERSION
    );
    wp_enqueue_style(
        'ct_admin_css',
        APBCT_CSS_ASSETS_PATH . '/cleantalk-admin.min.css',
        array(),
        APBCT_VERSION,
        'all'
    );
    wp_enqueue_style(
        'ct_icons',
        APBCT_CSS_ASSETS_PATH . '/cleantalk-icons.min.css',
        array(),
        APBCT_VERSION,
        'all'
    );
 
    wp_localize_script('ct_admin_common', 'ctAdminCommon', array(
        '_ajax_nonce'        => wp_create_nonce('ct_secret_nonce'),

Which is registered to run when accessing an admin page:

990
add_action('admin_enqueue_scripts', 'apbct_admin__enqueue_scripts');

All of that exists in the version of the plugin they claimed to have reviewed, 6.37.

That the code is so poorly developed, isn’t all that surprising if you have looked at the support forum for the plugin and their other plugin, which have numerous complaints about the plugins being broken over a long period.

Dishonest Company

Combining all that, you have a security provider that is dishonest to an incredible degree. Faking doing security reviews and claiming that your own plugins meet stringent standards, while failing at the basics, is incredible. That is in line with other things with the developer as well. Look at one recent review of the CleanTalk’s dishonest behavior and the developer’s response. The developer’s response is basically we are sorry that you don’t appreciate us being dishonest. The company looks to be run by Russians, which might explain a lot about what is going on.


Concerned About The Security of the Plugins You Use?

When you are a paying customer of our service, you can suggest/vote for the WordPress plugins you use to receive a security review from us. You can start using the service for free when you sign up now. We also offer security reviews of WordPress plugins as a separate service.

Plugin Security Scorecard Grade for Anti-Spam by CleanTalk

Checked on December 2, 2024
F

See issues causing the plugin to get less than A+ grade

Leave a Reply

Your email address will not be published.