5 Dec 2023

Plugin That is Part of Patchstack’s Vulnerability Disclosure Program (VDP) Is Still Adding Vulnerable Code

In September, we wrote about how the WordPress plugin POST SMTP, which has 300,000+ installs, still contained SQL injection issues months after a public claim of a vulnerability involving that (and still does today). We also noted that the plugin was part of one of our competitors, Patchstack, Vulnerability Disclosure Program (VDP). The program doesn’t really make sense, as we noted at the time, because you are contacting a third-party security provider instead of the developer of software who can actually address vulnerabilities. It also wasn’t possible through that program to report security issues that are not vulnerabilities, despite the need for developer to address them. If a plugin developer is part of that program, it would suggest they lack an interest in properly securing their plugins, which the security of this plugin continues to point to.

While reviewing yet another attempt at a security fix in the plugin made on November 1, we noticed that new vulnerable code was being added to the plugin. That involves a failure to implement basic security and the plugin appears to contain multiple other vulnerabilities because of the other instance of the failure to implement that.

The new version registered a function to be accessible through admin_post:

41
add_action( 'admin_post_ps_dimiss_app_notice', array( $this, 'dismiss_app_notice' ) );

That makes it accessible to anyone logged in to WordPress. The function registered by that dismisses a notice that is only accessible to high-level WordPress users. So the function should further restrict who has access, but it doesn’t:

413
414
415
416
417
418
419
420
421
422
423
public function dismiss_app_notice() {
 
	if( isset( $_GET['action'] ) && $_GET['action'] === 'ps_dimiss_app_notice' ) {
 
		update_option( 'ps_dismissed_mobile_notice', 1 );
 
		wp_redirect( admin_url( 'admin.php?page=postman' ) );
 
	}
 
}

There should be a capabilities check to limit who has access to that. There also should be a nonce check to prevent cross-site request forgery (CSRF). One or both of those issues exist with other code in the plugin.

The security risk of this particular instance are limited since it simply dismisses a notification, but the security should be there and isn’t. The other places missing those security checks may pose more risk.

WordPress Causes Full Disclosure

As a protest of the moderators of the WordPress Support Forum’s continued inappropriate behavior we changed from reasonably disclosing to full disclosing vulnerabilities for plugins in the WordPress Plugin Directory in protest, until WordPress gets that situation cleaned up, so we are releasing this post and then leaving a message about that for the developer through the WordPress Support Forum. (For plugins that are also in the ClassicPress Plugin Directory, we will follow our reasonable disclosure policy.)

You can notify the developer of this issue on the forum as well.

After four years, the moderators have finally tacitly admitted they were behaving inappropriately and have made moves to fix the problems (though incompletely), so these full disclosures can be ended if they simply restore access to our accounts and plugins in the Plugin Directory. Hopefully that takes less than four years.

Update: To clear up the confusion where developers claim we hadn’t tried to notify them through the Support Forum (while at the same time moderators are complaining about us doing just that), here is the message we left for this vulnerability:

Is It Fixed?

If you are reading this post down the road the best way to find out if this vulnerability or other WordPress plugin vulnerabilities in plugins you use have been fixed is to sign up for our service, since what we uniquely do when it comes to that type of data is to test to see if vulnerabilities have really been fixed. Relying on the developer’s information can lead you astray, as we often find that they believe they have fixed vulnerabilities, but have failed to do that.

Proof of Concept

The following proof of concept will dismiss the “Introducing NEW Post SMTP Mobile App” notice found on the /wp-admin/admin.php?page=postman, when logged in to WordPress.

Replace “[path to WordPress]” with the location of WordPress.

http://[path to WordPress]/wordpress/wp-admin/admin-post.php?action=ps_dimiss_app_notice

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 Patchstack

Checked on March 5, 2025
D

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

Leave a Reply

Your email address will not be published.