Sem categoria

3 erros no processo de codificação segura

As vulnerabilidades são o resultado de um erro humano. Muitos não gostam mas, a maiorias dos problemas de segurança de aplicativos da web são resultado de erros durante o processo de codificação

Assim, se pensarmos de forma mais clara a melhor abordagem para criar software seguro é fazer tudo o que é possível para evitar erros no processo de desenvolvimento.

Quando falamos em treinamentos sobre os erros mais comuns cometido por desenvolvedores, também falamos que muitos dos erros poderiam ser facilmente evitados seguindo as orientações presentes em vários guias de desenvolvimento, como por exemplo o do Open Web Application Security Project (OWASP).

O desenvolvedor vai encontrar basicamente detalhes sobre como proceder com a validação de entrada, codificação de saída, controle de acesso, segurança de comunicação, proteção de dados, práticas criptográficas, etc.

1. Falhas na Educação e Conscientização

Falamos logo acima que os desenvolvedores são responsáveis pelas vulnerabilidades presentes no código. 

No entanto, essas vulnerabilidades não são deixadas no código de forma deliberada, o que observamos é que muitos desenvolvedores não possuem o conhecimento adequado para a criação de um código seguro.

Um dos problemas que podemos identificar é que mesmo as universidades tendo foco em ensinar detalhes das linguagens e como elas devem funcionar, poucas ou quase nenhuma tem cadeiras específicas para segurança de código.

Esse ponto fica ainda mais evidente quando temos várias gerações de desenvolvedores, os mais antigos foram educados em um momento onde a preocupação com segurança era muito menor.

Portanto, para garantir que as equipes tenham um conhecimento mais nivelado se faz necessário a criação de um programa de nivelamento e educação das equipes para que desta forma todos tenham o conhecimento inicial sobre o tema. 

Falamos muito sobre isso em nosso artigo sobre a importância de treinamentos. 

No entanto, um grande problema é que muitas vezes os gestores de áreas de desenvolvimento não tem a visão de que a falta de educação adequada das suas equipes leva para dentro das empresas um risco muito alto.

Um desenvolvedor sem o conhecimento adequado de segurança pode ser treinado, educado, mas um gestor que não percebe a importância da segurança dentro do seu dia a dia dificilmente entenderá os riscos a que está exposto.

Muitos gestores assumem que estes profissionais já saem das faculdades com o conhecimento adequado para trabalhar com desenvolvimento seguro, entretanto isso não é verdade!

Certamente, precisamos entender que por melhor que sejam nossos desenvolvedores sempre teremos novas técnicas e novas metodologias de ataques, e isso só pode ser resolvido com um programa de treinamentos constantes.

Seus desenvolvedores irão cometer erros, e isso pode ser uma grande oportunidade de aprendizado.

Não mantenha as equipes de desenvolvimento e de segurança afastadas, elas devem trabalhar juntas, devem possuir objetivos comuns. Estas duas equipes podem aprender muito uns com os outros e este conhecimento e oportunidade não podem ser perdidos.

2. Falta de validação

Mesmo que seus desenvolvedores sejam mais conscientes e tenham mais conhecimento sobre segurança, todavia  ainda vão cometer erros.

Um gestor experiente não pode simplesmente confiar no conhecimento dos seus desenvolvedores para criar um código seguro, isso não é suficiente

Você precisa de ferramentas que os ajudem a identificar possíveis falhas em seus códigos.

Em um modelo ideal de desenvolvimento teremos ferramentas integradas ao processo de desenvolvimento e assim realizando varreduras de código sempre que o processo passar por uma etapa.

Já tratamos sobre ferramentas em processos de desenvolvimento seguro em um de nossos artigos.

Acreditamos que as ferramentas são necessárias dentro do processo de desenvolvimento, no entanto não devemos acreditar que somente elas serão a solução única de nosso problema de segurança de código.

Ainda que, você tenha uma ótima ferramenta de varredura de código, você vai precisar de um profissional qualificado e experiente para analisar e validar os resultados da ferramenta, voltamos assim à questão do treinamento e educação.

Embora os testes sejam realizados durante o processo de desenvolvimento, é necessário que sejam realizados testes adicionais, que tragam a certeza de uma aplicação operacionalmente segura.

O objetivo é criar camadas de proteção para o código do software, permitindo que erros de codificação sejam identificados e corrigidos de forma mais rápida e o mais cedo possível.

3. Testes Tardios 

Para conseguir uma melhor segurança de código, não basta o desenvolvimento ter implementado os requisitos de codificação seguras ou mesmo ter colocado diretrizes de codificação seguras, além de ter construído uma infraestrutura de teste.

A criação de um código seguro não pode ser baseada apenas na observância de alguns princípios colocados como regras de codificação

Um código seguro também é fruto de uma mudança de mentalidade e cultura e por isso o melhor resultado será alcançado quando o time de desenvolvimento entender que o pensamento em segurança também é de sua responsabilidade.

Os desenvolvedores e suas equipes não devem apenas sentir que são obrigados a seguir um conjunto de regras ou diretrizes, eles primordialmente precisam ter o legítimo interesse em criar códigos seguros.

Muitas equipes assumem que testes serão realizados, que outras equipes estarão olhando o código em busca de erros e ou falhas e por isso não precisam se preocupar com o desenvolvimento do código de forma segura.

Estas equipes precisam entender que existe um processo e que cada uma das etapas influência direta ou indiretamente nas outras e isso gera impactos

Atribuir responsabilidades podem e devem ser avaliadas pelos gestores. 

Isso não quer dizer que vamos punir os desenvolvedores, mas os torna cada vez mais responsáveis por seu código, e isso se consegue tornando-os donos do código, eles tem que entender e pensar como sendo deles o produto final.  

Não se baseie apenas em políticas

Depois de tudo que colocamos aqui, queremos que você perceba que basear a segurança do seu código somente nas políticas de segurança não serão a melhor solução possível, mesmo que elas sejam necessárias. 

A segurança começa com o pensamento correto ao criar aplicativos.

About author

Articles

Mais de 15 anos de experiência em segurança da informação e aplicações, graduado em processamento de dados, trabalhei como professor universitário e participei ativamente como instrutor de treinamento para mais de 6000 desenvolvedores em equipes de TI. Sou pai de duas meninas e trader nas horas vagas.
Related posts
Sem categoria

A importância das métricas em Segurança de Aplicações

Certa vez o escritor Peter Drucker disse: “Aquilo que não é medido, não é melhorado”. Ele…
Read more
Sem categoria

Testes de Segurança - aplicando ao pipeline

Na primeira parte de nosso artigo, falamos sobre os conceitos básicos de testes de segurança.
Read more
InfraestruturaSem categoria

Arquitetura Imutável em AppSec

Falar sobre infraestrutura imutável requer que voltemos um pouco no tempo e comecemos explicando…
Read more

Deixe um comentário