CWE-94
Controle Impróprio da Geração de Código ('Code Injection')
Sobre
O produto constrói todo ou parte de um segmento de código usando entrada influenciada externamente vinda de um componente upstream, mas não neutraliza ou neutraliza incorretamente elementos especiais que poderiam modificar a sintaxe ou o comportamento do segmento de código pretendido.
Consequências comuns
- Controle de Acesso → Contornar Mecanismo de Proteção
- Controle de Acesso → Obter Privilégios ou Assumir Identidade
- Integridade, Confidencialidade, Disponibilidade → Executar Código ou Comandos Não Autorizados
- Não Repúdio → Ocultar Atividades
Mitigações
- Arquitetura e Design: Refatore seu programa para que você não precise gerar código dinamicamente.
- Arquitetura e Design: Execute seu código em uma "jail" ou ambiente sandbox semelhante que imponha limites rígidos entre o processo e o sistema operacional. Isso pode efetivamente restringir qual código pode ser executado pelo seu produto. Exemplos incluem o chroot jail do Unix e o AppArmor. Em geral, código gerenciado pode prover alguma proteção. Isso pode não ser uma solução viável e apenas limit
- Implementação: Assuma que toda entrada é maliciosa. Use uma estratégia de validação de entrada do tipo "aceitar apenas o que é reconhecidamente bom", isto é, use uma lista de entradas aceitáveis que estejam estritamente em conformidade com as especificações. Rejeite qualquer entrada que não esteja estritamente em conformidade com as especificações, ou transforme-a em algo que esteja. Ao realizar a
- Testes: Use ferramentas e técnicas dinâmicas que interagem com o produto usando grandes suítes de teste com muitas entradas diversas, como teste de fuzzing (fuzzing), teste de robustez e injeção de falhas. A operação do produto pode ficar mais lenta, mas não deve se tornar instável, travar ou gerar resultados incorretos.
- Operação: Execute o código em um ambiente que realize propagação automática de contaminação (taint) e impeça qualquer execução de comando que use variáveis contaminadas, como o switch "-T" do Perl. Isso forçará o programa a realizar etapas de validação que removem a contaminação, embora você deva ter cuidado para validar corretamente suas entradas de modo a não marcar acidentalmente entradas perig
- Operação: Execute o código em um ambiente que realize propagação automática de contaminação (taint) e impeça qualquer execução de comando que use variáveis contaminadas, como o switch "-T" do Perl. Isso forçará o programa a realizar etapas de validação que removem a contaminação, embora você deva ter cuidado para validar corretamente suas entradas de modo a não marcar acidentalmente entradas perig
CVEs com esta fraqueza
Perguntas frequentes
O que é CWE-94?
O produto constrói todo ou parte de um segmento de código usando entrada influenciada externamente vinda de um componente upstream, mas não neutraliza ou neutraliza incorretamente elementos especiais que poderiam modificar a sintaxe ou o comportamento do segmento de código pretendido.
Qual a probabilidade de CWE-94 ser explorada?
A MITRE classifica a probabilidade de exploração de CWE-94 como medium.
Quais plataformas CWE-94 afeta?
CWE-94 já foi observada em: Interpreted, AI/ML.
Quantas CVEs a Rainforest acompanha para CWE-94?
O Rainforest Labs acompanha atualmente 4 CVEs publicadas associadas a CWE-94. Elas estão listadas nesta página.
Potencialize sua estratégia de segurança com a Rainforest
Descubra vulnerabilidades cedo, priorize ameaças críticas e proteja o que realmente importa. A Rainforest simplifica suas operações de segurança, economizando tempo e reduzindo custos, para você focar no que move o seu negócio.
