Below is a differential between the unpatched vulnerable code and the patched update, for reference.
--- a/really-simple-ssl/assets/features/two-fa/styles.min.asset.php
+++ b/really-simple-ssl/assets/features/two-fa/styles.min.asset.php
@@ -1 +1 @@
-<?php return array('dependencies' => array(), 'version' => '7bb42f3f60a5f2420b45');
+<?php return array('dependencies' => array(), 'version' => '0aed0d02c33eaa10bbec');
--- a/really-simple-ssl/core/app/Managers/FeatureManager.php
+++ b/really-simple-ssl/core/app/Managers/FeatureManager.php
@@ -115,23 +115,26 @@
continue;
}
+ $proIsNotActive = ($this->env->getBoolean('plugin.pro') !== true);
$isProFeature = ($fileInfo->getFilename() === 'Pro');
- if (!$isProFeature) {
- $features[] = $fileInfo->getFilename();
- continue;
- }
+ $licenseIsInvalid = ($this->license->isValid() !== true);
- $proIsNotActive = ($this->env->getBoolean('plugin.pro') !== true);
- if ($proIsNotActive || $this->license->isValid() !== true) {
+ if ($isProFeature && ($proIsNotActive || $licenseIsInvalid)) {
continue;
}
- foreach (new DirectoryIterator($fileInfo->getPathname()) as $proInfo) {
- if ($proInfo->isDot() || !$proInfo->isDir()) {
- continue;
+
+ if ($fileInfo->getFilename() === 'Pro') {
+ foreach (new DirectoryIterator($fileInfo->getPathname()) as $proInfo) {
+ if ($proInfo->isDot() || !$proInfo->isDir()) {
+ continue;
+ }
+ $features[] = self::PRO_FEATURE_HANDLE . $proInfo->getFilename();
}
- $features[] = self::PRO_FEATURE_HANDLE . $proInfo->getFilename();
+ continue;
}
+
+ $features[] = $fileInfo->getFilename();
}
return $features;
}
--- a/really-simple-ssl/core/app/Services/LicenseService.php
+++ b/really-simple-ssl/core/app/Services/LicenseService.php
@@ -15,12 +15,16 @@
*/
public function isValid(): bool
{
- $pluginInstance = RSSSL();
+ if ( ! function_exists( 'RSSSL' ) ) {
+ return false;
+ }
+
+ $plugin = RSSSL();
- if (! isset($pluginInstance->licensing) || ! is_object($pluginInstance->licensing)) {
+ if ( ! isset( $plugin->licensing ) || ! method_exists( $plugin->licensing, 'license_is_valid' ) ) {
return false;
}
- return $pluginInstance->licensing->license_is_valid();
+ return $plugin->licensing->license_is_valid();
}
}
--- a/really-simple-ssl/core/config/env.php
+++ b/really-simple-ssl/core/config/env.php
@@ -11,7 +11,7 @@
return [
'plugin' => [
'name' => 'Really Simple Security',
- 'version' => '9.5.9',
+ 'version' => '9.5.10',
'pro' => false,
'path' => $pluginRootPath,
'base_path' => $pluginBaseFile,
--- a/really-simple-ssl/core/vendor/composer/installed.php
+++ b/really-simple-ssl/core/vendor/composer/installed.php
@@ -3,7 +3,7 @@
'name' => '__root__',
'pretty_version' => 'dev-main',
'version' => 'dev-main',
- 'reference' => 'f2a89aba02276d7853f3dd1ec84c29d18c7c23f9',
+ 'reference' => '03db385d1d980351610744b2cd5e9fbc07e8286e',
'type' => 'library',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
@@ -13,7 +13,7 @@
'__root__' => array(
'pretty_version' => 'dev-main',
'version' => 'dev-main',
- 'reference' => 'f2a89aba02276d7853f3dd1ec84c29d18c7c23f9',
+ 'reference' => '03db385d1d980351610744b2cd5e9fbc07e8286e',
'type' => 'library',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
--- a/really-simple-ssl/rlrsssl-really-simple-ssl.php
+++ b/really-simple-ssl/rlrsssl-really-simple-ssl.php
@@ -3,7 +3,7 @@
* Plugin Name: Really Simple Security
* Plugin URI: https://really-simple-ssl.com
* Description: Easily improve site security with WordPress Hardening, Two-Factor Authentication (2FA), Login Protection, Vulnerability Detection and SSL certificate generation.
- * Version: 9.5.9
+ * Version: 9.5.10
* Requires at least: 6.6
* Requires PHP: 7.4
* Author: Really Simple Security
@@ -122,7 +122,7 @@
define('rsssl_url', plugin_dir_url(__FILE__));
define('rsssl_path', trailingslashit(plugin_dir_path(__FILE__)));
define('rsssl_template_path', trailingslashit(plugin_dir_path(__FILE__)).'grid/templates/');
- define('rsssl_version', '9.5.9');
+ define('rsssl_version', '9.5.10');
define('rsssl_le_cron_generation_renewal_check', 20);
define('rsssl_le_manual_generation_renewal_check', 15);
}
--- a/really-simple-ssl/security/wordpress/two-fa/class-rsssl-passkey-list-table.php
+++ b/really-simple-ssl/security/wordpress/two-fa/class-rsssl-passkey-list-table.php
@@ -1,7 +1,6 @@
<?php
namespace RSSSLSecurityWordPressTwo_Fa;
-use RSSSLProSecurityWordPressPasskeyRsssl_Public_Credential_Resource;
use WP_List_Table;
if ( ! class_exists( 'WP_List_Table' ) ) {
@@ -159,27 +158,3 @@
$list_table->display();
}
}
-
-
-add_action('wp_ajax_remove_passkey', 'remove_passkey_callback');
-
-/**
- * Remove passkey callback
- *
- * @return void
- */
-function remove_passkey_callback() {
- $device_id = isset($_POST['device_id']) ? (int) $_POST['device_id'] : 0;
-
- if ($device_id > 0) {
- $resource = Rsssl_Public_Credential_Resource::get_instance();
- if (is_null($resource)) {
- wp_send_json_error(['message' => __('Resource not found', 'really-simple-ssl')]);
- return;
- }
- $resource->delete($device_id);
- wp_send_json_success(['message' => __('Device removed successfully', 'really-simple-ssl')]);
- } else {
- wp_send_json_error(['message' => __('Invalid device ID', 'really-simple-ssl')]);
- }
-}
No newline at end of file
--- a/really-simple-ssl/settings/build/index.150e63172ef86f413c90.asset.php
+++ b/really-simple-ssl/settings/build/index.150e63172ef86f413c90.asset.php
@@ -0,0 +1 @@
+<?php return array('dependencies' => array('react', 'react-dom', 'react-jsx-runtime', 'wp-api-fetch', 'wp-components', 'wp-data', 'wp-element', 'wp-i18n', 'wp-notices'), 'version' => '150e63172ef86f413c90');
--- a/really-simple-ssl/settings/build/index.db18a1846419792ffa57.asset.php
+++ b/really-simple-ssl/settings/build/index.db18a1846419792ffa57.asset.php
@@ -1 +0,0 @@
-<?php return array('dependencies' => array('react', 'react-dom', 'react-jsx-runtime', 'wp-api-fetch', 'wp-components', 'wp-data', 'wp-element', 'wp-i18n', 'wp-notices'), 'version' => 'db18a1846419792ffa57');