Artigo original: https://www.freecodecamp.org/news/how-to-write-secure-source-code-for-proprietary-software/

É o trabalho dos desenvolvedores de software trabalhando em software proprietário criar programas que forneçam as funcionalidades de que nossos clientes precisam. Além disso, também é nosso trabalho criar esses programas de maneira que sejam fáceis de usar, manter e atualizar.

Desenvolvedores de software proprietário, contudo, possuem outra responsabilidade muito mais importante. Temos que criar um software que seja seguro e não coloque em risco os dados do usuário ou os sistemas de nossos clientes.

A chave para fazer isso é fortalecer nosso código-fonte e reforçar os processos de desenvolvimento para evitar que agentes mal-intencionados injetem qualquer coisa prejudicial enquanto trabalhamos.

Esses tipos de esforços são cruciais, pois o código-fonte é o componente básico de um programa de computador. Por isso, precisamos protegê-lo de quaisquer alterações não autorizadas.

Este artigo explicará o motivo de a proteção do código-fonte ser tão importante para projetos de software proprietário. Ele também dará aos programadores algumas dicas sobre como proteger seu código-fonte, bem como algumas orientações sobre como protegê-lo de alterações externas durante o processo de desenvolvimento.

Por que é importante proteger seu código-fonte?

O uso de código aberto no desenvolvimento de software proprietário cresce cada dia mais. Na última contagem, estima-se que até 96% dos softwares proprietários (texto em inglês) contenham algum código-fonte aberto. Os desenvolvedores usam esse tipo de código para acelerar o processo de desenvolvimento e evitar trabalho desnecessário. Do ponto de vista da segurança, isso é uma coisa boa.

De acordo com a maioria dos especialistas em segurança, é mais provável que um código aberto seja seguro e permaneça seguro devido ao grande número de olhos que o revisam ao longo do tempo (texto em inglês).

Quando, no entanto, um desenvolvedor começa a juntar código-fonte aberto e a adicionar suas próprias personalizações para criar algo proprietário, toda essa segurança se encerra. A partir desse ponto, cabe ao desenvolvedor evitar adicionar quaisquer vulnerabilidades que possam levar a uma violação de dados ou a um golpe.

Dependendo da natureza do software em questão, há uma variedade de dados que podem estar em risco no seu software quando estiver concluído, incluindo:

  • Senhas
  • Chaves de criptografia
  • Endereços IP
  • Tokens de autenticação e muito mais.

Isso torna o vazamento de código-fonte uma das principais ameaças para qualquer desenvolvedor de software proprietário. Essa ameaça não é apenas teórica. Houve vários casos de vazamentos de código proprietário (texto em inglês) nos últimos anos. Em muitos desses casos, as consequências finais ainda estão longe de serem claras.

Em um dos casos, porém – o vazamento de todo o repositório do código-fonte do Twitch – as consequências foram muito graves. De acordo com uma análise dos dados, os hackers obtiveram acesso a quase 7.000 segredos (texto em inglês). Esses segredos, que consistem nos tipos de dados listados acima, podem dar aos invasores acesso catastrófico à plataforma.

As principais ameaças à segurança do código-fonte

Existem duas categorias principais de ameaças à segurança de um código-fonte:

Ameaças internas

O código-fonte fica à mercê dos desenvolvedores e de qualquer pessoa que tenha acesso a ele. Isso significa que limitar o acesso ao seu código-fonte e estabelecer diretrizes de segurança para aqueles que têm acesso é vital para aumentar a segurança.

Também é importante perceber que os agentes de ameaças internas nem sempre são mal-intencionados. Muitas vezes, as ameaças internas vêm de erros ou descuidos dos próprios funcionários.

Para exemplificar, um programador pode compartilhar partes do código-fonte em um fórum on-line procurando uma resposta que possa resolver um problema – fazendo com que o código acabe caindo em mãos erradas.

Ameaças externas

As ameaças externas vêm de fora de sua equipe de desenvolvimento. Elas podem vir de concorrentes que desejam usar o código para melhorar seu próprio código. Também podem vir de hackers, que tentarão vender seu código-fonte ou que o vasculharão em busca de vulnerabilidades.

O ponto é que, não importando se um vazamento vem de ameaças internas ou externas, ele pode ter consequências terríveis. Vazamentos de código-fonte podem levar a ataques adicionais, expondo grandes quantidades de dados confidenciais.

Vazamentos de código-fonte também podem levar a perdas financeiras, dando vantagem aos concorrentes. Seus clientes pensarão duas vezes antes de negociar com um desenvolvedor que expôs dados valiosos de clientes no passado.

As regulamentações em torno da segurança também estão se tornando mais rígidas. Seus clientes podem enfrentar multas pesadas se não protegerem esses dados - e responsabilizarão você por isso.

Como proteger seu código-fonte

Agora que você sabe a importância de proteger o código-fonte, vejamos algumas formas de reforçar sua segurança:

Implementar práticas de desenvolvimento seguro

A segurança do seu código-fonte começa já no início do ciclo de desenvolvimento. Quanto mais cedo você detectar falhas de segurança no código, melhor.

Você deve definir um conjunto claro de práticas de programação, regras e procedimentos logo no início de cada processo. Isso inclui treinar sua equipe de desenvolvimento nas melhores práticas de segurança e fornecer a documentação dos padrões de segurança que eles precisam seguir durante o projeto.

O Open Web Application Security Project (OWASP) oferece um guia de referência abrangente (texto em inglês), sendo um ótimo ponto de partida. Embora seja adaptado para aplicações para a web, seus conceitos são amplamente aplicáveis ​​a todos os tipos de trabalho em desenvolvimento de software.

Seus pontos mais importantes incluem:

  • Conduzir toda a validação e codificação de dados em um único sistema confiável
  • Exigir autenticação padronizada e testada para acesso aos recursos do projeto
  • Tomar medidas para reduzir a complexidade do código sempre que for possível, para facilitar a auditoria de segurança
  • Projetar e criptografar os repositórios de código relacionados ao projeto
  • Tornar protegida e segura a construção das etapas de desenvolvimento.

Ao manter seu código e processo de desenvolvimento alinhados com as melhores práticas de segurança estabelecidas no mercado, como as descritas acima, você pode reduzir drasticamente as chances de seu código ser comprometido ainda durante o desenvolvimento ou depois que estiver publicado. Como dizem, é melhor prevenir do que remediar.

Tão logo o código esteja escrito, você também deve usar ferramentas de análise de segurança (texto em inglês) a fim de identificar falhas de segurança e outros riscos. Essas ferramentas de análise de código também farão varreduras para garantir a conformidade com as melhores práticas de segurança e padrões de escrita de código. Essas ferramentas ajudarão você a identificar riscos e corrigir problemas básicos antes que seja tarde demais.

Algumas das ferramentas mais usadas para isso são:

  • Appsonar – automatiza o teste de práticas recomendadas em mais de 15 idiomas e verifica vulnerabilidades de código conhecidas
  • Codiga – verifica as melhores práticas, segurança, proteção e problemas de design em 18 linguagens e frameworks
  • Mend SAST – fornece verificação automatizada de vulnerabilidades e a correção automática de vulnerabilidades conhecidas

Criptografar e monitorar dados em trânsito

A criptografia de dados é crucial para a proteção do seu código-fonte. Dados em trânsito são particularmente vulneráveis. Por isso, é uma boa ideia encontrar formas de manter seu código seguro à medida que ele passa entre os membros da equipe de desenvolvimento.

Um bom lugar para começar é usar uma plataforma de compartilhamento de código ou colaboração que inclua criptografia de ponta a ponta.

Há uma variedade de soluções destinadas a desenvolvedores de software que incluem criptografia. Algumas das opções mais usadas são CryptPad, CodeTogether e Visual Studio Live Share. Dependendo da natureza do projeto, um deles certamente será uma adição valiosa ao toolkit (kit de ferramentas, em português) de sua equipe.

Se uma plataforma de compartilhamento de código for um exagero naquilo que você está trabalhando, você pode usar uma plataforma de compartilhamento de arquivos criptografados (texto em inglês) e usá-la para trocar trechos de código. E se você estiver trabalhando com uma equipe que não está toda em um único escritório, é uma boa ideia investir em uma VPN. A VPN vai mascarar seu endereço IP e criptografar todas as transferências de dados entre suas redes.

Saiba, porém, que as VPNs geralmente diminuem a velocidade da sua internet. Portanto, você deve fazer sua pesquisa antes de comprar uma para você e sua equipe. Algumas VPNs são muito mais rápidas (texto em inglês) do que outras e só perdem sua velocidade de forma incremental. Então, escolha com sabedoria ou você pode prejudicar a produtividade de sua equipe.

Controle de acesso

As únicas pessoas que devem ter acesso aos repositórios de código-fonte são os desenvolvedores e a equipe de controle de qualidade. Não há razão para dar acesso a qualquer pessoa que não esteja envolvida na prática com a escrita de código.

Ao limitar o número de pessoas com acesso, você pode diminuir significativamente o risco de ameaças internas. Proteja seu código com autenticação e controle de acesso de autorizações.

Realizar revisões de segurança do código

As revisões de segurança do código são uma parte crítica do SDLC (Software Development Lifecycle) – texto em inglês. Essas revisões são particularmente importantes para a segurança, pois permitem que os membros da equipe identifiquem e resolvam quaisquer vulnerabilidades de segurança em potencial antes que o código seja publicado. Em muitos setores com os quais você pode vir a trabalhar, elas são obrigatórias para a conformidade regulatória.

É importante, entretanto, diferenciar revisão do código de revisão de segurança do código. Esta última deve se concentrar estritamente em "proteger" o código em termos de segurança. Revisões de código se concentram principalmente na correção de possíveis bugs ou falhas. Isso acontece com mais frequência enquanto sua base de código está em desenvolvimento pesado. Já as revisões de segurança do código devem acontecer principalmente quando seu código estiver próximo de um lançamento.

Nesse estágio, é uma boa ideia aplicar algumas técnicas abrangentes de proteção para dificultar o acesso de hackers ao software por meio de análise ou em tempo de execução.

Algumas técnicas incluem (textos em inglês):

Dependendo da sensibilidade dos dados com os quais seu software está lidando, pode ser necessário ir muito além das técnicas que compartilhei acima. Acima de tudo, você deve sempre atender às necessidades de segurança do cliente – mesmo que eles peçam para você fortalecer seu código além do que você acredita ser necessário.

Considerações finais

Os desenvolvedores de software proprietário precisam prestar muita atenção à segurança do código-fonte. Eles não devem expor a si mesmos nem aos seus clientes a grandes riscos que são facilmente evitáveis.

Portanto, durante todo o processo de desenvolvimento, você precisa se proteger contra ameaças internas e externas. Não fazer isso pode colocar dados confidenciais em perigo, levando, potencialmente, a danos financeiros e de reputação significativos — a todos os envolvidos.

Imagem produzida por Gorodenkoff e licenciada por meio da Adobe Stock Photos