Not likely. With 2.8.3 to 2.8.4 there were three files updated:
$ svn diff --old=https://core.svn.www.ads-software.com/tags/2.8.3 --new=https://core.svn.www.ads-software.com/tags/2.8.4 | grep ^Index
Index: wp-login.php
Index: wp-includes/version.php
Index: readme.html
$
Discarding readme.html and version.php, that leaves wp-login.php. The vulnerability did not live there (I have not found or looked for a good description of where it lives) so this info doesn’t really help your situation.
If you just look at wp-login.php (for 2.8.3 -> 2.8.4) then the diff does not really help you.
$ svn diff --old=https://core.svn.www.ads-software.com/tags/2.8.3 --new=https://core.svn.www.ads-software.com/tags/2.8.4 wp-login.php
Index: wp-login.php
===================================================================
--- wp-login.php (.../2.8.3/wp-login.php) (revision 11902)
+++ wp-login.php (.../2.8.4/wp-login.php) (revision 11902)
@@ -161,7 +161,7 @@
$message .= get_option('siteurl') . "\r\n\r\n";
$message .= sprintf(__('Username: %s'), $user_login) . "\r\n\r\n";
$message .= __('To reset your password visit the following address, otherwise just ignore this email and nothing will happen.') . "\r\n\r\n";
- $message .= site_url("wp-login.php?action=rp&key=$key", 'login') . "\r\n";
+ $message .= site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login') . "\r\n";
$title = sprintf(__('[%s] Password Reset'), get_option('blogname'));
@@ -182,15 +182,18 @@
* @param string $key Hash to validate sending user's password
* @return bool|WP_Error
*/
-function reset_password($key) {
+function reset_password($key, $login) {
global $wpdb;
$key = preg_replace('/[^a-z0-9]/i', '', $key);
- if ( empty( $key ) )
+ if ( empty( $key ) || !is_string( $key ) )
return new WP_Error('invalid_key', __('Invalid key'));
- $user = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->users WHERE user_activation_key = %s", $key));
+ if ( empty($login) || !is_string($login) )
+ return new WP_Error('invalid_key', __('Invalid key'));
+
+ $user = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->users WHERE user_activation_key = %s AND user_login = %s", $key, $login));
if ( empty( $user ) )
return new WP_Error('invalid_key', __('Invalid key'));
@@ -370,7 +373,7 @@
case 'resetpass' :
case 'rp' :
- $errors = reset_password($_GET['key']);
+ $errors = reset_password($_GET['key'], $_GET['login']);
if ( ! is_wp_error($errors) ) {
wp_redirect('wp-login.php?checkemail=newpass');
$