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, estamos sempre buscando reduzir a gravidade e a frequência com que as vulnerabilidades[1] surgem nos 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.

Identifying vulnerabilities

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;
  • 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.
  • Verificações de imagem de contêiner – a gente usa contêineres do Docker para implementar muitos dos nossos 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 nossos ambientes de produção ou pré-produção. A gente faz isso usando uma ferramenta chamada Anchore. 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 da configuração do AWS – a gente usa o Cloud Conformity para oferecer monitoramento contínuo da configuração em relação às referências estabelecidas para nossos ambientes de 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:

O 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 recompensa por bugs foi reconhecido como o melhor do setor nos últimos dois anos (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 eficácia do programa de gerenciamento de vulnerabilidades, a gente integra os processos usados para identificar vulnerabilidades aos sistemas de chamados internos. Assim, não importa se uma vulnerabilidade é identificada usando uma das ferramentas de verificação ou um dos outros meios já discutidos, um chamado dedicado é criado para cada vulnerabilidade apontada na instância do Jira adequada para garantir que ela seja sinalizada para a equipe de produto relevante, para resolução conforme os SLAs publicados na Política de Correção de Bug de Segurança.

A equipe de segurança supervisiona esse processo e trabalha com as equipes de produto e infraestrutura para garantir que todas as vulnerabilidades sejam resolvidas conforme os compromissos do SLA.

Além disso, a gente criou uma ferramenta sob medida para disponibilizar uma visão em um "painel único" para rastrear o status atual das vulnerabilidades existentes nos produtos e na infraestrutura em todo o ecossistema da Atlassian. Isso significa que a gente tem um ponto central para rastrear todas as vulnerabilidades identificadas para garantir que nada seja negligenciado ou esquecido por acidente.

Depois que uma correção a uma vulnerabilidade tiver sido desenvolvida, ela será testada com todo o cuidado e, então, no caso de nossos produtos de nuvem, incorporada ao pipeline de integração/implementação contínua para implementação. Para produtos de servidor, as correções são implantadas em uma nova versão e implementadas junto com outras correções regularmente conforme nosso ritmo de versões padrã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 isso, 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 nossos ambientes de desenvolvimento, staging ou produção. Usamos o mecanismo de software livre Anchore para esse fim. O Anchore oferece um conjunto de ferramentas que realizam uma inspeção profunda de quaisquer imagens de contêiner implementadas por nossos desenvolvedores. Isso 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 por meio do Anchore ou do SourceClear, então são relatadas automaticamente usando um chamado formal do Jira com a equipe de produto relevante conforme o processo de gerenciamento de vulnerabilidade já descrito neste documento.

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.

Cada uma de nossas equipes de produto tem um engenheiro de segurança dedicado integrado que colabora com a equipe para garantir a segurança do produto. Esse design garante que todas as equipes de produto tenham uma ligação direta com um especialista em segurança dedicado, além de garantir que a segurança esteja integrada em todos os aspectos do ciclo de vida de desenvolvimento de software.

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.

[1] Neste documento, quando nos referimos a vulnerabilidades, isso pode ser usado de modo intercambiável com "bugs", que é o termo usado em nosso documento separado em Nossa abordagem aos testes de segurança.