Desenvolvimento de software no setor financeiro: a segurança é importante

7 de agosto de 2018 // 15 min read

image

O desenvolvimento seguro de softwares financeiros é muito importante, e qualquer falha em proteger adequadamente os dados pode ter um profundo impacto em uma empresa.

Introdução

A confiança é a base do relacionamento entre as instituições de serviços financeiros (FSIs) e seus clientes e também entre essas próprias instituições. A base dessa confiança está na capacidade das FSIs de impedir que dados confidenciais caiam nas mãos erradas. Em nível global, os governos têm respondido com uma variedade de estruturas regulatórias que obrigam as FSIs a proteger os dados dos clientes, com severas sanções impostas às empresas que não o fizerem. A falha em proteger os dados adequadamente pode ter um impacto profundo e permanente na reputação e nos negócios de uma empresa.

Para tornar as coisas ainda mais complexas, os softwares se tornaram um componente central dos negócios das FSIs e continuarão a crescer em importância. No entanto, requisitos regulatórios e de conformidade rígidos determinam de que maneira as FSIs criam seus softwares, desde os processos que elas seguem até as ferramentas que utilizam. Esses requisitos são muitas vezes proibitivos o suficiente para comprometer o desempenho e sufocar a inovação.

A boa notícia é que o desenvolvimento seguro não precisa ser uma barreira à colaboração ou à inovação. As instituições financeiras estão em uma posição única para criarem experiências de usuário inovadoras e de impacto, e muitas delas estão fazendo exatamente isso. Milhares de organizações estão usando o GitHub para liberar seus fluxos de trabalho do desenvolvimento isolado e criar processos seguros que proporcionam às equipes de engenharia a flexibilidade necessária para fazerem seu melhor trabalho.

Com as expectativas dos consumidores mais altas do que nunca e a crescente pressão para reduzir os custos, fluxos de trabalho eficientes, colaborativos e seguros podem ajudar as equipes a se concentrarem onde é mais importante: em criar o melhor e mais inovador software para seus clientes.

Neste artigo, descreveremos os desafios regulatórios e técnicos únicos que as FSIs enfrentam, como solucioná-los e como o GitHub pode ajudar.

Proteção dos dados do cliente

As FSIs lidam com alguns dos dados mais confidenciais do mundo. Elas estão envolvidas em uma constante corrida armamentista com aqueles que tentam obter esses dados para fins criminosos, desde hackers individuais até agentes estatais que empregam habilidades e recursos consideráveis em seus esforços para minar a segurança. Felizmente, existem melhores práticas e ferramentas que podem ajudar as empresas a proteger seus processos de desenvolvimento e a manter dados confidenciais em segurança.

Não existe uma solução ou abordagem única que possa garantir a segurança. Em vez disso, uma segurança eficaz depende de uma abordagem em camadas, impondo verificações e garantias em vários pontos em todos os caminhos de dados e fluxos de trabalho. Essa abordagem em camadas inclui uma combinação de ferramentas, práticas e cultura.

Crie uma cultura de segurança

Uma cultura corporativa que coloca a segurança no centro de tudo é fundamental para aplicar políticas de segurança em grande escala. Criar uma cultura de segurança significa construir processos que façam o trabalho de todos. Alguns exemplos incluem treinamentos regulares sobre práticas seguras, destacando o perigo de caminhos sociais para a infiltração, como ataques de phishing, bem como meios técnicos.

As melhores práticas específicas incluem:

  • Imposição de políticas de senha, incluindo senhas complexas, alterações regulares de senhas e o uso de gerenciadores e geradores de senhas para reforçar a segurança das senhas
  • Uso da autenticação de dois fatores
  • Educação e treinamento sobre os perigos das redes públicas, bem como a proteção física de dispositivos como laptops, tablets e telefones celulares
  • Uso de VPNs para proteger o acesso a redes corporativas internas

Sempre criptografe os dados

A criptografia é uma das melhores maneiras de evitar o acesso não autorizado aos dados. Mesmo que um agente mal-intencionado obtenha acesso à transmissão de dados, uma criptografia forte pode tornar esse sucesso de pouco ou nenhum valor. Mais uma vez, empregar uma abordagem em camadas é mais eficiente ao implementar uma estratégia de criptografia. Isso significa:

  • Criptografar dados em trânsito quando estão sendo transmitidos entre um repositório permanente e um usuário final
  • Criptografar dados inativos nos bancos de dados em que estão armazenados

Criptografia em trânsito

Como prática padrão, qualquer esforço baseado na Web deve empregar a criptografia de ponta a ponta usando protocolos de criptografia modernos, como o TLS. O TLS ajuda a proteger a comunicação, usando uma criptografia forte baseada em certificados que pode ser essencialmente inquebrável em qualquer sentido prático. O TLS também verifica cada parte em uma transação de rede, evitando ataques "man-in-the-middle", nos quais um agente mal-intencionado se apresenta como um parceiro confiável em uma transação. Serviços como o LetsEncrypt reduziram consideravelmente os custos e a complexidade da implementação de um TLS eficaz e da obtenção dos certificados necessários.

Criptografia em repouso

Alguns aplicativos fornecem serviços de criptografia na camada de software. Esse tipo de criptografia é melhor do que nada, mas pode gerar custos significativos em termos de complexidade e desempenho reduzido. As soluções de criptografia executadas o mais próximo possível do hardware de armazenamento, como criptografia do sistema de arquivos ou criptografia em nível de dispositivo de hardware, podem fornecer uma camada transparente de criptografia para todos os aplicativos.

Criptografia com o GitHub

Todas as comunicações bidirecionais com a nossa solução auto-hospedada, o GitHub Enterprise Server, são protegidas por TLS, com a opção de usar o LetsEncrypt para manutenção simples e econômica de certificados. O GitHub também protege a comunicação entre o servidor e os clientes Git usados pelos desenvolvedores usando SSH. Ambos são protocolos criptográficos fortes que apresentam barreiras robustas à interceptação não autorizada ou ao vazamento de dados confidenciais.

Adote práticas sólidas de gerenciamento de identidades

Quanto mais senhas os usuários precisarem memorizar, maior a probabilidade de eles adotarem práticas inseguras, como anotar senhas ou reutilizar senhas fáceis de lembrar (e, portanto, fáceis de decifrar). Usar um sistema centralizado de gerenciamento de identidades, como o LDAP, em conjunto com uma solução de logon único (SSO), pode reduzir consideravelmente o número de senhas que os usuários precisam gerenciar, tornando mais fácil para eles seguirem práticas sólidas de gerenciamento de senhas.

Usando o GitHub com sistemas de gerenciamento de identidades

O GitHub Enterprise inclui suporte para autenticação e autorização usando uma variedade de soluções de gerenciamento de identidades, como o Active Directory e o LDAP. O GitHub também oferece suporte para SAML, que permite às empresas proporcionar uma experiência de logon único para os usuários.

Evite ataques ao banco de dados

Os dados que entram em uma organização podem ser um vetor perigoso utilizado por agentes mal-intencionados para tentar obter acesso aos seus sistemas. Muitas dessas estratégias dependem da transferência de conteúdo perigoso para sistemas mal projetados, explorando falhas para obtenção de controle. A injeção de SQL é um exemplo clássico, que ocorre quando um agente mal-intencionado anexa código SQL intencionalmente a dados aparentemente inofensivos, como o nome de um cliente em um aplicativo Web. Falhas no software subjacente podem resultar na execução arbitrária desse código, levando à devolução involuntária de dados ao usuário. Esses ataques são particularmente perigosos porque podem não causar erros ou outros eventos capazes de atrair a atenção dos administradores de TI que supervisionam a segurança.

Mais uma vez, uma abordagem em camadas é mais eficaz para garantir que somente dados válidos entrem no seu ambiente. Isso começa com o código na interface do usuário e se estende ao longo de todo o caminho de dados, passando pelo middleware até os armazenamentos de dados subjacentes. Criar validação no código em cada etapa pode reduzir drasticamente sua vulnerabilidade a esses tipos de ataques. Uma combinação de revisões e testes manuais e automatizados frequentes é essencial para apoiar esse esforço.

Separe dados confidenciais

Quanto menos locais houver com dados confidenciais, menos oportunidades (ou menos “área de superfície”) os atacantes terão disponíveis para explorar. Reduzir a área de superfície significa implementar práticas como armazenar senhas em um gerenciador de senhas em vez de confiá-las a indivíduos e nunca faça commit de senhas, tokens de acesso/ API, chaves de criptografia e outros dados confidenciais em repositórios acessíveis ao público em geral.

Dados confidenciais nunca devem ser usados ou armazenados em sistemas que não sejam de produção. É claro que as equipes podem precisar de grandes quantidades de dados que simulem de forma confiável o ambiente real para testes, o que pode levar alguns engenheiros a "atualizar" os ambientes de desenvolvimento e teste com dados de produção. Em vez de usar dados de produção, considere usar uma ferramenta que permita configurar e gerar grandes conjuntos de dados fictícios. Isso possibilita testes confiáveis e realistas sem arriscar informações confidenciais.

Impedir que dados confidenciais cheguem aos repositórios com hooks de pré-recebimento

Além de armazenar dados confidenciais separadamente, você pode evitar o envio inadvertido (ou deliberado) de dados protegidos para repositórios com hooks de pré-recebimento - scripts simples que são executados em um ambiente isolado no appliance do GitHub. dispositivo GitHub. Esses scripts são acionados antes que o código seja enviado ao GitHub para examinar commits, identificar informações confidenciais e impedir que elas sejam adicionadas aos seus repositórios.

Após examinar o código, os hooks de pré-recebimento retornam apenas um de dois valores possíveis: sucesso ou falha. Se falhar, os desenvolvedores verão uma mensagem informando que o commit falhou, juntamente com qualquer outra informação útil que a sua equipe decida incluir. O código é confirmado no repositório somente se os hooks de pré-recebimento forem bem-sucedidos. O resultado? Nenhum código indesejado chega aos seus repositórios, o que protege sua empresa contra violações, ameaças de responsabilidade e penalidades regulatórias.

Aplique proteções ao código-fonte

Uma segurança eficaz exige o controle do acesso às informações confidenciais e ao código-fonte do software que as gerencia. Controles granulares significam que é possível proteger essas informações efetivamente sem criar um ambiente vinculado à segurança que negue o acesso de maneira muito abrangente. O GitHub pode oferecer suporte às suas políticas de acesso com branches protegidas. As branches protegidas ajudam a manter a integridade do seu código, limitando vários recursos do Git em qualquer branch que um administrador opte por proteger. Por exemplo, os administradores podem restringir desde quem pode publicar em uma branch até limitar a mesma a específicos usuários e equipes. Eles também podem desabilitar envios por pushes forçados capazes de alterar ou excluir o código em determinadas branches.

Garantias adicionais incluem:

  • Impedir a exclusão de uma branch
  • Evitar que o código que não passa nos testes automatizados e nas verificações de integração contínua (CI) seja unificado
  • Exigir revisões manuais e auditáveis por uma ou mais pessoas
  • Especificar “proprietários do código” para qualquer parte de uma base de código e exigir sua revisão

Proteção de todo o processo de desenvolvimento

Sua base de código de software e os processos de desenvolvimento que modelam a maneira como sua equipe desenvolve estão no centro de uma estratégia de segurança em camadas. À medida que os desenvolvedores trabalham juntos e contribuem com alterações, é importante implementar certas garantias por meio de uma combinação de práticas recomendadas e recursos do GitHub que garantam que o código que chega à produção esteja seguro.

Incluir sistemas legados principais

Ferramentas como mainframes continuam a ser fundamentais para as operações das FSIs mais de 50 anos após a sua introdução inicial. Esses sistemas oferecem recursos inigualáveis, mas também podem representar desafios únicos para a segurança. As equipes das FSIs devem avaliar periodicamente todos os sistemas herdados e equilibrar os custos de atualizá-los com os riscos potenciais que eles representam em termos de causar uma violação de segurança. A substituição de um sistema legado pode não parecer econômica até que a ameaça de multas de bilhões de dólares ou uma violação de segurança devastadora que destrua a reputação públicada empresa seja incluída na equação.

Seleção de um sistema de mainframe

O ecossistema de parceiros do GitHub inclui muitos fornecedores que produzem, vendem e mantêm sistemas de mainframe. Por exemplo, a IBM anunciou recentemente extensões para o Git, a tecnologia que sustenta o GitHub, permitindo que práticas modernas de DevSecOps sejam aplicadas a fluxos de trabalho de desenvolvimento de mainframe.

Automatize processos para evitar bugs e erros

A supervisão manual é um componente essencial de uma estratégia eficiente de segurança em camadas. No entanto, confiar demais nas pessoas pode ser perigoso. As pessoas se cansam, se distraem ou simplesmente cometem erros. Coloque as pessoas para trabalhar onde suas habilidades são mais importantes e delegue às máquinas as tarefas repetitivas e tediosas, mas ainda assim essenciais. Sua equipe pode aproveitar a integração e a entrega contínuas (CI/CD) totalmente automatizadas em seus fluxos de trabalho do GitHub.

As ferramentas de CI/CD testam e avaliam seu código todas as vezes que um commit é enviado para um repositório. Com a CI/CD em vigor, o GitHub pode testar o novo código com o código de produção existente para garantir que as alterações propostas funcionem conforme o esperado e não introduzam falhas de segurança nos sistemas existentes. Esses testes também podem se estender à análise de todo o código do qual seu código depende (suas dependências).

Implementar a automação não é difícil e pode gerar resultados imediatos e mensuráveis. Em um estudo de 2017, o IEEE constatou que as organizações que implementaram o gerenciamento automatizado de dependências, por exemplo, tiveram 60% menos vulnerabilidades de segurança nos softwares fornecidos do que aquelas que não o fizeram

Integrando CI/CD ao GitHub

A integração de CI/CD ao GitHub é um processo fácil que não afeta os fluxos de trabalho existentes dos desenvolvedores, a menos que um resultado de teste automatizado exija que eles tomem medidas. Quanto menos invasiva for a automação para os desenvolvedores, maior a probabilidade de ela ser amplamente adotada e de seus benefícios serem sentidos em toda a organização.

O GitHub se integra a uma variedade de ferramentas de CI, como Jenkins, Travis e CircleCI. Elas extraem automaticamente o código de um repositório do GitHub todas as vezes que esse código é enviado, executam testes e retornam os resultados ao GitHub com status de aprovação/reprovação.

Também retornam notificações sobre o status de cada teste, para que os desenvolvedores possam ver onde o código está falhando. Você e sua equipe podem decidir se querem ou não que os resultados dos testes de CI evitem o merge do código na base de código ou se preferem simplesmente alertar os desenvolvedores sem tomar medidas. Se status de CI forem necessários, a pull request apenas poderá receber merge quando todos os trabalhos de CI necessários forem concluídos. Se você optar por impedir o merge, o pull request não poderá ser unificado até que os testes necessários retornem com sucesso.

Imponha revisões manuais com a revisão de código necessária

A automação é importante, mas a revisão manual do código sempre será um componente essencial da sua estratégia de segurança. Quanto mais olhos estiverem voltados para uma determinada base de código, maior a probabilidade de serem detectados erros ou vulnerabilidades. Revisões também desempenham uma função valiosa além da segurança, ajudando a garantir que o conhecimento institucional seja compartilhado e proporcionando oportunidades de aprendizado e orientação para desenvolvedores de todos os níveis de habilidades. O resultado de revisões regulares sancionadas pela organização é uma base de código que não só é mais segura, como também mais íntegra e consistente.

O GitHub fornece uma estrutura flexível para exigir revisões de código. Você pode:

  • Exigir revisões por um ou mais usuários com acesso de gravação ao repositório que contém as alterações
  • Exigir revisão e aprovação adicionais de um ou mais proprietários do código. Os proprietários do código podem ser qualquer combinação de usuários ou equipes individuais com responsabilidades específicas por uma seção de uma base de código, uma tecnologia específica ou qualquer combinação das duas
  • Capacite os revisores a fornecer feedback detalhado, linha por linha, sobre quaisquer alterações propostas
  • Garanta que todas as revisões sejam registradas e auditáveis no futuro

Audite seu fluxo de trabalho e proteja-o com garantias de conformidade

Os padrões regulatórios sob os quais as FSIs trabalham atualmente exigem uma funcionalidade robusta de registro em log e auditoria. As equipes não só precisam criar uma estratégia de segurança eficaz, como também provar esse feito aos reguladores. O GitHub fornece estruturas flexíveis e poderosas de registro em log, auditoria e relatórios para ajudar a garantir a conformidade e a capacidade de comprová-la.

Log de auditoria

O GitHub Enterprise mantém logs abrangentes da atividade dos usuários e do sistema. Atividades auditadas incluem todas as operações git push, incluindo quem iniciou o push, seu endereço IP e repositórios afetados pela operação. Os logs podem ser encaminhados para um sistema externo (como o Logstash ou o Splunk) para análise, geração de relatórios e armazenamento, garantindo a conformidade com os requisitos normativos.

Arquivamento de repositórios

Os repositórios que não são mais mantidos podem ser arquivados e configurados para o modo “somente leitura”. Isso garante que nenhum código novo possa ser enviado a eles por commit e, ao mesmo tempo, possibilita que os usuários visualizem seu conteúdo.

Bloqueando pushes forçados

O Git permite que os desenvolvedores reescrevam o histórico de commits “forçando o push” das alterações. Embora às vezes seja necessário para corrigir erros, esse recurso representa um desafio quando as regulamentações exigem que os dados sejam imutáveis. O GitHub Enterprise permite que os administradores bloqueiem pushes forçados para repositórios individuais ou para todo o dispositivo, garantindo que o histórico de commits nunca possa ser reescrito.

Prevenindo usuários de excluir repositórios

A capacidade de excluir repositórios pode ser restrita aos administradores.

Desloque a segurança totalmente para a esquerda

No passado, a segurança era muitas vezes uma reflexão tardia. Na verdade, os protocolos que executam a Internet não foram de forma alguma projetados pensando na segurança. Medidas segurança adicionais disponíveis no mercado são melhores do que nada, mas estão longe de serem suficientes no ambiente de ameaças intenso da atualidade. Para ser eficaz, a segurança deve ser incorporada a cada projeto de software desde o início. Deslocar a segurança para a esquerda significa deslocá-la do lado direito da sua linha do tempo, perto da entrega, até o lado esquerda, no início do processo. Isso garante que a segurança permaneça em primeiro plano durante todo o ciclo de vida do produto.

O envolvimento precoce das equipes de segurança também pode influenciar as decisões de design, desenvolvimento e manutenção antes que elas se tornem muito difíceis e caras de modificar. Esse conselho é bastante simples, mas o processo significará muito pouco se as equipes de liderança e engenharia não estiverem envolvidas. O desenvolvimento seguro exige que todos adotem uma cultura de segurança efetiva.

Criar uma cultura de segurança

O DevSecOps é uma forma de pensar em segurança durante todo o ciclo de desenvolvimento e de distribuí-la entre equipes e funções. Não faz mais sentido que as equipes de segurança participem do processo após a criação de um aplicativo apenas para descobrirem falhas exploráveis. Com especialistas em segurança estreitamente alinhados desde o início, as equipes podem criar processos colaborativos que oferecem suporte proativo para a segurança à medida que são desenvolvidos.

Os princípios de DevSecOps podem exigir que as organizações mudem sua cultura de equipe além de sua infraestrutura. Porém, softwares mais confiáveis e menos surpresas são resultados que valem a pena. Algumas empresas até mesmo convidam especialistas em segurança para equipes de SCRUM para garantir que isso seja uma prioridade durante todo o processo.

História do cliente: Societe Generale

A Societe Generale é uma empresa multinacional francesa de serviços bancários e financeiros, empregando 146.000 pessoas em 66 países. A Global Banking & Investor Solutions (GBIS) é um dos três negócios principais do banco, reunindo bancos corporativos e de investimento, gestão de ativos, bancos privados e serviços de valores mobiliários.

Nossa transformação digital é uma prioridade estratégica para o banco [...] Acreditamos firmemente que adotar as mesmas ferramentas e práticas das principais empresas de software do mundo é a chave para o nosso sucesso!

Amir Jaballah, chefe global da plataforma de entrega contínua da Societe Generale

Liderada pelo diretor de informações Carlos Gonçalves, a GBIS iniciou uma grande reforma em seus sistemas de informações com o objetivo principal de adotar a entrega contínua. Em 2014, o departamento de sistemas de informação equipou sua plataforma de entrega contínua com o GitHub, que desde então foi adotada por mais de 3.000 funcionários em todo o mundo.

Houve uma redução de 80% nos custos administrativos em comparação com a solução anterior da Societe Generale. O [GitHub] liberou mais tempo para fornecer suporte ao gerenciamento de alterações para as equipes envolvidas.

Amir Jaballah

Para atingir seu objetivo estratégico de transformar 50% dos aplicativos de software da GBIS até o final de 2016, o departamento de TI da GBIS precisou de uma plataforma de controle de versão rápida e de alto desempenho que se encaixasse perfeitamente nos sistemas de integração e teste do departamento. Para oferecer a seus desenvolvedores altos padrões de funcionalidade e níveis de desempenho, o banco mudou do controle de versão centralizado para o GitHub Enterprise Server: a melhor solução para atender a essas necessidades.

Resumo

Manter os dados seguros nunca foi tão importante para o sucesso e até mesmo para a sobrevivência da sua empresa. Implementar uma segurança eficaz pode parecer complicado, mas não precisa ser assim. Uma das vantagens de uma defesa em camadas é a fragmentação da tarefa de implementar a segurança em vários subprojetos menos assustadores. A coisa mais importante a fazer é começar ou, se você já começou, continuar testando, examinando, questionando e melhorando. Os invasores nunca descansam, e você também não deveria.

Parte do desafio de implementar uma segurança eficaz está em equilibrá-la com a liberdade de que os desenvolvedores de software precisam para inovar, prosperar e serem produtivos. Uma segurança insuficiente é simplesmente ineficaz.

O excesso, por outro lado, pode sufocar a criatividade ou incentivar as pessoas a evitarem completamente seus esforços de segurança. Ferramentas como o GitHub fornecem os controles necessários para ajudar você a encontrar esse equilíbrio para a sua organização.

Em última análise, nosso objetivo é ajudar você a deixar de encarar a segurança sob o ponto de vista de ameaças e passar a percebê-la como uma oportunidade de aumentar a satisfação dos clientes, atrair novos clientes e diferenciar ainda mais a sua empresa. A recompensa de uma boa segurança é confiança do cliente, e parceiros como o GitHub podem ajudar você a traçar uma estratégia de segurança eficaz.



Estamos aqui para ajudar! O GitHub oferece suporte à criação de código robusto e seguro de todas essas maneiras e muitas outras. Pronto para entrar em contato?

Tags

Quer saber como o GitHub pode ajudar sua empresa?

Fale mais sobre suas necessidades

octocaptcha spinner