Failles et vulnérabilités du Web

Redux Framework victime d’une escalade de privilèges

Blog Failles et vulnérabilités du Web Redux Framework victime d’une escalade de privilèges
0 commentaire

Redux Framework est un script de structure de code permettant de créer facilement des pages d’options stylisées et apportant ses propres fonctionnalités.

Les versions 3.5.6.8 est antérieures sont victimes d’une escalade de privilège, le scénario de l’exploit n’est pas très courant, voici les pré-requis pour être touché:

  • Avoir le thème actif utilisant Redux Framework,
  • Avoir un plugin actif utilisant Redux Framework,
  • Avoir un membre ayant un rôle n’ayant pas la capacité manage_options, mais ayant tout de même edit_theme_options.

Le code en question se trouve dans le fichier /ReduxCore/framework.php:

            public function ajax_save() {
if ( ! wp_verify_nonce( $_REQUEST['nonce'], "redux_ajax_nonce" ) ) {
echo json_encode( array(
'status' => __( 'Invalid security credential. Please reload the page and try again.', 'redux-framework' ),
'action' => ''
) );

die();
}
// ...

L’action redux_ajax_nonce est la même pour un thème ou un plugin, le jeton sera alors le même.

Le membre capable de toucher les options du thèmes ne peut théoriquement pas modifier les options d’un plugin.

Cependant le jeton de sécurité (nonce) est le même pour chaque instance du framework, ce qui signifie que le membre n’ayant pas la capacité manage_options peut tout de même envoyer une requête contenant les nouveaux paramètres du plugin qui utilise aussi Redux Framework puisqu’il connait son jeton de sécurité.

La version 3.5.6.9 corrige ce jeton en lui ajoutant le nom de l’option à sauvegarder (ne peut être identique entre le thème et un plugin).

0 commentaire