Correction fix patch manuel pour corriger la faille dans le plugin RevSlider de WordPress

Posté le 17 décembre 2014 by

Comment corriger manuellement la faille de sécurité revslider ?

Lorsque l’on est concerné par une faille de sécurité sur un module que l’on ne souhaite pas mettre à jour pour ne pas déstabiliser un environnement existant, en raison d’un problème de compatibilité avec la nouvelle version par exemple, il peut être judicieux de réaliser soi-même le correctif à la condition expresse de bien comprendre la faille en jeu.

Dans le cas de la faille revslider documentée ici, il manque tout simplement un test d’authentification avant de permettre l’utilisation de fonctions avancées qui peuvent compromettre votre site.

La correction proposée à cette adresse est partielle et permet d’éviter que n’importe qui consulte votre fichier wp-config.php, mais elle ne s’attaque pas à l’origine du problème et  d’autres failles peuvent subsister pour des utilisateurs mal intentionnés qui pourraient alors uploader des malwares sur votre site internet, c’est ce qui se passe avec l’attaque SoakSoak

Pour corriger manuellement la faille, modifiez (après avoir réalisé une sauvegarde) le fichier revslider/inc_php/base_admin.class.php et contrôlez que l’utilisateur est connecté avant d’autoriser les accès ajax qui ne sont pas utilisés dans la partie Front Office du plugin avec la fonction current_user_can( ‘manage_options’ ) dans la méthode addActionAjax, vers la ligne 318. Attention ce fichier peut être présent plusieurs fois dans votre arborescence wordpress, il est généralement sous revslider/inc_php, mais peut être également dans revslider/inc_php/framework , dans le dossier des thèmes et des plugins:

/**
*
* add ajax back end callback, on some action to some function.
*/
protected static function addActionAjax($ajaxAction,$eventFunction){
require_once(ABSPATH . 'wp-includes/pluggable.php');
  if(current_user_can( 'manage_options' )) {
    self::addAction('wp_ajax_'.self::$dir_plugin."_".$ajaxAction, $eventFunction);
    self::addAction('wp_ajax_nopriv_'.self::$dir_plugin."_".$ajaxAction, $eventFunction);
  }
}

Ce code peut nécessiter des adaptations en fonction de votre version de WordPress.

Après cette modification seuls les utilisateurs connectés en tant qu’administrateur pourront éventuellement consulter votre fichier wp-config.php, ce qui est tout à fait normal.

Dans tous les cas, si vous êtes concernés par la faille de sécurité, modifiez vos mots de passe WordPress et Mysql. Pour savoir si vous êtes infectés par SoakSoak, consultez cet article

Ces informations de sécurités sont offertes à titre non onéreux et ne sauraient en aucun cas engager la responsabilité de l’auteur. N’hésitez pas à faire appel à nos services pour un audit approfondi de la sécurité de votre site internet.

How to fix manually the revslider security leak ?

When we face a security leak in a module that we do not want to update, in order to avoid new compatibility problems or in order to avoid destabilizing a system, we may prefer to fix it manually.

In the case of the revslider security leak that is documented here, a simple security check is missing and allow hacker to compromize your wordpress installation.

The manual security fix that is given here is only partial and will prevent from easy wp-config.php display (it fix consequence of the security leak), but it wont protect you against other potential attacks,  and black hackers may upload files on your system, that is the case with SoakSoak

In order to manually fix it, edit (after having backed up) the file revslider/inc_php/base_admin.class.php and check that connected user is an administrator before granting ajax functions access with the current_user_can( ‘manage_options’ ) function, in AddActionAjaxMethod near line 318. (the admin ajax functions are not used on front side).  This file may occurs several times unrder revslider/inc_php,  revslider/inc_php/framework , in themes folder as well as in plugin folder :

/**
*
* add ajax back end callback, on some action to some function.
*/
protected static function addActionAjax($ajaxAction,$eventFunction){
require_once(ABSPATH . 'wp-includes/pluggable.php');
  if(current_user_can( 'manage_options' )) {
    self::addAction('wp_ajax_'.self::$dir_plugin."_".$ajaxAction, $eventFunction);
    self::addAction('wp_ajax_nopriv_'.self::$dir_plugin."_".$ajaxAction, $eventFunction);
  }
}

This change may require some adaptations according to your wordpress version.

In any case, if you are concerned by the revslider security leak, consider changing your wordpress and mysql passwords, even if you are not infected by SoakSoak.

With this function, connected administrator users will keep having access to your wp-config.php file, which is perfectly normal.

Those security informations are provided for free as this and will not engage the responsability of the author in any case. Feel free to ask to our services for a deepest security check.