← voltar
CVE-2024-56145criticalsob ataqueCWE-94

RCE when PHP `register_argc_argv` config setting is enabled in craftcms/cms

100Vexday Risk Score

Corrija agora. Ela está sob exploração confirmada pelo CISA e tem exploit funcional público.

ssvc Actcvss 9.3epss 97%
da publicação à arma2 dias
Publicada no NVD18 de dez.
1ª PoC+2d
metasploit+1d
CISA KEV+166d
probabilidade de exploração
97%top 1% das CVEs
exploração observada
simCISA + VulnCheck
5 exploit(s) público(s)
Ação exigida pela CISAprazo federal: 2025-06-23

Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.

Resumo

Craft CMS contém uma falha de code injection (CWE-94) que resulta em RCE não autenticada, mas apenas em instalações cujo php.ini tenha a diretiva `register_argc_argv` habilitada — que é Off por padrão no PHP. Está no catálogo KEV da CISA com exploração confirmada em campo, tem módulo Metasploit e PoC pública, o que eleva a urgência para quem de fato tem essa configuração ativa, mesmo sem CVSS refletir a pré-condição.

Detalhamento técnico

O bootstrap da aplicação (bootstrap/bootstrap.php) usa uma função auxiliar que lê opções via App::cliOption() para resolver configurações como o nome do ambiente (--env) e outros parâmetros de inicialização. Antes da correção, essa leitura de opções 'estilo CLI' ocorria independente do tipo de aplicação (web ou console). O problema é que, quando `register_argc_argv` está ativado no PHP, o array global $argv é populado a partir da própria query string da requisição HTTP — mesmo em contexto web, fora de linha de comando. Isso significa que parâmetros que o Craft trata como argumentos de linha de comando podem ser injetados por um atacante remoto simplesmente manipulando a URL da requisição.

A CVE oficial não detalha a cadeia completa até a execução de código (o advisory da GitHub Security Advisory chama o vetor de 'unspecified'), mas pesquisa de terceiros (créditos a Assetnote, referenciada no repositório de PoC público) associa a causa ao tratamento inadequado de caminhos de template fornecidos pelo usuário combinado com esse parsing indevido de argv. Na prática, o atacante consegue influenciar valores de configuração/ambiente que o Craft usa para resolver caminhos de config ou template, e essa influência é aproveitada para chegar a execução de código no lado do servidor.

A correção (commit 82e893f) restringe a chamada a App::cliOption() para que só ocorra quando $appType === 'console', ou seja, quando a aplicação de fato está rodando via CLI. Isso elimina a superfície de ataque porque, em contexto web, o $argv derivado da query string passa a ser ignorado na resolução de configuração.

Como é explorada

O vetor é de rede, não autenticado, sem interação do usuário e sem privilégios (CVSS 4.0 AV:N/AC:L/AT:N/PR:N/UI:N) — consistente com o título do PoC público, que se descreve como 'Unauthenticated RCE'. A única pré-condição real é a configuração do servidor: `register_argc_argv = On` no php.ini. Essa diretiva não é o padrão do PHP; ambientes que nunca a habilitaram explicitamente não estão expostos a este vetor específico, independentemente da versão do Craft.

A ferramenta de exploração pública (Chocapikk/CVE-2024-56145) implementa um comando de checagem para identificar instâncias vulneráveis e um comando de exploração que sobe um servidor FTP para servir um payload malicioso e gera shells reversos (bash, nc, mkfifo). Isso indica que a exploração induz a aplicação Craft a buscar/incluir um recurso controlado pelo atacante (via FTP) como parte do fluxo de resolução de configuração/template afetado pelo argv manipulado, culminando em execução de comando no servidor.

O status no KEV da CISA confirma exploração ativa em campo (data de inclusão 2025-06-02, prazo de correção 2025-06-23 para agências federais dos EUA), e o EPSS de 0.974 indica probabilidade muito alta de exploração generalizada — coerente com a disponibilidade de módulo Metasploit e template Nuclei para varredura em massa.

Versões

Afetadas
>= 5.0.0-RC1, = 4.0.0-RC1, = 3.0.0, < 3.9.14
Corrigidas em
3.9.14 (branch 3.x); 4.13.2 (branch 4.x); 5.5.2 (branch 5.x)

Como se proteger

Atualizar para 3.9.14, 4.13.2 ou 5.5.2, conforme a série major em uso — são as versões patch oficiais indicadas pelo fornecedor e confirmadas no advisory GHSA-2p6p-9rc9-62j9.

Quem não pode atualizar imediatamente deve verificar se `register_argc_argv` está habilitado no php.ini (fora do padrão) e desativá-lo — esse é o workaround oficial do fornecedor e neutraliza o vetor sem exigir mudança de código. Como a diretiva raramente é habilitada intencionalmente em produção, muitos ambientes já estão fora de risco por padrão; a verificação (via phpinfo() ou php -i | grep register_argc_argv) deve ser o primeiro passo antes de qualquer outra ação.

Não há detalhamento público de assinatura de WAF confiável específica do fornecedor para este CVE, já que o próprio advisory classifica o vetor como 'unspecified'; regras genéricas de bloqueio de query strings com padrões de opção CLI (ex.: sequências '--' seguidas de parâmetros de configuração) podem servir como controle compensatório, mas não substituem a correção ou a desativação da diretiva.

Como detectar

Não há assinatura oficial de detecção publicada pelo fornecedor. Como sinal indireto, buscar em logs de acesso web por query strings com sintaxe atípica de argumentos de linha de comando (ex.: tokens no formato '--env=' ou similares) endereçadas a instâncias Craft CMS expostas publicamente. Tráfego de saída inesperado do processo web/aplicação em direção a servidores FTP externos é um indicador forte, já que o exploit público usa um servidor FTP controlado pelo atacante para entregar o payload de execução. Templates Nuclei e o módulo Metasploit existentes também geram padrões de requisição reconhecíveis em WAF/IDS caso configurados para logar payloads completos.

Pesquisado e redigido com IA a partir do advisory do fornecedor e de análises públicas, com as fontes acima. Confira sempre a versão corrigida no advisory oficial antes de agir.
Craft is a flexible, user-friendly CMS for creating custom digital experiences on the web and beyond. Users of affected versions are affected by this vulnerability if their php.ini configuration has `register_argc_argv` enabled. For these users an unspecified remote code execution vector is present. Users are advised to update to version 3.9.14, 4.13.2, or 5.5.2. Users unable to upgrade should disable `register_argc_argv` to mitigate the issue.
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Produtos afetados
craftcms · cms
⚠ Recursos públicos, para você avaliar a exposição de sistemas que controla ou está autorizado a testar. Teste apenas com autorização.