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.

Descoberta contínua de ativos externos – a gente usa o Assetnote para executar análise de segurança e descoberta contínua de ativos no perímetro externo.

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 de rede – a gente usa hoje o Nexpose como ferramenta principal de gerenciamento de vulnerabilidade de nossa escolha, o que ajuda a gente a identificar serviços ativos, portas abertas e aplicativos executados no nosso ambiente, além de quaisquer vulnerabilidades que existem no nível da rede;
  • Verificações de imagem de contêiner – a gente usa contêineres do Docker para implementar muitos dos aplicativos e realizar uma verificação total de segurança que conduz uma inspeção detalhada do conteúdo dos contêineres no momento que são implementados 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 SourceClear para identificar vulnerabilidades que possam existir em códigos de terceiros ou código aberto que nossos desenvolvedores possam usar. São disponibilizadas mais informações ao longo deste artigo.
  • Monitoramento de configuração da AWS - A gente usa o Trend Micro Cloud One - Conformity para oferecer monitoramento contínuo de configuração em relação às linhas de base estabelecidas para 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 recompensa por bugs – a gente usa o Bugcrowd para executar o programa de recompensa 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

Para maximizar a eficiência e a eficácia do programa de gerenciamento de vulnerabilidades, a gente integrou os processos usados para identificar vulnerabilidades com um sistema de escalonamento e emissão de tickets internos centralizados. De um jeito mais específico, apesar de uma vulnerabilidade ser identificada por meio de uma ferramentas 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 de acordo com os objetivos de nível de serviço que a gente publicou na Política de segurança para atualização de segurança.

A equipe de segurança proporciona supervisão desse processo e trabalha com equipes de produto e infraestrutura para garantir a precisão das vulnerabilidades, responder a perguntas de correção e garantir que todas as vulnerabilidades sejam resolvidas em conformidade com compromissos dos objetivos de nível de serviço.

Depois que uma correção para uma vulnerabilidade é desenvolvida, ela é testada com minuciosidade e, no caso de produtos da nuvem, incorporada ao pipeline para integração/implementação contínua. Para produtos de servidor e data center, as correções são implementadas em uma nova versão e implantadas 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 foi implementada na produção.

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 esta situação, a Atlassian integra um processo de verificação de segurança de contêiner completo ao pipeline de integração/implementação contínua para todos os contêineres implementados em ambientes de desenvolvimento, staging ou produção. A gente usa o mecanismo de código aberto Snyk para esse fim. O Snyk oferece um conjunto de ferramentas que realizam uma inspeção profunda de quaisquer imagens de contêiner implementadas por desenvolvedores. Este conjunto inclui uma análise detalhada dessas imagens para identificar os vários componentes que elas contêm (incluindo sistema operacional e pacotes de aplicativo, bibliotecas de terceiros e arquivos de configuração).

Dependências de código aberto

Embora seja importante localizar e corrigir vulnerabilidades em nosso próprio código, nossos produtos e serviços também usam várias bibliotecas de software livre. Portanto, é igualmente importante estarmos cientes de que bibliotecas estamos usando e que elas estejam atualizadas com as correções de bug de segurança mais recentes. Usamos uma ferramenta chamada SourceClear para nos ajudar com isso. O SourceClear tem um scanner que identifica dependências em qualquer build de software e, então, compara essas bibliotecas com um banco de dados de vulnerabilidades de segurança conhecidas.

Quaisquer vulnerabilidades identificadas, sejam encontradas via Snyk ou SourceClear 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 recursos novos
  • 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 documento, a gente consegue classificar as equipes e produtos, comparando-os, para identificar com proatividade 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 das melhores ferramentas de verificação, o programa de recompensa 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?

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.