Detecte vulnerabilidades em imagens de contêiner e tome medidas

6 min de leitura
Patrocinado
Imagem de: Detecte vulnerabilidades em imagens de contêiner e tome medidas
Avatar do autor

Equipe TecMundo

Por MARC VELASCO

A inovação de ferramentas e tecnologias para desenvolvedores ao longo dos últimos anos gerou uma infinidade de escolhas e opções para a formulação de soluções. Todavia, mesmo com os avanços em nossa pilha de ferramentas, ainda devemos manter a consciência de práticas seguras de engenharia, incluindo a limitação de vetores de ataque. Parece simples, mas na realidade, para software em nível de produção e qualquer software moderno, enfrentamos qualquer dos seguintes vetores de ataque possíveis:

  • Vulnerabilidades do sistema operacional (OS): bibliotecas e componentes do sistema operacional não corrigidos, versões vulneráveis do kernel (o núcleo) e versões vulneráveis da biblioteca de rede;

  • Vulnerabilidades de configuração: configurações não seguras do sistema operacional, como senhas ou logins, e também configuração de rede, incluindo permissão de acesso root, ausência de lista de permissões de endereços IP e falta de Secure Shell (SSH);

  • Fragilidades de aplicação: XSS, transbordamento de dados e injeção de SQL.

A conteinerização melhorou drasticamente a capacidade de desenvolvermos software repetível e reutilizável. Ainda há, porém, a preocupação comum quanto à maneira como podemos prevenir a transmissão dessas ameaças aos consumidores dos contêineres. Com a conteinerização, essa preocupação é ampliada, pois cada camada no contêiner é apenas um elo da cadeia. Os contêineres que você produz podem ser usados como base para outro contêiner, e assim por diante, sendo todos os elos dessa cadeia suscetíveis aos vetores de ataque e ameaças.

Esse padrão de código inclui código de exemplo para o uso da Interface de Programação de Aplicações (API) para o Vulnerability Advisor, um serviço poderoso no IBM Cloud Container Registry que garante e mantém a segurança dos contêineres. O Vulnerability Advisor verifica camadas e a configuração de uma imagem do Docker e pode detectar vulnerabilidades de imagem e configuração para qualquer coisa no registro, bem como para as imagens em execução. O objetivo desse padrão de código é tornar esses dados disponíveis e acionáveis.

Descrição

Esse padrão de código demonstra como usar as APIs do Vulnerability Advisor na recuperação e no processamento de resultados em tempo real para contêineres que são varridos. Essa informação é exibida em um aplicativo de amostra do painel que utiliza as APIs do Vulnerability Advisor, mostrando como interagir com as APIs e executar ações com base nos dados do Vulnerability Advisor.

Para informações gerais, consulte a documentação do Vulnerability Advisor. Além disso, para mais informação acerca do uso da API, consulte a documentação da API do Vulnerability Advisor.

Quando carregados no IBM Cloud Container Registry, os contêineres são varridos automaticamente pelo Vulnerability Advisor (embora você possa iniciar uma avaliação por meio da API, se desejar). Você pode recuperar dados dessas varreduras de várias maneiras.

Os dados da conta disponíveis através das APIs do Vulnerability Advisor fornecem informação vital de avaliação para uma conta da IBM Cloud. Sua conta da IBM Cloud é usada para fazer o carregamento de imagens no registro de contêiner, e você pode visualizar essas avaliações como um agregado a partir da visualização da conta. Essa visualização ajuda a agrupar e listar todas as imagens pertencentes à conta. Para cada imagem, você pode criar um link para um painel para uma imagem específica (o link que o usuário do aplicativo seleciona), onde são apresentadas informações de avaliação em maior detalhe para essa imagem específica.

A API GET /va/api/v3/report/account retorna a análise de vulnerabilidade para todos os recursos na conta. Os dados de retorno dessa API podem consistir em uma série de avaliações (uma para cada contêiner ou imagem pertencente à conta). Essa avaliação consiste nos seguintes dados:

  • Problemas de configuração identificados, como ações corretivas necessárias, descrição do problema, se o problema for isento de acordo com políticas definidas, e o tipo de verificação em que o problema falhou;

  • O ID da avaliação;

  • Um registro de data e hora para a varredura da imagem;

  • Uma lista de Vulnerabilidades e Exposições Comuns (CVE) identificadas para a imagem: se está isenta ou não, o ID da CVE, informações sobre avisos de segurança e um resumo da vulnerabilidade;

  • Um status geral da imagem com base em vulnerabilidades, problemas de configuração identificados e isenções aplicadas.

Para esse código de amostra, o ID, o registro de data e hora da varredura e o status geral são apresentados no painel.

Semelhante à API report/account, GET /va/api/v3/report/account/status retorna resultados de avaliação cumulativos úteis para as imagens pertencentes à conta para cada imagem. Você move os resultados para o aplicativo de amostra do painel. Os resultados incluem vários dos seguintes problemas:

  • Problemas encontrados;

  • Problemas isentos encontrados;

  • Vulnerabilidades;

  • Vulnerabilidades isentas;

  • Problemas de configuração;

  • Problemas de configuração isentos.

As APIs do Vulnerability Advisor fornecem informação mais detalhada para imagens de contêiner que podem proporcionar uma compreensão mais profunda de uma imagem e seu uso. Esses dados são usados para organizar de maneira detalhada a informação de uma imagem que o usuário do aplicativo seleciona no painel.

GET /va/api/v3/exemptions/image/{resource} retorna uma lista de todas as isenções em vigor para uma imagem. Isenções são vulnerabilidades que podem ser identificadas quando encontradas em uma varredura pelo Vulnerability Advisor. Elas não afetam o status da avaliação, pois não são aplicáveis ou críticas como um exemplo hipotético. Existem duas maneiras de criar isenções: isenções que se aplicam a uma imagem específica (que são retornadas por esta API) e isenções que se aplicam a todas as imagens em uma conta (ver a próxima chamada de API).

A API GET /va/api/v3/exempt/image retorna uma lista de todas as isenções definidas a nível da conta para todas as imagens pertencentes a ela. Os dados retornados incluem:

  • ID da conta;

  • ID do problema;

  • Tipo de problema.

GET /va/api/v3/report/image/{name} retorna a avaliação de vulnerabilidade para a imagem especificada. Os dados retornados são similares à avaliação da conta descrita anteriormente, porém para uma imagem específica, portanto apenas uma avaliação é retornada. GET /va/api/v3/report/image/{name} e GET /va/api/v3/report/account compartilham os mesmos dados de avaliação. 

GET /va/api/v3/report/image/status/{name} é semelhante ao status de vulnerabilidade agregada retornado para uma conta, com exceção de que o escopo desta API é para a imagem especificada na chamada da API. Os dados retornados são similares aos dados de avaliação obtidos de GET /va/api/v3/report/account/status. Novamente, uma única linha de dados agregados é retornada.

GET /va/api/v3/report/image/{name}/containers retorna a lista de imagens que estão sendo executadas como contêineres instanciados pertencentes e criados pela conta. Os dados retornados para esta chamada consistem em dados para ajudar a identificar os pods e a localização dos tempos de execução das imagens do contêiner:

  • Nome do antecessor;

  • Tipo de antecessor;

  • Cluster;

  • ID;

  • Nome;

  • Pod.

As APIs do IBM Cloud usadas neste padrão de código são protegidas pelos serviços de autenticação da IBM, que exigem o ID da conta e o token de autorização como parâmetros de entrada. O código de amostra é disponibilizado através do uso de um ID de conta de amostra e a recuperação do token do portador que usa ibmcloud iam oauth-tokens. Implemente soluções mais robustas para ambientes de produção.

Fluxo

O aplicativo de amostra do painel pressupõe que alguns contêineres foram enviados ao registro de contêineres e que as avaliações do Vulnerability Advisor foram concluídas.

1. O painel consiste em duas partes. A primeira parte é o painel principal que faz duas chamadas de API para as APIs do Vulnerability Advisor:

/va/api/v3/report/account e

/va/api/v3/report/account/status.

2. Essas APIs retornam um agregado de status e vulnerabilidades de contêiner para todos os contêineres pertencentes à conta. O painel aplica uma estrutura de repetição por cada imagem retornada na lista e exibe as informações correspondentes. Cada imagem é criada como um link para a página de detalhes do contêiner.

3. Se os usuários do aplicativo selecionarem um link de imagem no painel, eles serão direcionados a uma página para obter detalhes sobre o contêiner selecionado usando as seguintes chamadas de API:

  • /va/api/v3/exemptions/image/{resource}

  • /va/api/v3/exempt/image

  • /va/api/v3/report/image/{name}

  • /va/api/v3/report/image/status/{name}

  • /va/api/v3/report/image/{name}/containers

PainelPainel de avaliação do Vulnerability Advisor

Instruções

Pronto para experimentar esse padrão de código? Obtenha as instruções detalhadas no arquivo README.

  • Clone o repositório;

  • Recupere o token oauth e faça o login;

  • Conclua etapas de configuração adicionais;

  • Execute o aplicativo e vá para o diretório superior para executar node app.js.

...

Quer ler mais conteúdo especializado de programação? Conheça a IBM Blue Profile e tenha acesso a matérias exclusivas, novas jornadas de conhecimento e testes personalizados. Confira agora mesmo, consiga as badges e dê um upgrade na sua carreira!

Você sabia que o TecMundo está no Facebook, Instagram, Telegram, TikTok, Twitter e no Whatsapp? Siga-nos por lá.