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, 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 de dados 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 também afeta a segurança de dados
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 em 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 que impactam a segurança de dados 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, afetando a segurança de dados. 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.
Discorda de algo ou quer ajudar a complementar o conteúdo? Deixe seu comentário abaixo!
2 Comentários
Ótimo profissional e um excelente artigo!!! Parabéns … aproveitei e me inscrevi no curso!!!
Excelente artigo Alcyon, parabéns! Obrigado!!