Automatizar a verificação de malware para arquivos enviados ao Cloud Storage

Last reviewed 2023-05-17 UTC

Esta arquitetura de referência mostra como criar um pipeline orientado por eventos que pode ajudar a automatizar a avaliação de arquivos para malware, como cavalos de Troia, vírus e outros códigos maliciosos. Na maioria dos apps, a avaliação manual da grande quantidade de arquivos enviados ao Cloud Storage é muito demorada. Automatizar o processo pode ajudar a economizar tempo e melhorar a eficiência.

O pipeline nessa arquitetura usa produtos do Google Cloud com o mecanismo antivírus de código aberto ClamAV. Também é possível usar qualquer outro mecanismo antimalware que faça verificações sob demanda nos contêineres Linux. Nesta arquitetura, o ClamAV é executado em um contêiner do Docker hospedado no Cloud Run. O pipeline também grava entradas de registro no Cloud Logging e grava métricas no Cloud Monitoring.

Arquitetura

O diagrama a seguir fornece uma visão geral da arquitetura:

Arquitetura do pipeline de verificação de malware.

A arquitetura mostra os seguintes pipelines:

  • Pipeline de verificação de arquivos enviados pelo usuário, que verifica se um arquivo enviado contém malware.
  • Pipeline de atualização do espelho de banco de dados de malware do ClamAV, que mantém um espelho atualizado do banco de dados de malware usado pelo ClamAV.

Os pipelines são descritos mais detalhadamente nas seções a seguir.

Pipeline de verificação de arquivos enviados pelo usuário

O pipeline de verificação de arquivos funciona da seguinte maneira:

  1. Os usuários finais fazem o upload dos arquivos para o bucket não verificado do Cloud Storage.
  2. O serviço Eventarc captura esse evento de upload e informa o serviço do Cloud Run sobre esse novo arquivo.
  3. O serviço do Cloud Run faz o download do novo arquivo do bucket não verificado do Cloud Storage e o transmite para o verificador de malware ClamAV.
  4. Dependendo do resultado da verificação de malware, o serviço realiza uma das seguintes ações:
    • Se o ClamAV declarar que o arquivo está limpo, ele será movido do bucket não verificado do Cloud Storage para o bucket limpo.
    • Se o ClamAV declarar que o arquivo contém malware, ele será movido do bucket não verificado do Cloud Storage para o bucket em quarentena.
  5. O serviço informa o resultado dessas ações ao Logging e ao Monitoring para permitir que os administradores realizem ações.

Pipeline de atualização do espelho de banco de dados de malware do ClamAV

O pipeline de atualização do espelho de banco de dados do malware do ClamAV mantém um espelho local particular atualizado do banco de dados no Cloud Storage. Isso garante que o banco de dados público do ClamAV seja acessado apenas uma vez por atualização para fazer o download dos arquivos menores de atualizações diferenciais, e não do banco de dados completo. Isso evita limitações de taxa.

Esse pipeline funciona da seguinte maneira:

  1. Um job do Cloud Scheduler está configurado para acionar a cada duas horas, o mesmo que o intervalo de verificação de atualização padrão usado pelo serviço de atualização do ClamAV. Esse job faz uma solicitação HTTP POST para o serviço do Cloud Run instruindo-o a atualizar o espelho do banco de dados de malware.
  2. A instância do Cloud Run copia o espelho de banco de dados de malware do bucket do Cloud Storage para o sistema de arquivos local.
  3. Em seguida, a instância executa a ferramenta ClamAV CVDUpdate, que faz o download das atualizações diferenciais disponíveis e as aplica ao espelho do banco de dados.
  4. Em seguida, ela copia o espelho atualizado do banco de dados de malware no bucket do Cloud Storage.

Na inicialização, o serviço ClamAVFreshclam em execução na instância do Cloud Run faz o download do banco de dados de malware do Cloud Storage. Durante o tempo de execução, o serviço também verifica regularmente e faz o download de todas as atualizações de banco de dados disponíveis no bucket do Cloud Storage.

Considerações sobre o design

As diretrizes a seguir podem ajudar você a desenvolver uma arquitetura que atenda aos requisitos da sua organização para segurança, custo e eficiência operacional.

Confiabilidade

Para fazer uma verificação eficaz, o verificador de malware ClamAV precisa manter um banco de dados atualizado de assinaturas de malware. O ClamAV é executado usando o Cloud Run, que é um serviço sem estado. Na inicialização de uma instância do serviço, o ClamAV sempre precisa fazer o download do banco de dados de malware completo mais recente, que tem centenas de megabytes.

O banco de dados público de malware do ClamAV está hospedado em uma rede de distribuição de conteúdo (CDN) que limita a taxa desses downloads. Se várias instâncias forem iniciadas e tentarem fazer o download do banco de dados completo, a limitação de taxa poderá ser acionada. Isso faz com que o endereço IP externo usado pelo Cloud Run seja bloqueado por 24 horas. Isso impede que o serviço ClamAV seja iniciado, bem como impede o download de atualizações do banco de dados de malware.

Além disso, o Cloud Run usa um pool compartilhado de endereços IP externos. Como resultado, os downloads de instâncias de verificação de malware de projetos diferentes são vistos pela CDN como provenientes de um único endereço e também acionam o bloco.

Otimização de custos

Nesta arquitetura, usamos os seguintes componentes faturáveis do Google Cloud:

Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.

Eficiência operacional

Para acionar alertas baseados em registros em arquivos infectados, use as entradas de registro do Logging. No entanto, a configuração desses alertas está fora do escopo dessa arquitetura.

Implantação

Para implantar essa arquitetura, consulte Implantar verificação automática de malware para arquivos enviados ao Cloud Storage.

A seguir