Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
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.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-14378-DevKit-Pro-Auth-Bypass — Análise defensiva, detalhamento do patch e scanner de detecção para CVE-2026-14378 (Plugin WordPress DevKit Pro <= 2.3.0). | Kitploit
Ferramentas/GitHubGitHub/anoxhunterdump-ctrl/cve-2026-14378-devkit-pro-auth-bypass
Ferramentas DefensivasScanners de VulnerabilidadesAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebSegurança WebTestes de PenetraçãoAutenticação

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 →
GitHubanoxhunterdump-ctrl/cve-2026-14378-devkit-pro-auth-bypass

CVE-2026-14378-DevKit-Pro-Auth-Bypass

Análise defensiva, detalhamento do patch e scanner de detecção para CVE-2026-14378 (Plugin WordPress DevKit Pro <= 2.3.0).

Ver Repositório
há 1 diaAinda não revisado
Compartilhar

CVE-2026-14378 — Bypass de Autenticação Não Autenticado no Plugin DevKit Pro do WordPress

Severity: Critical Vulnerability: CWE-287 Affected: <= 2.3.0 Patched: 2.3.1 License: MIT


Índice

  1. Resumo Executivo
  2. Detalhamento da Vulnerabilidade
  3. Causa Raiz e Análise Técnica
  4. Passo a Passo Completo do Ataque
    • Passo 0: Configuração do Ambiente
    • Passo 1: Confirmar que o Plugin Está Instalado e Vulnerável
    • Passo 2: Acionar o Vazamento de Nonce
    • Passo 3: Enviar a Requisição de Revert-Switch
    • Passo 4: Verificar o Acesso de Administrador
  5. Detecção com o Scanner
    • Saída do Estado Vulnerável
    • Saída do Estado Corrigido
  6. Modelagem de Ameaças — Como Isso Pode Ser Usado Indevidamente
  7. Análise do Diff do Patch
  8. Indicadores de Comprometimento (IoCs)
  9. Remediação
  10. Uso do Scanner
  11. Aviso Legal

Resumo Executivo

CVE-2026-14378 é um Bypass de Autenticação Não Autenticado crítico (CVSS 9.8) no plugin DevKit Pro para WordPress, afetando todas as versões até e incluindo a 2.3.0.

O plugin inclui um mecanismo de troca de usuário para desenvolvedores. Quando um administrador "troca" para outra conta de usuário, ele armazena o ID do administrador em um cookie chamado original_user_id. A falha: o plugin renderiza um formulário HTML de "voltar" em qualquer página sempre que esse cookie estiver presente — inclusive para visitantes não autenticados que definem o cookie manualmente. Pior ainda, a etapa de verificação de nonce verifica a capacidade de administrador do usuário do cookie, não a sessão do solicitante — então o servidor entrega alegremente um cookie de sessão de administrador autenticado para qualquer um que envie o POST correto.

Resultado final: zero credenciais necessárias para assumir completamente o admin do WordPress.


Detalhamento da Vulnerabilidade

AtributoDetalhes
ID do CVECVE-2026-14378
Classe da VulnerabilidadeAutenticação Imprópria (CWE-287)
Pontuação CVSS v3.19.8 (Crítica)
Vetor CVSSCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Software AfetadoPlugin WordPress DevKit Pro (dplugins)
Versões Vulneráveis<= 2.3.0
Versão Corrigida2.3.1
Data de Divulgação02 Out 2026

Causa Raiz e Análise Técnica

1. Como o Recurso de Troca de Usuário Funciona (Fluxo Normal)

O DevKit Pro inclui um auxiliar de desenvolvedor que permite aos administradores do site "trocar" para outras contas de usuário para testar permissões. Quando o administrador usa a troca:

  1. O plugin armazena o ID do administrador em um cookie: Set-Cookie: original_user_id=1
  2. Em carregamentos de página subsequentes, o plugin verifica isset($_COOKIE['original_user_id'])
  3. Se o cookie existir, ele renderiza uma barra de ferramentas "Switch Back" em wp_footer() com um formulário POST oculto contendo um nonce novo
  4. Quando o administrador clica em "Switch Back", o formulário faz POST para admin-post.php?action=revert_switch
  5. O plugin verifica o nonce e então chama wp_set_auth_cookie($user_id) para restaurar a sessão original

2. O Caminho de Código Vulnerável

O manipulador do hook wp_footer:

// DevKit Pro <= 2.3.0 — render_switch_back_bar()
public function render_switch_back_bar() {
    // FLAW: Only checks if cookie exists — no session validation!
    if ( isset( $_COOKIE['original_user_id'] ) ) {
        $user_id = (int) $_COOKIE['original_user_id'];
        $nonce   = wp_create_nonce( 'devkit_revert_switch_' . $user_id );
        echo '<div id="devkit-pro-switch-back" class="devkit-switch-bar" style="display:none;">';
        echo '  <form id="devkit-revert-form" action="' . admin_url('admin-post.php') . '" method="POST">';
        echo '    <input type="hidden" name="action" value="revert_switch" />';
        echo '    <input type="hidden" name="_wpnonce" value="' . $nonce . '" />';
        echo '    <input type="hidden" name="target_user_id" value="' . $user_id . '" />';
        echo '  </form>';
        echo '</div>';
        echo '<!-- DevKit Pro 2.3.0 Switch Component Active -->';
    }
}

O manipulador POST que processa o envio do formulário:

// DevKit Pro <= 2.3.0 — handle_revert_switch()
public function handle_revert_switch() {
    $user_id = (int) $_POST['target_user_id'];
    $nonce   = sanitize_text_field( $_POST['_wpnonce'] );

    if ( ! $this->verify_nonce_and_capability( $user_id, $nonce ) ) {
        wp_die( 'Unauthorized' );
    }

    wp_set_current_user( $user_id );
    wp_set_auth_cookie( $user_id );        // <-- Grants authenticated session to caller
    wp_redirect( admin_url() );
    exit;
}

private function verify_nonce_and_capability( $user_id, $nonce ) {
    if ( ! wp_verify_nonce( $nonce, 'devkit_revert_switch_' . $user_id ) ) {
        return false;
    }
    // CRITICAL FLAW: Checks the cookie user's capability, not the caller's!
    return user_can( $user_id, 'manage_options' );
}

3. Por que a Verificação Falha

user_can( $user_id, 'manage_options' ) responde à pergunta: "O usuário #1 possui a capacidade manage_options?"
A resposta para o usuário #1 (o primeiro administrador do WordPress criado) é sempre true.

Deveria estar perguntando: "A pessoa que está fazendo esta requisição HTTP possui a capacidade manage_options?"
A verificação correta é current_user_can('manage_options'), que retornaria false para um visitante não autenticado.


Passo a Passo Completo do Ataque

Todo este passo a passo foi executado e verificado contra uma instância WordPress ativa rodando em um contêiner Podman local (http://localhost:8080) com o DevKit Pro 2.3.0 ativo.

Passo 0: Configuração do Ambiente

Para reproduzir isso localmente, você precisa de:

  • Docker ou Podman
  • WordPress (qualquer versão recente)
  • Plugin DevKit Pro versão <= 2.3.0 instalado e ativado

Configuração rápida de laboratório com Podman:

# Start MariaDB
podman run -d --name wp-db \
  -e MYSQL_ROOT_PASSWORD=rootpass \
  -e MYSQL_DATABASE=wordpress \
  -e MYSQL_USER=wpuser \
  -e MYSQL_PASSWORD=wppass \
  mariadb:10.6

# Start WordPress
podman run -d --name wp-app \
  -p 8080:80 \
  --link wp-db:mysql \
  -e WORDPRESS_DB_HOST=mysql \
  -e WORDPRESS_DB_NAME=wordpress \
  -e WORDPRESS_DB_USER=wpuser \
  -e WORDPRESS_DB_PASSWORD=wppass \
  wordpress:latest

Após o WordPress ser inicializado (http://localhost:8080/wp-admin/install.php), instale e ative o DevKit Pro 2.3.0 através do menu de plugins.


Passo 1: Confirmar que o Plugin Está Instalado e é Vulnerável

Baixar ferramenta