5 erros graves que impactam a segurança do software

Muito tem se falado sobre segurança de dados e transformação digital, mas antes de mais nada, devemos falar em desenvolvimento seguro de software, onde tudo começa objetivando a proteção contra a introdução acidental de vulnerabilidades de segurança nos sistemas.

Defeitos, bugs e falhas lógicas são consistentemente a principal causa de vulnerabilidades de softwares comumente exploradas. Por meio da análise de milhares de vulnerabilidades relatadas, os profissionais de segurança descobriram que a maioria das vulnerabilidades se origina de erros comuns de programação.

Ao identificar as práticas de codificação inseguras que levam a esses erros e instruir os desenvolvedores sobre alternativas seguras, as organizações podem adotar medidas proativas para ajudar a reduzir ou eliminar significativamente as vulnerabilidades no software antes da implantação.

Dada a gravidade deste cenário, tanto as empresas mais desenvolvidas quanto os países como Brasil, e até a União Europeia, estão se movimentando para criar regras específicas e capacitar cada vez mais seus profissionais de desenvolvimento focado na área de segurança.

A LGPD, Lei de Proteção de Dados brasileira, recém sancionada pelo presidente, tem regras específicas que garante maior controle dos cidadãos sobre suas informações pessoais, exigindo consentimento explícito para coleta e uso dos dados e obriga a oferta de opções para o usuário visualizar, corrigir e excluir esses dados.

Outro ponto importante é a criação da figura do encarregado pelo tratamento de dados pessoais que deverá orientar os funcionários e os contratados da entidade a respeito das práticas a serem tomadas em relação à proteção de dados pessoais visando a garantia da segurança dos dados, impedindo acessos não autorizados e qualquer forma de vazamento.

Durante meus últimos 10 anos de trabalho encontrei diversas falhas de desenvolvimento e codificação absurdas que deixaram os muitos dados sensíveis corporativos expostos a ataques de hackers. Abaixo listo os 5 erros mais graves que impactam diretamente a segurança do software com dicas de como evita-los e diversos insights. Se você trabalha em qualquer área de desenvolvimento de software, deve ler cuidadosamente cada um dos itens abaixo:

1. Falha ao Controlar Geração de Código (também conhecida como 'Code Injection')

Embora seja difícil negar a sensualidade do código gerado dinamicamente, os invasores acham isso igualmente atraente. Ele se torna uma séria vulnerabilidade quando seu código é chamado diretamente por pessoas não autorizadas, se entradas externas podem afetar qual código é executado ou se essas entradas são alimentadas diretamente no próprio código

2. Uso inadequado da Criptografia

Criptografia Grow-Your-Own é uma visão bem-vinda para os atacantes. A criptografia é difícil. Se matemáticos brilhantes e cientistas da computação em todo o mundo não conseguem acertar - e estão regularmente desatualizando suas próprias técnicas - então você também não pode.

A codificação de uma conta secreta e senha em seu software é extremamente conveniente - para engenheiros reversos qualificados. Se a senha for a mesma em todo o seu software, todos os clientes ficarão vulneráveis quando essa senha for inevitavelmente conhecida. E porque é hard-coded, é uma dor enorme para consertar.

3. Validação de entrada incorreta

Certifique-se de que sua entrada seja válida. Se você está esperando um número, não deve conter letras. Nem o preço de um carro novo deve ser um dólar. A validação de entrada incorreta pode levar a vulnerabilidades quando os invasores podem modificar suas entradas de maneiras inesperadas. Muitas das vulnerabilidades mais comuns de hoje podem ser eliminadas, ou pelo menos reduzidas, com validação de entrada restrita.

4. Codificação imprópria e consultas de banco estruturadas inadequadas (também conhecido como SQL injection)

A codificação de saída insuficiente está na raiz da maioria dos ataques baseados em injeção. Um invasor pode modificar os comandos que você pretende enviar para outros componentes, levando possivelmente a um comprometimento completo de seu aplicativo - sem mencionar a exposição dos outros componentes a explorações que o invasor não conseguiria iniciar diretamente. Quando o programa gera saídas para outros componentes na forma de mensagens estruturadas, como consultas ou solicitações, separe as informações de controle e os metadados dos dados reais.

Se os invasores puderem influenciar o SQL que você envia ao banco de dados, eles poderão modificar as consultas para roubar, corromper ou alterar os dados subjacentes. Se você usar consultas SQL em controles de segurança, como a autenticação, os invasores poderão alterar a lógica dessas consultas para ignorar a segurança.

5. Controle de acesso inadequado (Autorização)

Se você não garantir que os usuários do seu software estejam fazendo apenas o que eles têm permissão, os invasores tentarão explorar sua autorização inadequada e exercer essa funcionalidade não autorizada.

Seu software pode precisar de privilégios especiais para executar determinadas operações; empunhar esses privilégios por mais tempo que o necessário é arriscado. Ao executar com privilégios extras, seu aplicativo tem acesso a recursos que o usuário do aplicativo não pode alcançar diretamente. Sempre que você inicia um programa separado com privilégios elevados, os invasores podem potencialmente explorar esses privilégios.

Essa lista de erros durante o desenvolvimento de software atende ao mesmo propósito de aumentar a conscientização das pessoas envolvidas nesse processo. Uma grande parte do sucesso é reconhecer os erros mais comuns e os modos de falha. Assim, você pode - pelo menos em teoria - perceber quais deles você está cometendo.

Nós cobrimos alguns dos erros mais comuns de programação e codificação neste artigo, mas, caso você queira se aprofundar, clique aqui para acompanhar um curso gratuito em desenvolvimento seguro e evite outros erros muito comuns.

Alcyon Junior é Gestor de Segurança da Informação no SEBRAE, Líder do Capítulo OWASP de Brasília, instrutor credenciado pela EXIN, Professor na UnB e IESB e mantenedor do PortalTIC.com. Especialista em Redes de Computador pela CISCO, MBA em Governança de TI e pós-graduado em CyberSecurity. Mestre em Gestão do Conhecimento e da Tecnologia da Informação com ênfase em Segurança Cibernética pela Universidade Católica de Brasília. Doutorando em Engenharia Elétrica com ênfase em Segurança da Informação e Comunicações na Universidade de Brasília (UnB). Além de possuir as certificações: Ethical Hacking Foundation, Information Security Based on ISO/IEC 27002, ITIL® Foundation Certificate in IT Service Management, Cisco Networking Academy Program, McAfee Vulnerability Manager e Linux Server Professional 1.

↑ Voltar ao Topo