Close

Nossa abordagem ao gerenciamento de vulnerabilidades


Abordagem para lidar com vulnerabilidades de segurança na Atlassian

A Atlassian reconhece que, em algum nível, as vulnerabilidades de segurança são uma parte inerente de qualquer processo de desenvolvimento de software. Porém, a gente sempre se esforça para reduzir a gravidade e a frequência com que surgem vulnerabilidades em produtos e serviços.

Para esse fim, a gente implementou uma abordagem multifacetada ao gerenciamento de vulnerabilidade que conta com uma combinação de processos automatizados e manuais. Acreditamos que essa é a maneira mais eficaz de limitar a chance de as vulnerabilidades passarem despercebidas por um longo período.

Neste artigo, apresentamos uma visão geral de como lidamos com o gerenciamento de vulnerabilidades em nossos produtos e infraestrutura e como estamos sempre aprimorando essa abordagem incorporando as ferramentas, os métodos e o pensamento mais recentes para garantir que nosso tratamento das vulnerabilidades continue eficaz no futuro.

Uma visão geral do processo de identificação e resolução de vulnerabilidades

A gente tem um processo metódico para identificar, rastrear e resolver vulnerabilidades, não importando o tipo.

Detecção e atribuição contínuas de ativos

Detecção contínua de ativos internos — A gente usa o sistema interno integrado para inventariar todos os ativos da EC2 e da Load Balancer AWS usando o AWSConfig e o atribuir ao proprietário correto. A gente mantém um ano de ativos totalizando de 50 a 60 milhões de ativos.

Identificação de vulnerabilidades

A gente usa um conjunto da melhor qualidade de ferramentas de detecção de vulnerabilidades que são executadas com frequência nos nossos produtos e na nossa infraestrutura para verificar e identificar vulnerabilidades de forma automática. Isso inclui os produtos Atlassian Cloud e Server, imagens do aplicativo Docker, aplicativos internos, móveis e de terceiros, além da nossa infraestrutura local e na nuvem. Estas ferramentas verificam e identificam de maneira automática as vulnerabilidades existentes, e incluem:

  • Verificações baseadas em host — A gente usa o Assetnote para executar verificações contínuas de segurança no perímetro externo e o Tenable.io para executar verificações contínuas internas e externas. Essas ferramentas são usadas para identificar aberturas em portas, serviços e aplicativos executados no ambiente da Atlassian, além de quaisquer vulnerabilidades existentes na rede dos hosts.
  • Verificações de imagem de contêiner — a gente usa contêineres do Docker para implementar muitos dos aplicativos. A gente executa uma verificação de segurança das imagens dos contêineres no momento que são implementadas nos ambientes de produção ou pré-produção. A gente faz essa verificação usando uma ferramenta chamada Snyk. São disponibilizadas mais informações ao longo desta página.
  • Verificações de dependências de código aberto – a gente usa o Snyk para identificar vulnerabilidades que possam existir em dependências de código aberto ou código de terceiros. São disponibilizadas mais informações ao longo deste artigo.
  • Monitoramento de configurações da AWS — A gente implementa e faz a integração do Lacework no ambiente AWS Cloud da Atlassian para garantir o monitoramento contínuo das configurações de acordo com linhas de base estabelecidas para os ambientes da AWS.

A gente faz a revisão contínua das ferramentas mais recentes disponíveis e as adiciona ao pacote que a gente usa quando acredita que podem aprimorar as capacidades de detecção de vulnerabilidades.

A gente também tem uma gama de meios adicionais que são usados para identificar vulnerabilidades em combinação com as verificações automatizadas que executa. Isso inclui:

Programa de recompensas por bugs – a gente usa o Bugcrowd para executar o programa de recompensas por bugs. O Bugcrowd dá acesso a uma comunidade especializada e confiável que consiste em dezenas de milhares de pesquisadores em cibersegurança que estão sempre testando os produtos e relatando quaisquer vulnerabilidades encontradas. O Programa de Recompensas por Bugs foi reconhecido como o melhor do setor em 2018 e 2019.

Relatórios do cliente e do usuário – Os usuários dos produtos podem relatar quaisquer bugs encontrados a qualquer momento usando o Suporte da Atlassian. A gente trabalha com eles para coletar todas as informações necessárias para a sinalização interna e a correção da vulnerabilidade (sujeito à validação de que a vulnerabilidade é real, e não um falso positivo). Isso inclui também a equipe da Atlassian, que pode relatar qualquer problema observado nos produtos (seja externo ou interno) direto à equipe de segurança ou criando um chamado de suporte.

Teste de intrusão externo – A gente usa empresas de consultoria de segurança especializadas para realizar testes de intrusão auxiliados por código de caixa branca em produtos e infraestrutura de alto risco. Consulte mais informações em "Abordagem em relação aos testes de segurança externos".

Equipe de segurança do produto da Atlassian – A gente faz revisões de código direcionadas, tanto manuais quanto auxiliadas por ferramentas, e trabalhamos muito com as equipes de desenvolvimento para que aprimorem a capacidade de autodetectar e resolver vulnerabilidades antes que o código chegue na gente.

Equipe vermelha da Atlassian – A gente tem uma equipe vermelha interna cuja função é simular o papel de adversários tentando identificar e explorar vulnerabilidades nos sistemas, processos e ambientes para garantir que sejam identificadas e corrigidas o mais rápido possível.

Rastreando e resolvendo vulnerabilidades

A gente usa um sistema interno de tickets e escalonamento para rastrear todas as vulnerabilidades que são descobertas e que precisam ser corrigidas. De um jeito mais específico, apesar de uma vulnerabilidade ser identificada por meio de uma ferramenta de varredura ou de uma das outras vias discutidas acima, um ticket dedicado é criado para cada vulnerabilidade e é atribuído à equipe de produtos relevante para resolução. Os Objetivos de Nível de Serviço (SLOs) a respeito de correções que a gente publicou na Política de Atualização de Segurança são rastreadas para cada vulnerabilidade.

A equipe de segurança supervisiona esse processo e trabalha com as equipes de produto e infraestrutura para garantir a precisão das vulnerabilidades e responder a perguntas de correção.

Depois que uma correção para uma vulnerabilidade é desenvolvida, ela é testada com minuciosidade e, no caso de produtos da nuvem, incorporada ao pipeline de CD/IC para implementação. Para produtos de servidor e data center, as correções são implementadas em uma nova versão e implementadas com outras correções em bases regulares, de acordo com cadência de lançamento padrão. Os tickets de vulnerabilidade das ferramentas de varredura são fechados de um jeito automático quando varreduras posteriores não encontram a vulnerabilidade. Os tickets de vulnerabilidade de descobertas manuais são fechados por membros da equipe de produto, infraestrutura ou segurança quando a correção for disponibilizada aos clientes.

Prevenção de vulnerabilidades durante o processo de desenvolvimento

Verificações de imagens de contêiner

A Atlassian implementa a maior parte de seus aplicativos usando imagens de contêiner do Docker. Os contêineres do Docker oferecem um ambiente autônomo em pacote que consiste em bibliotecas, ferramentas, definições de configuração do sistema relevantes, além de quaisquer outras dependências necessárias para que nossos produtos consigam ser executados em quaisquer parâmetros de configuração do computador individual. O contêiner disponibiliza com eficiência uma camada de abstração, desassociando o código de software da infraestrutura subjacente para que nossos produtos possam funcionar sem problemas em diferentes computadores.

Embora os contêineres ofereçam grandes benefícios para nossos desenvolvedores e clientes em termos de capacidade de implementar o código para uso em uma variedade de ambientes, eles também poderão ser uma fonte de vulnerabilidades de segurança se o conteúdo das imagens consistirem em componentes ou bibliotecas desatualizados ou não seguros.

Para lidar com essa questão, a Atlassian integra um processo de verificação de segurança que monitora as implementações feitas pela plataforma de implementação Micros para todos os contêineres implementados nos ambientes de produção. Além disso, desenvolvedores podem integrar um processo de verificação no pipeline de CD/IC para quaisquer contêineres implementados nos ambientes de desenvolvimento. A gente usa o mecanismo Snyk Container para essa tarefa. O Snyk oferece um conjunto de ferramentas que realizam uma inspeção profunda de quaisquer imagens de contêiner implementadas por desenvolvedores. Esse conjunto inclui uma análise detalhada dessas imagens para identificar os vários componentes que elas contêm e determinar quais têm vulnerabilidades conhecidas.

Dependências de código aberto

Embora seja importante localizar e corrigir vulnerabilidades em no próprio código, os produtos e serviços também usam várias bibliotecas de software de terceiros. Portanto, é de igual importância estarmos cientes das bibliotecas que estamos usando e que elas estejam atualizadas com as correções de bug de segurança mais recentes. A gente usa uma ferramenta chamada Snyk para nos ajudar com essa tarefa. O Snyk tem um scanner que identifica dependências em qualquer build de software para então poder comparar essas bibliotecas com um banco de dados de vulnerabilidades de segurança conhecidas.

Quaisquer vulnerabilidades identificadas são então levantadas de um jeito automático por meio de um ticket formal do Jira com a equipe de produtos relevante, de acordo com o processo de gerenciamento de vulnerabilidades já descritas nesta página.

Outras iniciativas que usamos para ajudar a combater vulnerabilidades

Até agora neste documento, descrevemos basicamente as etapas para gerenciar vulnerabilidades no back-end, ou seja, o que fazemos para lidar com uma vulnerabilidade identificada em nossos produtos ou plataformas. Porém, estamos sempre buscando reduzir a frequência com que elas surgem em primeiro lugar. Para isso, incorporamos algumas iniciativas exclusivas no "front-end" de nosso processo de desenvolvimento para garantir que nossos produtos sejam criados desde o princípio pensando em segurança.

Programa Líderes de segurança

Em 2017, começamos a implantar um programa de Líderes de segurança na Atlassian para integrar líderes de segurança em cada uma de nossas equipes de produto e serviço. Nossos líderes também recebem treinamento dedicado que os ajudam a entender e identificar vulnerabilidades de segurança de aplicativo, bem como aprender processos para escrever código seguro. O objetivo desse programa é ter em cada equipe um líder dedicado que assuma a responsabilidade por promulgar as principais mensagens de segurança entre colegas de equipe e relatar quaisquer problemas de segurança em nossa equipe de segurança central para facilitar um melhor fluxo de comunicação.

Os líderes de segurança da Atlassian têm reuniões mensais para compartilhar ferramentas e conhecimento sobre os mais recentes problemas e desafios de segurança enfrentados para que todas as equipes possam se beneficiar. O objetivo final é usar o programa de líderes como um trampolim para transformar a segurança em uma parte ainda mais arraigada de nossa cultura. Acreditamos que essa estratégia é um dos principais pilares da nossa abordagem para minimizar vulnerabilidades.

Engenheiros de segurança do produto

Nenhuma discussão sobre gerenciamento de vulnerabilidade estaria completa sem explicar o papel crucial que nossos engenheiros de segurança do produto têm tanto em eliminar bugs quanto em desenvolver ferramentas de eliminação melhores.

Nossos engenheiros de segurança de produtos realizam a triagem inicial de vulnerabilidades recém-relatadas e colaboram com nossas equipes de engenharia de produtos para identificar a melhor solução para o problema. Eles são especialistas em segurança de aplicativos e estão distribuídos pelo mundo para que colaborem com mais eficiência com nossos engenheiros de produtos, conforme necessário.

Nossos engenheiros de segurança possuem funções de segurança proativas e reativas em relação ao produto designado a eles, incluindo, mas não se limitando a:

  • Revisar e analisar modelos de ameaça atuais para riscos novos e emergentes
  • Revisar e analisar a segurança de funções novas
  • Executar revisão manual de código
  • Executar testes de intrusão
  • Executar revisão da plataforma e da arquitetura
  • Monitorar atividades principais relacionadas aos projetos e orientar quando necessário
  • Triar, arquivar, recompensar e garantir a resolução de itens relatados dentro do prazo pela nossa recompensa de bugs
  • Gravar novas automações e manter as automações e as ferramentas existentes para maximizar a cobertura e a eficiência

Placares de segurança

Com os dados coletados pelos sistemas descritos neste artigo, a gente consegue classificar as equipes e produtos enquanto os comparamos para identificar com iniciativa as áreas que precisam de melhoria.

Um breve resumo

A Atlassian tem uma abordagem multifacetada ao gerenciamento de vulnerabilidades nos produtos e plataformas que usa uma combinação de ferramentas de verificação automatizadas, um programa de recompensas por bug e uma variedade de outros mecanismos que estão sempre evoluindo para garantir que a gente possa identificar e resolver vulnerabilidades identificadas assim que possível, além de minimizar a frequência em primeiro lugar.

Quer saber mais?

Quer saber mais?

Há vários outros recursos que mencionamos neste documento ou que você pode consultar de outra forma para obter mais informações sobre nossa abordagem ao gerenciamento de vulnerabilidades, bem como segurança de um modo geral.

Nesta página, quando a gente se refere a vulnerabilidades, essa ação pode ser usada com intercambialidade para "bugs", que é o termo que a gente usou no artigo separado sobre Abordagem ao Teste de Segurança.