CWE-95
Improper Neutralization of Directives in Dynamically Evaluated Code ('Eval Injection')
Sobre
O produto recebe entrada de um componente a montante, mas não neutraliza ou neutraliza incorretamente a sintaxe de código antes de usar a entrada em uma chamada de avaliação dinâmica (por exemplo, "eval").
Consequências comuns
- Confidencialidade → Ler Arquivos ou Diretórios, Ler Dados da Aplicação
- Controle de Acesso → Contornar Mecanismo de Proteção
- Controle de Acesso → Obter Privilégios ou Assumir Identidade
- Integridade, Confidencialidade, Disponibilidade, Outro → Executar Código ou Comandos Não Autorizados
- Não Repúdio → Ocultar Atividades
Mitigações
- Arquitetura e Projeto, Implementação: Se possível, refatore seu código para que ele não precise usar eval() de forma alguma.
- Implementação: Presuma que toda entrada é maliciosa. Use uma estratégia de validação de entrada do tipo "aceitar o que é reconhecidamente bom", ou seja, use uma lista de entradas aceitáveis que estejam em estrita conformidade com as especificações. Rejeite qualquer entrada que não esteja em estrita conformidade com as especificações, ou transforme-a em algo que esteja. Ao realizar a validação de e
- Implementação: As entradas devem ser decodificadas e canonicalizadas para a representação interna atual da aplicação antes de serem validadas (CWE-180, CWE-181). Certifique-se de que sua aplicação não decodifique inadvertidamente a mesma entrada duas vezes (CWE-174). Tais erros poderiam ser usados para contornar esquemas de allowlist introduzindo entradas perigosas depois que elas já foram verific
- Implementação: Para programas Python, é frequentemente recomendado usar a função ast.literal_eval() em vez de eval, já que ela foi intencionalmente projetada para evitar a execução de código. No entanto, um adversário ainda poderia causar consumo excessivo de memória ou de pilha por meio de estruturas profundamente aninhadas [REF-1372], de modo que a documentação do Python desencoraja o uso de ast
CVEs com esta fraqueza
Perguntas frequentes
O que é CWE-95?
O produto recebe entrada de um componente a montante, mas não neutraliza ou neutraliza incorretamente a sintaxe de código antes de usar a entrada em uma chamada de avaliação dinâmica (por exemplo, "eval").
Qual a probabilidade de CWE-95 ser explorada?
A MITRE classifica a probabilidade de exploração de CWE-95 como medium.
Quais plataformas CWE-95 afeta?
CWE-95 já foi observada em: Java, JavaScript, Python, Perl, PHP, Ruby, Interpreted, AI/ML.
Quantas CVEs a Rainforest acompanha para CWE-95?
O Rainforest Labs acompanha atualmente 3 CVEs publicadas associadas a CWE-95. 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.
