Você deve verificar os arquivos enviados em um aplicativo auto-hospedado? Um checklist prático de segurança
A verificação contra malware pode reduzir riscos, mas não garante que um arquivo enviado seja seguro. Use este checklist para avaliar onde os arquivos são armazenados, como os resultados da verificação são tratados e quais proteções devem estar em vigor.

Comece pelos arquivos e pelas pessoas ou serviços que os manipulam
A adequação da verificação contra malware em arquivos enviados a aplicativos auto-hospedados depende do que o aplicativo aceita e do que acontece depois que um arquivo chega. Um documento armazenado para download ocasional envolve um fluxo diferente daquele de um arquivo que é visualizado, indexado, convertido ou encaminhado imediatamente a outro serviço.
Mapeie todo o percurso, não apenas o formulário de envio. Inclua a pessoa que envia o arquivo, o aplicativo que o armazena, qualquer pessoa que possa visualizá-lo ou baixá-lo e todos os processos automatizados que possam lê-lo ou transformá-lo.
- Liste cada aplicativo e cada forma de envio, incluindo, quando pertinente, os meios administrativos ou baseados em API.
- Registre quem pode enviar arquivos: visitantes públicos, clientes, funcionários, administradores ou serviços conectados.
- Identifique os tipos e tamanhos de arquivo aceitos pelo aplicativo e se ele aceita arquivos compactados ou arquivos que podem acionar um processamento automatizado.
- Anote quem pode acessar os arquivos enviados e se visualizações prévias, indexação, conversão ou integrações os processam antes da análise de uma pessoa.
- Dê prioridade aos fluxos em que os arquivos vêm de usuários menos confiáveis ou são processados automaticamente.

Confirme o suporte à verificação em vez de presumir que ela está incluída
A existência de um recurso para enviar arquivos não significa, por si só, que eles sejam verificados. Consulte a documentação oficial do aplicativo para saber se ele oferece suporte a uma integração de verificação, quais caminhos de envio ela abrange e quando a verificação ocorre.
Procure detalhes operacionais, não apenas o nome de um recurso: a verificação acontece antes de o arquivo ser salvo, disponibilizado ou processado? Quais tipos de arquivo e locais de armazenamento são abrangidos? O que o aplicativo faz quando não consegue classificar um resultado? Se a documentação não for clara, considere o comportamento não confirmado e teste-o em um ambiente seguro.
- Confirme se a integração é compatível com o aplicativo e o método de implantação que você realmente usa.
- Verifique se a verificação está incorporada ao aplicativo, exige um serviço separado ou depende de uma configuração que você precisa manter.
- Confirme se todos os caminhos de envio relevantes são verificados, incluindo envios por API e arquivos adicionados por fluxos administrativos.
- Analise os limites documentados, como formatos compatíveis, tratamento de arquivos compactados, limites de tamanho e momento da verificação.
- Não presuma que há suporte à verificação por causa da plataforma de hospedagem ou porque o aplicativo é executado em um contêiner.

Planeje o percurso do envio até a disponibilização
Um bom projeto deixa claro o status do arquivo. Considere manter um novo arquivo enviado indisponível para usuários comuns e para processos subsequentes até que a verificação seja concluída. Se a verificação indicar um problema, mantenha o arquivo em quarentena, com acesso restrito, em vez de expô-lo por meio de um caminho de download ou visualização prévia.
A implementação exata depende do aplicativo e dos recursos documentados. Se ele não puder manter um arquivo pendente de inspeção ou isolar um arquivo sinalizado, identifique essa limitação antes de habilitar o fluxo e decida se é necessário outro controle ou uma configuração diferente do aplicativo.
Para manter o armazenamento de arquivos em boas condições, o checklist da SANS sobre envio seguro recomenda criar um novo nome de arquivo, em vez de usar o nome fornecido pelo usuário como nome local, e armazenar o arquivo fora do diretório local do sistema indicado no checklist. Consulte o checklist original para ver o contexto: https://www.sans.org/blog/8-basic-rules-to-implement-secure-file-uploads
- Defina quando um arquivo pode ser baixado, visualizado, pesquisado ou disponibilizado para uma integração.
- Mantenha os arquivos pendentes ou em quarentena separados do acesso comum dos usuários, na medida permitida pelo aplicativo.
- Limite o acesso aos arquivos em quarentena a responsáveis designados; documente quem pode analisá-los ou liberá-los e em quais condições.
- Evite usar como nome armazenado o nome de arquivo fornecido pelo usuário; se o aplicativo permitir isso com segurança, preserve separadamente informações úteis sobre o nome original.
- Verifique se o armazenamento de arquivos não está exposto inadvertidamente por um caminho público ou por um serviço com acesso mais amplo do que o necessário.
Defina uma política para falhas de verificação e resultados incertos
Um verificador pode ficar indisponível, demorar demais ou retornar um resultado que não esclareça se um arquivo é seguro. Decida o que o aplicativo deve fazer em cada caso antes que ocorra uma interrupção.
Em fluxos nos quais expor um arquivo não verificado representaria um risco inaceitável, uma política conservadora é mantê-lo indisponível até que a inspeção seja concluída com sucesso ou que uma pessoa autorizada tome uma decisão documentada. Uma política que permite o envio quando a verificação falha pode ser mais conveniente, mas deixa uma lacuna que os administradores devem aceitar e mitigar explicitamente.
- Defina resultados distintos para verificações limpas, sinalizadas, com falha, expiradas por tempo limite e inconclusivas.
- Decida se um arquivo não verificado será retido, rejeitado ou permitido mediante uma exceção documentada; não deixe esse comportamento implícito.
- Designe um responsável e um procedimento de resposta para interrupções do serviço de verificação, incluindo como os usuários serão informados se os envios forem atrasados ou rejeitados.
- Registre quem pode analisar um item em quarentena, quais evidências são necessárias e quem pode autorizar a liberação ou a exclusão.
- Não trate a ausência de um resultado de verificação como se fosse um resultado limpo.
Teste o fluxo, inclusive as formas como ele pode falhar
A configuração de um verificador não prova que todo o fluxo de envio funciona como esperado. Teste o aplicativo em um ambiente controlado, com arquivos e cenários inofensivos representativos, e confirme o que usuários e administradores veem em cada etapa.
Não use arquivos maliciosos reais em testes de rotina. Prepare casos de teste seguros e adequados ao aplicativo e ao produto de verificação, seguindo a documentação correspondente. Confira não apenas a resposta ao envio, mas também se um arquivo pode ser acessado por meio de visualizações prévias, downloads, indexação ou processamento automatizado enquanto a inspeção está pendente.
- Verifique como um arquivo enviado e aceito passa do estado pendente para disponível após uma verificação bem-sucedida.
- Confirme que um arquivo rejeitado ou sinalizado não pode ser baixado, visualizado nem processado por outro serviço.
- Simule a indisponibilidade do verificador, um tempo limite e um resultado inconclusivo; confira se a política escolhida é aplicada.
- Analise os registros para garantir que contenham informações suficientes para investigar um evento sem expor desnecessariamente o conteúdo dos arquivos ou dados confidenciais.
- Confira se o usuário recebe uma mensagem clara de status ou erro e se um administrador consegue identificar quem é responsável pela próxima ação.
Mantenha a verificação como parte de um conjunto mais amplo de proteções
A verificação é uma camada de proteção, não uma garantia de que um arquivo é seguro. A Trend Micro Research recomenda verificar os arquivos antes de salvá-los ou processá-los em um formulário de envio de arquivos de aplicativo como forma de ajudar a evitar malware; essa recomendação não comprova que a verificação detecte todas as ameaças nem substitui outros controles. Consulte: https://www.trendmicro.com/en_us/research/24/d/file-scan-before-upload.html
Reduza a probabilidade e o impacto de problemas relacionados ao verificador. Analise quem pode enviar arquivos, mantenha atualizados o aplicativo e os componentes de verificação, restrinja o acesso aos arquivos armazenados e garanta que os planos de backup e resposta a incidentes contemplem os dados enviados. Esses controles tratam de diferentes aspectos do risco; nenhum deve ser considerado substituto dos demais.
- Conceda permissões de envio apenas a usuários e serviços que precisem delas.
- Defina e revise periodicamente limites de tamanho, tipo e arquivos compactados que sejam adequados ao uso previsto do aplicativo.
- Aplique o princípio do menor privilégio ao aplicativo, ao armazenamento, ao verificador e a quaisquer serviços que processem arquivos.
- Mantenha o aplicativo e seus componentes de suporte atualizados, seguindo as orientações oficiais do projeto.
- Confirme que os backups abrangem os arquivos e as configurações necessários e esclareça quem é responsável pela restauração e pela resposta a incidentes.
- Documente os riscos residuais aceitos, os contatos para escalonamento e as etapas para conter ou investigar um envio suspeito.
Checklist prático antes de entrar em produção
Antes de habilitar o envio de arquivos — ou de mudar a forma como eles são tratados —, confirme que o administrador responsável consegue responder a estas perguntas. Se uma resposta importante for desconhecida, verifique-a na documentação do fornecedor ou por meio de um teste controlado antes de confiar no fluxo.
bullets
- Quais usuários e serviços podem enviar arquivos e o que acontece com cada arquivo depois disso?
- O aplicativo oferece suporte oficial à verificação nesta implantação e quais caminhos de envio ela abrange?
- Quando um arquivo pode ser acessado ou processado e o que acontece quando ele é sinalizado ou não pode ser verificado?
- Quem pode acessar a quarentena e aprovar uma liberação excepcional?
- As visualizações prévias, os downloads, as integrações, as interrupções do verificador e as mensagens exibidas aos usuários foram testados?
- As permissões, os limites de arquivo, as atualizações, os backups e as responsabilidades por incidentes foram revisados?
Perguntas frequentes
A verificação com antivírus torna seguros os arquivos enviados?
Não. A verificação pode ajudar a identificar malware, mas as evidências fornecidas não demonstram que ela detecte todas as ameaças nem que garanta a segurança. Mantenha controles de acesso, atualizações e práticas seguras de manipulação de arquivos como proteções distintas.
Devo bloquear os envios se o verificador estiver indisponível?
Escolha o comportamento com base no risco de expor um arquivo não verificado. Em fluxos de maior risco, manter os arquivos indisponíveis até uma verificação bem-sucedida ou uma análise autorizada é uma opção conservadora. Documente qualquer política que permita prosseguir com os envios sem uma verificação concluída.
O que devo conferir na documentação do aplicativo?
Verifique se a verificação tem suporte oficial, quando ocorre, quais caminhos de envio e tipos de arquivo abrange e como são tratados os resultados sinalizados, com falha, expirados por tempo limite ou inconclusivos. Teste qualquer comportamento que não esteja claro na documentação.
E se meu aplicativo não oferecer suporte à verificação de arquivos?
Não presuma que seja possível conectar um verificador separado com segurança sem suporte do aplicativo. Consulte as opções documentadas do aplicativo, considere se é possível limitar os envios ou o processamento automatizado e avalie se o aplicativo atende aos seus requisitos de segurança antes de confiar nele para esse fluxo.
Fontes e leituras adicionais
- Importance of Scanning Files on Uploader Applications — Trend Micro Research
- 8 Basic Rules to Implement Secure File Uploads — SANS Institute