No mundo virtual, muita gente ainda se guia por métricas de vaidade, como apenas avaliar o número de downloads de aplicativos. Uma tarefa importante, mas geralmente negligenciada no pipeline de desenvolvimento, é a auditoria de código-fonte. Esse tipo de análise não só ajuda a identificar anomalias no código, como também deixa o software em conformidade com os requisitos do usuário, proporcionando uma melhor experiência, e também com as normas do mercado.
Há muitos problemas no desenvolvimento do software que só são descobertos depois do lançamento. É o usuário, no dia a dia, que se frustra com bugs, performance ruim e até com questões relacionadas à falta de segurança dos seus dados pessoais. Projetos assim custam caro e demandam tempo das equipes de tecnologia. A auditoria de código-fonte evita que grande parte das vulnerabilidades sejam conhecidas apenas depois do lançamento. O TOP 10: 2021 da OWASP (Open Web Application Security Project) lista os principais problemas que impedem que aplicações e APIs sejam desenvolvidas e mantidas de forma confiável. Grande parte dessas vulnerabilidades listadas abaixo poderia ser evitada com uma análise minuciosa do código.
· Quebra no controle de acesso
· Falhas de criptografia
· Injeção de comandos maliciosos
· Design inseguro
· Configuração incorreta de segurança
· Componentes vulneráveis e desatualizados
· Identificação e falhas de autenticação
· Falhas de software e integridade dos dados
· Registro de segurança e falhas de monitoramento
· Falsificação de solicitação do lado do servidor
A revisão de código ou code review ajuda a melhorar a qualidade do software. Nesses casos, uma revisão por pares é comum e eficaz. Quando um profissional de desenvolvimento de software examina o código de um colega, a busca é por defeitos, mas também por oportunidades de melhorar a qualidade da aplicação.
Há outras formas de revisão de código, como:
· Estática x dinâmica
A auditoria estática é realizada enquanto o programa não está rodando. Já a revisão dinâmica é feita como a aplicação em execução. Nesta última são checadas informações como tempo de resposta e funcionalidades. Pode também encontrar vários tipos de vulnerabilidades não programadas inicialmente pelos auditores.
· Revisão automática x manual
A revisão automática do código faz uma busca rápida por vulnerabilidades mais comuns, enquanto a revisão manual procura realizar auditorias mais detalhadas no código. A análise manual requer conhecimento aprofundado da arquitetura do código, é mais lenta e depende em parte de comentários deixados pelo desenvolvedor. A revisão por pares é bastante usada na auditoria manual.
· Caixa preta x caixa branca
A inspeção black box (caixa preta) é realizada às cegas, sem acesso autorizado ao código, a exemplo do teste de penetração e engenharia reversa. Ao contrário, com white box (caixa branca) o profissional tem total acesso ao código-fonte da aplicação.
· Interna x externa
Enquanto a primeira análise é realizada por membros da equipe que desenvolveu a aplicação, a análise externa é feita por profissionais terceirizados.
A auditoria de código-fonte precisa fazer parte das etapas de desenvolvimento de software como todas as outras, a exemplo da análise de requisitos, implementação e testes. Uma revisão sistemática do código da aplicação pode detectar problemas de configuração, sistemas mal projetados, erros de configuração e muito mais. Essa pode ser a garantia de segurança e confiabilidade do software para quem não admite correr riscos desnecessários.