Exécution de code à distance non authentifiée dans vBulletin via une utilisation abusive de l’API Reflection dans la gestion des annonces

Une vulnérabilité de sécurité critique a été découverte dans le logiciel de forum vBulletin (versions 5.0.0 à 5.7.5 et 6.0.0 à 6.0.3). Cette faille permet à des attaquants ne disposant pas de compte sur le forum d’exécuter du code malveillant sur le serveur hébergeant le forum. Cela peut conduire à un contrôle total du serveur, avec une exposition potentielle de données sensibles, la défiguration du site ou l’utilisation du serveur pour des attaques ultérieures. Le problème est particulièrement pertinent pour les forums utilisant des versions récentes de PHP (8.1 et ultérieures) et est activement exploité selon les rapports.

ProduitvBulletin
Date02/06/2025 16:14:45
Informations
  • Correctif disponible
  • Exploitation active

Résumé technique

Les versions de vBulletin de 5.0.0 à 5.7.5 et de 6.0.0 à 6.0.3 sont vulnérables à une faille de type exécution de code à distance (RCE) non authentifiée. La cause principale réside dans un contrôle d’autorisation inadéquat combiné à une utilisation inappropriée de la Reflection API de PHP, affectant particulièrement le point de terminaison ajax/api/ad/replaceAdTemplate.

La vulnérabilité, identifiée sous le nom CVE-2025-48827, permet à des utilisateurs non authentifiés d’appeler des méthodes protégées du contrôleur API lorsque le logiciel est exécuté sur PHP 8.1 ou une version supérieure. Cela s’explique par le fait qu’à partir de PHP 8.1, le comportement de la réflexion a changé, permettant potentiellement de contourner les contrôles d’accès prévus dans certaines conditions.

Les attaquants peuvent exploiter cette vulnérabilité en envoyant une requête POST correctement construite vers le chemin / avec le paramètre routestring défini sur ajax/api/ad/replaceAdTemplate. Dans cette requête, il est possible d’injecter dans le paramètre template une balise de modèle vBulletin malveillante, telle que <vb:if condition='" ... "'>, qui peut contenir du code PHP arbitraire, par exemple passthru($_POST['cmd']) ou, comme observé dans le modèle Nuclei fourni, var_dump("some_random_string") en guise de preuve de concept.

Une seconde requête POST, également adressée à / avec routestring défini sur ajax/render/ad_<location> (où <location> correspond à celui utilisé dans la première requête), active le rendu du modèle injecté, exécutant ainsi le code PHP avec les privilèges de l’utilisateur du serveur web.

L’exploit utilise donc un processus en deux étapes : d’abord pour injecter le code de modèle malveillant via replaceAdTemplate, puis pour le rendre et l’exécuter via ajax/render/ad_<location>. Cela permet à un attaquant non authentifié d’obtenir l’exécution de code à distance.

La vulnérabilité CVE-2025-48828 est également mentionnée, se référant probablement à un aspect étroitement lié de cette chaîne de vulnérabilités ou au problème plus large de l’invocation de méthodes protégées.

Recommandations

  1. Mise à jour immédiate : mettez à jour vBulletin vers la version 6.0.4 ou ultérieure. Si vous utilisez vBulletin 5.x, appliquez tous les correctifs de sécurité disponibles, en particulier ceux traitant de l’invocation des méthodes protégées du contrôleur et de la sécurisation de la fonctionnalité de remplacement des publicités.
  2. Pare-feu d’application Web (WAF) : implémentez des règles WAF pour bloquer les requêtes tentant d’exploiter cette vulnérabilité. Ces règles pourraient :
    • Inspecter le paramètre routestring pour identifier des valeurs suspectes telles que ajax/api/ad/replaceAdTemplate ou ajax/render/ad_.
    • Détecter les balises de modèle vBulletin (<vb:if>, etc.) contenant des fonctions d’exécution PHP (ex. passthru, shell_exec, system, eval, exec, var_dump) à l’intérieur du paramètre template de l’appel replaceAdTemplate.
    • Bloquer l’invocation directe de méthodes API protégées si le WAF est capable d’identifier de tels modèles.
  3. Considérations sur la version de PHP : bien que la possibilité d’exploiter la vulnérabilité soit plus élevée sur PHP 8.1+, les défauts logiques sous-jacents peuvent exister même sur des versions antérieures de PHP. Ne comptez pas sur l’utilisation d’une ancienne version de PHP comme mesure d’atténuation complète.
  4. Analyse des journaux du serveur : surveillez les journaux d’accès du serveur web et les journaux applicatifs pour détecter les requêtes correspondant au modèle de l’exploit (requêtes POST vers / avec routestring=ajax/api/ad/replaceAdTemplate ou routestring=ajax/render/ad_) afin de repérer toute tentative de compromission.

[Callforaction-THREAT-Footer]

Leave a Reply

Your email address will not be published. Required fields are marked *