Introduction
Le 7 mai 2024, WP-Firewall, une organisation de conseil en sécurité de premier plan, a publié un rapport détaillé sur les vulnérabilités critiques découvertes dans le plugin Uncode Core. Si vous êtes un utilisateur d'Uncode, il est essentiel de mettre à jour votre plugin principal vers au moins la version 2.8.9 pour protéger votre site WordPress contre d'éventuelles attaques. Cet article se penchera sur les spécificités de ces vulnérabilités, leurs implications et les mesures prises pour les atténuer.
À propos du plugin Uncode Core
Le plugin Uncode Core, développé par Undsgn, est un composant essentiel du thème Uncode, un thème premium très populaire pour les sites WooCommerce, avec plus de 110 000 ventes sur ThemeForest. Le thème Uncode est réputé pour son design au pixel près, ce qui le rend idéal pour divers sites Web, notamment les portfolios, les agences, les freelances, les blogs et les boutiques en ligne.
Les vulnérabilités de sécurité
Les chercheurs en sécurité de WP-Firewall's ont identifié deux vulnérabilités importantes dans le plugin Uncode Core :
1. Suppression arbitraire authentifiée de fichiers et de répertoires
Description: Cette vulnérabilité permet à tout utilisateur authentifié possédant au moins un rôle d'abonné de supprimer des répertoires arbitraires sur le serveur. Le problème réside dans la fonction `delete_download`, qui ne dispose pas des contrôles d'autorisation et de nonce appropriés. Cette fonction est associée à l'action `wp_ajax_uncodefont_delete_download`, ce qui permet aux utilisateurs authentifiés de l'exploiter.
Détails techniques :
fonction delete_download() {
si (isset($_REQUEST['font_family'])) {
$font_family = $_REQUEST['font_family'];
$font_dir = barre oblique de fin($this->font_directory).$font_family;
$fontkit_zip = $font_dir.'.zip';
si (@file_exists($fontkit_zip)) {
si (!@unlink($fontkit_zip)) {
echo json_encode(tableau(
'erreur' => sprintf( esc_html__( 'Échec de la suppression du kit zip @fontface %1$s.', 'uncode-core' ), $fontkit_zip )
));
mourir();
}
}
// Impossible de supprimer le répertoire, car unzip_file, qui l'a créé, utilise WP_Filesystem. Nous utilisons donc WP_Filesystem pour le supprimer.
$this->setup_wp_filesystem();
système de fichiers global $wp ;
si (isset($wp_filesystem)) {
$delete_dir = $wp_filesystem->delete($font_dir, true);
si (!$delete_dir) {
echo json_encode(array('erreur' => $delete_dir['erreur']));
mourir();
}
}
echo json_encode(array('success' => "Téléchargement supprimé"));
}
mourir();
}
inclut/font-system/font-system.php, fonction delete_download()
La fonction construit la variable `$font_dir` à partir de l'entrée utilisateur (`$_REQUEST['font_family']`) sans nettoyage, permettant la traversée du répertoire et la suppression arbitraire.
2. Élévation des privilèges authentifiés
Description:Cette vulnérabilité permet à tout utilisateur authentifié disposant au minimum du rôle d'abonné d'élever ses privilèges à n'importe quel rôle sur le site WordPress. Cela est dû à une mise à jour non sécurisée de l'option WP dans la fonction `save_option`, qui ne dispose pas de contrôles d'autorisation appropriés.
Détails techniques :
fonction publique save_option() {
si ( isset( $_POST['nonce'] ) && wp_verify_nonce( $_POST['nonce'], 'uncode-core-settings-nonce' ) ) {
si ( isset( $_POST['valeur'] ) && $_POST['valeur'] && isset( $_POST['option_id'] ) && $_POST['option_id'] ) {
$autoload = isset( $_POST['autoload'] ) && $_POST['autoload'] === 'vrai' ? vrai : faux;
update_option( $_POST['option_id'], $_POST['valeur'], $autoload );
---------- COUPER ICI ----------
inclut/core-settings/class-core-settings.php, fonction save_option()
Le nonce utilisé dans cette fonction peut être récupéré par tout utilisateur authentifié ayant accès à la zone wp-admin, permettant des mises à jour non autorisées des options et une escalade des privilèges.
Le patch
Pour remédier à ces vulnérabilités, les développeurs du plugin Uncode Core ont publié la version 2.8.9, qui inclut les correctifs suivants :
– Suppression arbitraire authentifiée de fichiers et de répertoires: Vérifications d'autorisation et de nonce implémentées dans la fonction `delete_download`.
– Escalade des privilèges authentifiés: Vérifications d'autorisation et de nonce appliquées dans la fonction `save_option` et ajout d'une vérification de liste blanche pour les clés d'option.
Conclusion
Pour garantir la sécurité de votre site WordPress, vous devez vous tenir au courant des derniers correctifs et avis de sécurité. Les vulnérabilités du plugin Uncode Core soulignent l'importance de mettre en œuvre des contrôles d'autorisation et de nonce appropriés pour toute action sensible. Nettoyez toujours les entrées utilisateur et limitez la portée de ce qui peut être mis à jour ou supprimé via les actions utilisateur.
Pour des informations plus détaillées, vous pouvez lire l'avis de sécurité complet sur le site Web de WP-Firewall's ici.
Restez en sécurité
WP-Firewall propose diverses solutions pour la sécurité de WordPress, notamment l'audit des plugins, la surveillance et la réponse aux vulnérabilités, ainsi que des services de sécurité WordPress gérés. Si vous êtes un développeur de plugins ou un chercheur en sécurité, envisagez de rejoindre WP-Firewall.