blog conviso

Code Review X Secure Code Review

March 17, 2023

By

Gustavo

Pires

Code Review vs. Secure Code Review

No processo de construção do software, há diversas etapas que são essenciais para que o desenvolvimento seja realizado de acordo com padrões de qualidade e segurança. Para que o código mantenha estes padrões durante o desenvolvimento, temos duas abordagens importantes que podem ser utilizadas para validar a qualidade do software: code review e secure code review. Neste artigo, comentaremos a importância de cada um, e como são utilizados.

No geral, o code review tem como objetivo identificar possíveis falhas, bugs ou oportunidades de melhorias no código fonte de acordo com a sintaxe e boas práticas de cada linguagem. Enquanto o secure code review tem como foco a identificação de problemas relacionados a vulnerabilidades de segurança. Caso tenha interesse, a OWASP fornece um material completo relacionado a secure code review.

Qual a diferença entre Code Review e Secure Code Review?

O objetivo do code review é encontrar e apontar falhas, bugs ou oportunidades de aprimoramento no software. A revisão pode ser feita em pares, ou por apenas um desenvolvedor, o mais importante é a compreensão do código e disseminação das lições aprendidas entre os desenvolvedores.

Geralmente, o code review é feito após cada commit (quando é feita alteração no código), ou em alguns casos a cada Pull Request (quando é solicitado uma porção do código a uma branch). É importante que na hora de fazer o code review o desenvolvedor atente-se às boas práticas. Em alguns casos a própria empresa costuma ter um guia de desenvolvimento.

Caso a empresa não possua um guia de boas práticas, é essencial que seja estabelecido um critério para análise dos códigos. A seguir, temos alguns pontos importantes que podem ser levados em consideração na análise: reutilização de código, complexidade do código, nomeações de variáveis, campos, parâmetros ou até mesmo se as classes ou métodos refletem o que realmente representa.

Ainda falando sobre code review, é possível utilizar análises manuais ou automatizadas. A análise manual consiste no próprio desenvolvedor procurar pelos problemas, falhas ou defeitos, utilizando um guia ou experiência própria de desenvolvimento. Já na análise automatizada, é utilizado ferramentas que auxiliam na padronização da qualidade do código (conferir se as boas práticas estão de fato sendo aplicadas),  ser acionável em pontos importantes, e até mesmo relatórios dos testes realizados.

Além disso, é bom lembrar que tanto para o code review quanto para o secure code review, não há discriminação hierárquica para quem esta fazendo a revisão. Entretanto, é necessário que tenha conhecimentos em desenvolvimento e segurança de software (ainda mais se o foco for secure code review).

Para que o code review seja eficiente, é válido estabelecer uma certa frequência na revisão, além de ter bem definida a etapa em que deve ser realizada. A seguir, enumerei  algumas práticas que podem deixar o seu code review mais eficiente:

  • Foque na qualidade durante o code review, e não na quantidade linhas.
  • Prefira tempos curtos, no entanto, com maior concentração, foco na qualidade.
  • Estabeleça objetivos e métricas claras, como: "diminuir erros reportados”.

Já no processo de secure code review, além de ter como base alguns dos itens mencionados no code review, a atenção deve ser voltada primordialmente para a segurança do software. É importante estar atento às possíveis brechas de segurança, pois algumas dessas falhas podem estar relacionadas com: autenticação, autorização, gerenciamento de sessão, injeção de código, controle de acesso, entrada de dados, dentre outros.

A revisão manual no secure code review, terá como ponto de atenção a revisão de brechas voltada para segurança do código. Essa revisão costuma ser mais precisa, no entanto, mais lenta, através dela é levada em consideração as regras de negócios, sendo assim, a tendência de ter falsos positivos podem ser diminuídas, o que por sinal é um grande ganho dessa prática.

Por outro lado, para uma melhor otimização do tempo, temos também a automatização do secure code review. Durante este processo é possível utilizar ferramentas de SAST que realiza um scan no código, permitindo automatizar parte do processo da análise, facilitando a busca por brechas. Quer saber mais sobre a diferença entre code review e SAST?

Podemos concluir que o code review é fundamental no desenvolvimento, e para que seja bem estruturado deve ser adotado métodos e ferramentas, como um guia de boas práticas,  revisão manual e testes automatizados. Cada técnica tem um papel específico no processo e, em conjunto, podem levar a uma melhoria significativa na qualidade e segurança do software.

A revisão manual pode identificar falhas que outras técnicas não conseguem detectar. Já os testes automatizados verificam a funcionalidade e segurança do software em diferentes cenários. A combinação dessas técnicas pode trazer resultados ainda mais positivos, como a identificação mais eficiente de vulnerabilidades e a melhoria contínua do processo de revisão de código. Somado a um bom guia de boas práticas, torna-se ainda mais poderoso!

Lembre-se: o code review busca aprimorar a qualidade do software no geral, como bugs, defeitos e a disseminação de boas práticas na análise do código, o processo tem como foco a qualidade. Já no secure code review, o foco é em encontrar vulnerabilidades de segurança, seja de forma manual ou automatizada.

Nova call to action

Sobre o autor

Gustavo
Pires

Bachelor's degree in Computer Science from the Federal University of Alagoas. He has spoken at events such as the NullByte Security Conference and Hackers to Hackers Conference, and presented research projects at national and international events. He has experience in application security, exploit development, and vulnerability research in both userland and kernel land, having discovered vulnerabilities for companies like Microsoft, AMD, and Intel. His interests include operating system internals, compilers, malware development, vulnerability research, and EDR evasion.

Saiba mais