Matrix e a Segurança de Software

Os desenvolvedores de software que compartilham códigos-fonte em repositórios da nuvem correm riscos. Por isso, é recomendável a prática do desenvolvimento seguro, com processo monitorado pelas empresas, tanto as fabricantes quanto as contratantes

Por: Rodrigo Raiher, ⌚ 17/02/2022 às 17h15 - Atualizado em 18/02/2022 às 11h54

*Por Rodrigo Raiher

 

Em 1999 o mundo conheceu o primeiro dos filmes da franquia Matrix, um estouro de bilheteria, com o famoso Keanu Reeves. Quem não viu não sabe o que está perdendo. Ao longo dos anos seguintes, houve a sequência dos filmes até que recentemente, em 2021, tivemos o Matrix Resurrections.

 

Os filmes nos mostram o domínio inequívoco do software sobre o ser humano, além de várias questões filosóficas, e a obstinação de se encontrar formas de burlar o sistema através de falhas de segurança. Este é o ponto deste artigo. De Matrix até os dias atuais, vivemos em uma era onde nossas vidas são rodeadas por software. Isto é real e não é uma ficção.

 

Hoje dependemos de aplicativos para tudo. Do app de transporte, da conta bancária ou investimento, perfil profissional, redes sociais, compras pela internet, telefonia e plano de internet, as fotos dos encontros com a família, com os amigos, o emprego que procuramos, as viagens que compramos, o GPS que usamos, o apartamento que alugamos, os anúncios que fazemos, jogos online, enfim, a lista é grande. Temos aplicativos para absolutamente tudo.

 

O software é nosso novo oxigênio

 

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, que podem provocar a demissão de dezenas de funcionários e até o fechamento de empresas, muitas vezes por um simples erro de programação de software, a chamada vulnerabilidade de software.

 

Você já se perguntou porque estes erros de programação de software ocorrem? 

 

Há fábricas de software espalhadas pelo mundo, que são contratadas de forma terceirizada, oferecendo um custo menor para desenvolver sistemas sob encomenda. Várias empresas adotam este modelo de contratação, terceirizando o desenvolvimento de sistemas. Quanto maior é o sistema, mais complexo se torna seu desenvolvimento. Surgiram então as metodologias, 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 suas demandas.

 

Em um mundo onde a agilidade por resultados ganha cada vez mais adeptos, há um detalhe fundamental que tem sido frequentemente negligenciado, em especial pelas fábricas de software, e em última instância por seus desenvolvedores: a segurança na construção do código do software. Neste caso podemos dizer que o fator humano do desenvolvedor pode desencadear vulnerabilidades no software construído por ele.

 

Observamos com frequência, que a preocupação com a segurança das informações que trafegam nos sistemas não é acompanhada na mesma velocidade do seu desenvolvimento. O usuário, cliente, ou consumidor, que insere desde seus dados pessoais e confidenciais, as credenciais de acesso, senhas bancárias, dentre outras informações, muitas vezes confia cegamente que seus dados fornecidos aos sistemas destas empresas estejam seguros.

 

Em um exemplo prático, um usuário comum que tem a vida facilitada por serviços (gratuitos ou pagos) nos quais insere suas informações diariamente, seja na conta de e-mail, nos serviços da nuvem, como o Gmail, Microsoft e tantos outros. Por muitas vezes ele pode pensar que apenas uma senha de acesso o protege de olhares não autorizados ou bisbilhoteiros.

 

Vazamentos conhecidos e recorrentes

 

Em 2017, o Uber sofreu um vazamento de informações sigilosas de mais de 57 milhões dos seus usuários. Outro caso parecido também ocorreu em 2014 no Github, com o vazamento de informações de 50 mil motoristas parceiros do Uber. 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. Em 2018 o Google+ foi responsável por dois vazamentos, um de 500 mil e outro de 50 milhões de contas de usuários, por erro de programação das interfaces da a plicação (APIs).

 

Há também o fatídico caso do mega vazamento de informações de brasileiros ocorrido em 2021 com mais de 223 milhões de dados. Ou o mais recente vazamento de dados do pix, com 159 mil clientes, por falhas em sistemas. São apenas alguns exemplos.

 

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 imaginar que orçamento para isso não deva faltar, uma vez que os lucros são altos.

 

Só que o mundo é sistematicamente bombardeado, 24 horas por dia por agentes maliciosos, que vasculham informações alheias nos mais diversos ambientes. Hackers ao longo das décadas da evolução do software desenvolveram complexas redes de robôs (as botnets) que rastreiam de modo avançado os sistemas online em busca de informações que possam conter algum valor. E como eu já disse em um artigo anterior, isso virou um modelo de negócio.

 

Os dados na era do compartilhamento

 

O acesso universal a conexões de dados mais rápidas proporcionou várias mudanças no comportamento humano. Ele tornou 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 dados pessoais e profissionais, e informações de todos os tipos, inclusive confidenciais. 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 o trabalho à distância, usam plataformas de desenvolvimento compartilhado de software na nuvem, contendo seus repositórios de software.

 

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 reduz custos e melhora a performance do resultado final de seus produtos, e tem sido um dos principais alvos de rastreamento e ataques por parte de crimes cibernéticos.

 

O risco de compartilhar códigos-fonte sem controle

 

Se por um lado os 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.

 

Desenvolvedores de software que compartilhem códigos-fonte, completos ou parciais, em repositórios da nuvem correm o risco de terem seus códigos acessados por hackers, através de técnicas comuns de exploração de vulnerabilidades existentes nas plataformas utilizadas, como no caso do Github, por exemplo, um dos repositórios de código mais populares. Muitos desenvolvedores pensam que depositando os códigos de forma privada nestes repositórios online, apenas protegidos por uma senha, estão totalmente imunes contra o acesso e roubo destas informações.

 

Foi este o caso ocorrido 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 optam por não ativar camadas adicionais de segurança (com o múltiplo fator de autenticação que gera senhas aleatórias), recomendada pelo Github, apenas pelo fato de ser mais trabalhoso acessar os repositórios desta forma.

 

Informações sensíveis estáticas no código

 

Há também um segundo problema, tão ou até mais sério: a presença de informações sigilosas e confidenciais inseridas estaticamente no código-fonte pelos desenvolvedores (hardcoded). Neste caso é muito comum estarmos diante da falta de processos de controle e desenvolvimento seguro de software no ciclo de desenvolvimento, ou mesmo pela falta de conhecimento e/ou treinamento em segurança do próprio desenvolvedor.

 

Como um exemplo, podemos dizer que em uma hipotética aplicação, se uma simples query de consulta a uma base de dados não estiver devidamente parametrizada para filtrar os dados imputados, aceitando apenas os caracteres esperados, ela estará provavelmente abrindo uma porta de entrada para um invasor injetar códigos maliciosos e obter o acesso a informações internas e 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, podem aperfeiçoar ataques mais estruturados e invadir sistemas, obtendo acesso irrestrito em redes corporativas, realizando movimentações laterais na rede, causando sérios problemas à empresa. Isso, caso não hajam camadas adicionas de segurança que detectem comportamentos anormais, como é o caso de soluções baseadas em inteligência artificial de monitoramento da rede.

 

Análise de segurança do código-fonte

 

É recomendável que o processo do desenvolvimento seguro de software seja adotado e monitorado pelas empresas, não só as que fabricam o software, mas também por aquelas que contratam este modelo de terceirização de desenvolvimento.

 

Auditorias de segurança nas aplicações e principalmente em seus códigos-fonte, são recomendadas com frequência, e devem ser realizadas por um time especializado de segurança de código, para preventivamente mitigar possíveis impactos negativos, seja financeiro ou de desgaste da imagem da empresa, evitando que casos como o vazamento do Uber ocorram.

 

Adicionalmente, este cuidado com a segurança do software também pode ser exigido via contrato com as empresas fabricantes, ainda mais com o advento da LGPD (Lei Geral de Proteção de Dados) onde as empresas têm a obrigação legal de manter os dados pessoais seguros, sob pena de sanções administrativas e multas altíssimas que podem chegar a 50 milhões de reais, por cada infração.

 

*Rodrigo Raiher é DPO na Portobello 

 

/ VEJA TAMBÉM



/ COMENTÁRIOS