matrix code

A necessidade do desenvolvimento de software seguro

Autor: Rodrigo Raiher, postado em 07/12/2017 as 17:00
Hashtags: #si, #segurancadainformacao, #softwareseguro, #desenvolvimentodesoftware, #devsecops, #cibercrimes

Vivemos em uma era onde nossas vidas são rodeadas pelo software. Isto é um fato inegável.

Controlamos praticamente tudo o que precisamos através de aplicativos, sejam nossas contas bancárias, investimentos, perfis profissionais e sociais, compras pela internet, o consumo de nossos planos de telefonia e comunicação, as fotos dos encontros de família e amigos, o emprego que procuramos, os anúncios que fazemos vendendo algo, e por que não, o revolucionário novo modo de transporte individual por aplicativos.

Temos aplicativos para absolutamente tudo. O mundo respira online o software diariamente. Basta imaginar que algumas horas sem redes sociais, ou então alguma pane em um serviço online de pagamentos, que o “mundo simplesmente para”. Prejuízos financeiros e de imagem são contabilizados e constantemente podem provocar a demissão de dezenas de trabalhadores e até o fechamento de empresas, muitas vezes por um simples erro de programação de software que tenha passado despercebido mesmo diante de olhares mais atentos.

Isso ocorre porque boa parte das médias e grandes empresas prefere, por motivos diversos, e dentre eles o custo, adotar o modelo de terceirização no desenvolvimento do software que utiliza para seu gerenciamento interno e que também disponibiliza para seus clientes nos diversos serviços que comercializa.

Porém, quanto maior é o sistema, mais complexo se torna seu desenvolvimento e então metodologias surgiram no universo do software, com o objetivo de tornar mais ágil este desenvolvimento, de modo que se tenha um resultado final mais rápido, atendendo prontamente as áreas de negócios das empresas, e consequentemente suprindo as suas demandas.

Em um mundo onde a agilidade por resultados ganha cada vez mais adeptos, há um detalhe fundamental que tem sido frequentemente negligenciado por muitos, em especial pelas fábricas de software e em última instância por seus desenvolvedores: a segurança das informações contidas no software. Neste caso podemos dizer que o fator humano do desenvolvedor pode desencadear algumas vulnerabilidades.

Quem é da área de segurança da informação tem observado, com frequência, que a preocupação com as informações que trafegam em sistemas integrados entre empresas e também ao consumidor não acompanha na mesma velocidade o desenvolvimento do sistema. O usuário, ou consumidor, insere informações pessoais e confidenciais, credenciais de acesso, senhas bancárias, muitas vezes confiando plenamente que seus dados, fornecidos a estas empresas, estejam seguros.

Numa analogia, o usuário comum tem a vida facilitada por serviços gratuitos ou pagos, nos quais insere suas informações diariamente em contas de email nos serviços da nuvem, como o Gmail, o Hotmail, o Yahoo e tantos outros. Por muitas vezes ele pode pensar que apenas uma senha de acesso o protege dos implacáveis hackers ou mesmo da espionagem.

Recentemente foi divulgado pelos meios de comunicação que a maior empresa da área de transportes por aplicativo, o Uber, sofreu um vazamento de informações sigilosas de mais de 57 milhões dos seus usuários. E isso é recorrente. Outro caso parecido também ocorreu em 2014 no Github, com o vazamento de informações de 50 mil motoristas parceiros. Novamente hackers encontraram senhas de acesso presentes no código-fonte publicado no Github pelos desenvolvedores do próprio Uber, e desta vez sem qualquer proteção.

Você deve estar se perguntando como isso aconteceu, uma vez que o que se espera de uma empresa de grande porte é que ela cuide das informações sigilosas de seus usuários com a maior segurança, e pode inferir até mesmo que orçamento para isso não deve faltar, uma vez que seus lucros são reconhecidamente bilionários.

Porém o mundo é sistematicamente bombardeado, 24 horas por dia, por pessoas que tentam vasculhar informações alheias em ambientes diversos como os domésticos, os de empresas e também na nuvem. Hackers ao longo das décadas da evolução do software desenvolveram complexas redes de aplicações robóticas que rastreiam de modo avançado os sistemas online em busca de informações que possam conter algum valor.

O acesso quase que universal a conexões de dados mais rápidas mundialmente proporcionou várias mudanças no comportamento humano. Tornou-se muito fácil e instantâneo o compartilhamento de informações entre pessoas e comunidades, algo a que nos acostumamos rápido. Milhões de pessoas compartilham o que, aonde e com quem o desejam. E isso também ocorre com os desenvolvedores de software.

Muitas empresas que fabricam software trabalham com times em lugares geograficamente distintos e para facilitar este tipo de trabalho à distância, surgiram verdadeiras plataformas especializadas em desenvolvimento compartilhado de software na nuvem. Muitas empresas optaram por utilizar estas plataformas na nuvem como seus repositórios de software, inclusive para o controle de versionamento e evolução dos sistemas.

Entre as plataformas de repositório colaborativos de software online mais famosas podemos citar o Github, o Gitlab, SourceForge e a Amazon Web Services, dentre outros, onde os desenvolvedores colaboram entre si no rastreamento de erros no código e na distribuição de versões de aplicativos.

Esta inovação, que pode realmente reduzir custos com equipes e otimizar a performance do resultado final de seus produtos, tem sido um dos principais alvos de rastreamento e ataques por parte de ladrões cibernéticos.

Se por um lado alguns fabricantes de software optaram pelos repositórios compartilhados na nuvem, por outro há empresas que não têm controle algum sobre os processos internos ou terceirizados de desenvolvimento do software e muitas vezes sequer sabem que suas informações confidenciais são compartilhadas em repositórios na nuvem.

Ocorre que qualquer desenvolvedor de software que compartilhe códigos-fonte, completos ou parciais, em repositórios da nuvem está sujeito a ter seu código descoberto por um hacker que consiga de fato explorar alguma vulnerabilidade existente na plataforma utilizada pelo desenvolvedor, como o Github, por exemplo, um dos repositórios de código mais populares.

Muitos desenvolvedores imaginam que colocando os códigos de forma privada nestes repositórios online, apenas protegidos por uma senha, estão totalmente imunes contra o roubo destas informações.

Foi exatamente este o caso que ocorreu com o Uber, citado anteriormente neste artigo, que teve a divulgação das milhões de contas de seus usuários, com todos os seus dados sigilosos.

Mesmo que estes repositórios estejam em ambientes minimamente seguros, com acesso restrito por uso de senhas e não públicos, muitas vezes os desenvolvedores podem optar simplesmente por não ativar uma dupla ou tripla camada de segurança, por vezes recomendada pelo Github, apenas pelo fato de ser mais trabalhoso ficar o tempo inteiro acessando os repositórios desta forma.

Além dos problemas de repositórios de software compartilhados, temos um segundo problema, tão ou até mais sério: a presença de informações sigilosas e confidenciais inseridas estaticamente dentro do código-fonte desenvolvido.

Neste caso estamos diante da falta de um processo de desenvolvimento seguro de software, seja na esfera dos controles dos processos internos de desenvolvimento nas fábricas de software, seja por parte da falta de conhecimento de segurança do próprio desenvolvedor.

Como um exemplo, podemos dizer que em uma hipotética aplicação, se uma simples query de consulta à base de dados não estiver devidamente parametrizada para filtrar caracteres imputados e aceitar apenas caracteres válidos, ela estará provavelmente abrindo uma porta de entrada para um invasor injetar códigos maliciosos e obter acesso a informações valiosas.

Informações sigilosas, como credenciais, números de IP de servidores, tokens de acesso, chaves de autenticação, são algumas das informações valiosíssimas às quais os hackers são avidamente contemplados quando conseguem acesso a códigos-fonte encontrados em suas investidas nos repositórios online. De posse destas informações ele pode invadir sistemas e obter acesso irrestrito em toda a rede corporativa causando problemas imensuráveis para a empresa.

O processo do desenvolvimento seguro de software precisa ser adotado e monitorado absolutamente por todas as empresas, não só as que fabricam o software, mas também por aquelas que o contratam no modelo de terceirização de desenvolvimento. Auditorias de segurança nas aplicações e principalmente em seus códigos-fonte precisam ser frequentemente realizadas por um time especializado de segurança, a fim de, preventivamente, mitigar possíveis impactos negativos, seja financeiro ou de desgaste da imagem da empresa, evitando que casos como o vazamento do Uber ocorram.

A 3Elos tem um time especializado e experiente para ajudar a sua empresa na análise preventiva de vulnerabilidades de sistemas, da infraestrutura que o suporta e de seu código-fonte, indicando as melhores recomendações para encurtar o caminho da solução dos problemas encontrados. Além disso, fornecemos o treinamento adequado aos seus times de desenvolvimento de software, tornando o ciclo do software cada vez mais seguro, livre de falhas e de prejuízos decorrentes de possíveis invasores.