Examinando código-fonte para vulnerabilidades de mal-intencionado e segurança

5

Quais são algumas técnicas para determinar se uma determinada parte do código-fonte é mal-intencionada ou vulnerável a ataques maliciosos? Atualmente, estou usando o cppcheck e estou aguardando uma instalação do Rational AppSource. Além disso, e analisando as diretrizes de codificação segura US-CERT, o que mais eu deveria estar olhando? Isso é para uma base de código muito grande (150K SLOC).

    
por Brian 02.06.2011 / 22:19
fonte

3 respostas

3

Eu não acho que há uma ferramenta, ou nunca será, que pode fornecer certeza. Você não afirma se está procurando por códigos maliciosos ou intencionais. Erros acidentais são mais fáceis de capturar, impossíveis de "portas traseiras" intencionais, no nível da ferramenta, para distinguir do código válido.

Eu começaria com (como você já mencionou) verificações estáticas e verificações dinâmicas (valgrind).

A revisão / auditoria do código interno será necessária e, dependendo da importância e dos orçamentos do projeto, a revisão / auditoria externa do código por especialistas seria dinheiro bem gasto. O 150kLOC é um projeto de tamanho bem médio, uma auditoria disso deveria poder ser executada.

Testar as interfaces (blackbox) é essencial. Use um consultor de segurança se você não tiver especialistas internos.

Se você está procurando por código intencional, esse é um grande problema, já que é muito fácil esconder uma vulnerabilidade intencional (por exemplo, um estouro de buffer intencional escondido atrás do cast para ocultar o aviso do compilador) e é um código muito grande certo de identificar cada um. Suponha que você não encontre todos e implante de acordo.

    
por 02.06.2011 / 23:46
fonte
3

Existem concursos periódicos para código e código ofuscados que fazem algo diferente do que parece fazer. Estude as inscrições do concurso e você descobrirá que esse não é um problema trivial a ser resolvido.

    
por 02.06.2011 / 23:51
fonte
2

What are some techniques in determining if a particular piece of source code is malicious or vulnerable to malicious attack?

Existem duas partes aqui na questão. Se você estiver procurando por código malicioso intencionalmente, então você terá que recorrer à realização de revisões de código fonte manual por examinadores competentes. Nem todo revisor estaria ciente do código malicioso, mas a maioria dos revisores (especialmente aqueles que enquadraram os requisitos para os componentes / módulos) saberiam se algum código obedece aos requisitos subjacentes ou não.

Se você procurar código suscetível a ataques mal-intencionados, tanto as revisões de código-fonte manuais quanto as automatizadas ajudarão. Tendo trabalhado com o Fortify SCA no passado, só posso repetir este conselho - faça uma análise manual de seu aplicativo para determinar o que você precisa procurar e use ferramentas para dimensionar a verificação de segurança.

    
por 03.06.2011 / 05:40
fonte