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 a gente lida com o gerenciamento de vulnerabilidades nos produtos e na infraestrutura e como estamos sempre aprimorando essa abordagem, incorporando as ferramentas, os métodos e o pensamento mais recentes para garantir que o 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 uma variedade de ferramentas de detecção de vulnerabilidades de ponta que são executadas com frequência nos produtos e infraestrutura para busca e identificação automática de vulnerabilidades. Isso inclui produtos Atlassian Cloud & Server, imagens de aplicativos Docker, aplicativos internos, móveis e de terceiros, bem como a infraestrutura tanto no local quanto na nuvem. Essas ferramentas de busca e identificação automática de vulnerabilidades existentes incluem:

  • Varreduras de rede – No momento, usamos o Nexpose como principal ferramenta de gerenciamento de vulnerabilidades, que ajuda a gente a identificar serviços ativos, portas abertas e aplicativos em execução no ambiente, bem como quaisquer vulnerabilidades existentes no nível da rede;
  • Descoberta contínua de ativos externos – A gente usa o Assetnote para realizar descoberta contínua de ativos e análise de segurança no perímetro externo.
  • Verificações de imagem do contêiner – A gente usa contêineres Docker para implementar muitos aplicativos e realiza uma varredura de segurança completa que faz uma varredura profunda do conteúdo desses contêineres sempre que são implantados nos ambientes de produção ou pré-produção. A gente faz isso usando uma ferramenta chamada Anchore. Mais informações vão ser disponibilizadas mais adiante nesta página.
  • Varreduras de dependência de código aberto – A gente usa o SourceClear para identificar quaisquer vulnerabilidades que possam existir no código-fonte aberto ou de terceiros que os desenvolvedores possam estar usando. Mais informações são disponibilizadas mais adiante neste documento.
  • Monitoramento de configuração da AWS – A gente usa o Cloud Conformity para fazer monitoramento contínuo da configuração em relação às 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. Eles incluem:

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 vai ser testada com todo o cuidado e então, no caso dos produtos em nuvem, incorporada ao pipeline de integração/implementação contínua para implementação. Para produtos de servidor, as correções são incluídas em uma nova versão e implementadas junto com outras correções na frequência de versões padrão.

Prevenção de vulnerabilidades durante o processo de desenvolvimento

Container image scans

Atlassian deploys the bulk of its applications using Docker container images. Docker containers provide a packaged, self-contained environment consisting of relevant system libraries, tools, configuration settings and any other dependencies required so that our products are able to run regardless of individual machine configuration parameters. The container effectively provides a layer of abstraction, decoupling the software code from the underlying infrastructure so that our products can work without issue across different machines.

While containers offer great benefits for our developers and customers in terms of being able to deploy code that can be used in a variety of environments, they can be a source of security vulnerabilities if the contents of the images consist of out-of-date or otherwise insecure libraries or components.

To address this, Atlassian integrates a full container security scanning process into our CI/CD pipeline for any containers that are deployed into our development, staging or production environments. We use the Anchore open source engine for this purpose. Anchore provides a set of tools that undertakes a deep inspection of any container images that are deployed by our developers. This includes a detailed analysis of those images to identify the various components they contain (including operating system and application packages, third party libraries as well as configuration files).

Open source dependencies

While it's important to find and fix vulnerabilities in our own code, our products and services also rely on numerous open source libraries. It is therefore equally critical that we are aware of what libraries we're using and that they're up to date with the latest security bug fixes. We use a tool called SourceClear to assist us with this. SourceClear provides a scanner that can identify dependencies in any of our software builds and can then compare these libraries to a database of known security vulnerabilities.

Any identified vulnerabilities, whether found via Anchore or SourceClear, are then raised automatically via a formal Jira ticket with the relevant product team in accordance with the vulnerability management process we described earlier in this paper.

Outras iniciativas que usamos para ajudar a combater vulnerabilidades

So far in this paper, we’ve largely described steps we take to manage vulnerabilities at the ‘back end’ – i.e., what we do to address a vulnerability that is identified in our products or platforms. However, we are constantly striving to reduce the frequency with which they arise in the first place. To this end, we have incorporated some unique initiatives at the ‘front end’ of our development process to ensure that our products are built from the ground up with security in mind.

Security Champions Program

In 2017 we started rolling out a Security Champions program across Atlassian to embed security leaders within every one of our product and service teams. Our Champions are also provided with dedicated training to help them understand and identify application security vulnerabilities, as well as processes for writing secure code. The goal of this program is to have a dedicated Champion within each team who assumes responsibility for promulgating key security messages amongst fellow team members and raises any security issues with our central security team to facilitate improved communication flows.

Atlassian’s Security Champions meet on a monthly basis to share tools and knowledge around the latest security issues and challenges they’re facing so that all our teams can benefit. The ultimate aim is to use the Champions program as a springboard for enabling security to form an even more integral part of our culture. We believe that this kind of approach is a key pillar in our approach to minimizing vulnerabilities.

Product security engineers

No discussion of vulnerability management would be complete without explaining the key role our product security engineers have in both ironing out bugs, and designing better irons.

Each of our product teams has a dedicated security engineer embedded within who collaborates with the team to ensure the security of that product. This design ensures that all product teams have a direct link to a dedicated security specialist, and ensures that security is hooked into all aspects of the software development lifecycle.

Our security engineers has both pro-active and re-active security roles in relation to their assigned product, including but not limited to:

  • Reviewing and analysing up to date threat models for new and emergent risks
  • Reviewing and analysing the security of new features
  • Performing manual code review
  • Performing penetration testing
  • Performing platform and architectural review
  • Tracking major activities related to projects and providing guidance when necessary
  • Triaging, filing, rewarding, and ensuring the timely resolution of issues reported via our bug bounty
  • Writing new automation and maintaining existing automation and tooling to maximise coverage and efficiency

Security scorecards

With the data collected from the systems described in this paper, we are able to benchmark teams and products against each other to pro-actively identify areas for improvement.

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?

Existem vários outros recursos mencionados neste documento ou que você pode consultar para obter mais informações sobre como a gente aborda o gerenciamento de vulnerabilidades e a segurança em geral.

[1] Neste artigo, "vulnerabilidades" é usado como sinônimo de "bugs", o termo que a gente usou no artigo separado sobre Abordagem em relação aos testes de segurança.