Para detectar anexos compactados perigosos antes de processar documentos com IA, coloque o pacote em quarentena, confira o formato real e inspecione suas entradas sem entregá-las ao OCR ou ao modelo. A extração precisa ocorrer em ambiente isolado, com limites sobre os bytes efetivamente produzidos, o número de arquivos, o tempo e a memória consumidos.
Um ZIP pequeno pode gerar uma quantidade inviável de dados. Um nome aparentemente comum pode apontar para fora da pasta de destino. Por isso, aceitar o tamanho declarado ou confiar no antivírus não basta. O procedimento recomendado aqui é conservador: arquivo criptografado, compactação interna inesperada, caminho inseguro ou inspeção incompleta interrompem o lote e exigem nova entrega ou análise humana.
Resumo rápido
- Receba o original em quarentena, separado das filas de IA.
- Compare extensão, MIME e assinatura do conteúdo.
- Rejeite caminhos externos, links e formatos sem suporte explícito.
- Conte a expansão real durante a leitura, sem confiar apenas no cabeçalho.
- Libere somente arquivos aprovados, com registro do lote e da política aplicada.
O que torna um pacote perigoso
O problema começa antes da interpretação de texto. Descompactadores, conversores e leitores de PDF já são programas que trabalham sobre conteúdo recebido de terceiros. Proteger apenas a chamada final ao modelo deixa essas etapas anteriores expostas. Uma arquitetura adequada estabelece uma fronteira de confiança logo na recepção do anexo.
Uma bomba de descompressão explora a diferença entre o tamanho de entrada e o trabalho necessário para expandi-la. O risco envolve armazenamento, memória e tempo de processamento. Muitos arquivos minúsculos também podem esgotar recursos administrativos do sistema, mesmo quando a soma dos bytes parece aceitável. Quantidade e tamanho precisam de controles separados.
Outro risco é a travessia de diretórios: entradas tentam produzir arquivos fora do local reservado. Links simbólicos e ligações entre arquivos podem redirecionar uma escrita posterior. A documentação do tarfile do Python descreve esses problemas e alerta que filtros de extração não eliminam todos os comportamentos perigosos.
Trate essas categorias como ameaças diferentes. Um antivírus pode ajudar na detecção de conteúdo conhecido, mas não substitui limites de consumo nem a validação do destino. O modelo de IA também não deve decidir se um pacote pode ser aberto. Essa decisão pertence à infraestrutura de recebimento, com regras verificáveis e resultado independente da resposta de linguagem.
Monte a quarentena e a política de entrada
Comece pelo que o negócio realmente precisa receber. Se o processo trabalha com documentos PDF e imagens, não há motivo para permitir executáveis, atalhos ou formatos arbitrários dentro do pacote. Documente formatos aceitos, origem autorizada, finalidade, prazo de retenção e quem pode liberar uma exceção. Exceção deve seguir uma fila própria, sem desativar a proteção geral.
Guarde o original com identificador gerado pelo sistema e acesso restrito. O nome fornecido pelo remetente pode ser preservado como metadado, sem virar caminho de armazenamento. Registre remetente, horário, tamanho de entrada e uma impressão criptográfica do conteúdo. Esse registro ajuda a reconhecer reenvios e investigar o que foi realmente recebido, sem espalhar cópias por conversas internas.
A quarentena não deve ficar na pasta pública do site nem no diretório que um agente consulta automaticamente. Separe permissão de receber, inspecionar e liberar. A orientação da OWASP para uploads recomenda múltiplas camadas, validação de tipo e armazenamento protegido. Use essas recomendações como base e ajuste a política à documentação necessária.
Faça a comparação entre extensão, MIME, que é a identificação do tipo de conteúdo, e assinatura do arquivo. O MIME enviado pelo cliente é uma declaração, não uma prova. Divergência deve gerar recusa ou revisão. Um documento de escritório pode ser um contêiner internamente; permita sua estrutura apenas por um leitor específico, em vez de autorizar recursão genérica para qualquer arquivo compactado.
Antes da implantação, combine o tratamento dos documentos confidenciais com o responsável pelos dados. Serviços externos de inspeção não devem receber anexos sensíveis por conveniência operacional. O guia sobre proteção de dados na implantação de IA ajuda a organizar essa discussão, que continua necessária mesmo quando a extração ocorre localmente.
Inspecione entradas e controle a expansão real
A listagem inicial serve para rejeitar problemas evidentes: quantidade exagerada de entradas, tipos não permitidos, nomes duplicados e tamanho declarado incompatível com o processo. Ela não autoriza a extração irrestrita. Metadados podem estar ausentes, inconsistentes ou representar mal o consumo que ocorrerá. A leitura precisa continuar submetida a um orçamento de recursos.
Durante a descompressão, conte cada bloco produzido antes de gravá-lo ou repassá-lo. Mantenha um contador por arquivo e outro para todo o lote, além de um teto de entradas. Interrompa imediatamente quando qualquer limite for ultrapassado. Não espere o disco encher nem materialize todo o resultado na memória para só depois medir. Essa abordagem também precisa cobrir leitores que fazem trabalho antes de devolver dados.
Defina ainda prazo máximo, limite de memória, espaço temporário e concorrência. O limite por anexo não protege um servidor que aceita centenas de extrações simultâneas. Reserve capacidade por usuário ou origem e limite o total de tarefas em execução. Os valores devem sair de testes com documentos representativos, não de uma taxa universal copiada de outro ambiente.
A proporção entre bytes comprimidos e expandidos funciona como sinal adicional, mas não deve ser o único critério. A documentação do Apache Commons Compress descreve estatísticas de leitura que ajudam a observar essa proporção. Ela também lembra que nomes internos precisam ser verificados antes de virarem caminhos no sistema.
| Verificação | O que observar | Decisão recomendada |
|---|---|---|
| Formato | Extensão, MIME e assinatura incompatíveis | Reter para revisão |
| Destino | Caminho externo ou link | Rejeitar o lote |
| Expansão | Bytes reais acima do orçamento | Interromper e limpar temporários |
| Estrutura | Pacote interno inesperado ou criptografado | Bloquear processamento automático |
| Inspeção | Leitor falhou ou exame incompleto | Manter em quarentena |
Para os caminhos, resolva o destino final dentro de um diretório novo e exclusivo do trabalho. A política precisa impedir saídas dessa raiz, sobrescritas e colisões após normalização de nomes. Rejeite links simbólicos, ligações físicas e entradas especiais quando não forem necessárias. Confira também diferenças do sistema operacional, porque o mesmo nome pode ser interpretado de maneiras distintas.
Pacotes aninhados exigem um orçamento cumulativo de expansão e profundidade. Para uma operação pequena, a decisão mais simples é recusá-los na fila automática. Arquivos criptografados também ficam bloqueados: receber uma senha não significa que a inspeção ocorreu. Peça os documentos descompactados por um canal autorizado ou encaminhe o caso para uma rotina separada, com os mesmos controles.
Libere documentos antes de acionar OCR e IA
Execute a inspeção e a extração em um trabalhador isolado, sem credenciais de produção, sem acesso desnecessário à rede e sem permissão sobre outras pastas. Um contêiner precisa de configuração restritiva; seu nome, sozinho, não comprova isolamento. A conta de execução deve conseguir escrever somente no espaço temporário correspondente ao lote.
Uma falha deixa o processo fechado: nada segue adiante. Isso inclui erro de leitura, formato parcialmente suportado, tempo esgotado e resultado inconclusivo do exame. A documentação do zipfile do Python reúne cuidados específicos para arquivos ZIP; consulte a biblioteca efetivamente usada, sem presumir que todos os leitores tenham o mesmo comportamento.
Depois da extração controlada, aplique novamente a política de tipo a cada documento. Faça a análise antimalware e, quando adotada, a reconstrução do conteúdo em ambiente isolado. Somente a cópia aprovada entra na fila de OCR, o reconhecimento de caracteres. Identifique essa cópia por conteúdo e estado de aprovação, evitando que uma simples mudança de nome permita substituir o arquivo entre a inspeção e o processamento.
Conteúdo aprovado tecnicamente continua sendo entrada não confiável para o modelo. Instruções escritas dentro de um documento não ganham autoridade sobre o sistema. Separe texto extraído das instruções do aplicativo e controle as ações disponíveis ao agente. O roteiro de testes contra injeção de prompt trata dessa etapa posterior, que complementa a segurança dos anexos.
Produza um manifesto com os arquivos liberados, seus identificadores e a versão da política usada. A fila seguinte recebe esse manifesto, não uma pasta inteira de conteúdo misturado. Limpe materiais parciais ao cancelar uma tarefa e registre o motivo sem copiar o documento para os logs. A retenção do original deve seguir uma decisão explícita, com acesso limitado e prazo definido.
Exemplo: escritório contábil em Curitiba
Considere um escritório contábil de Curitiba que recebe documentos de clientes em pacotes mensais. Este é um cenário ilustrativo, sem resultados atribuídos a uma empresa real. O escritório quer extrair texto para conferir informações cadastrais, mas não precisa executar nenhum programa recebido dos clientes.
A equipe define os tipos documentais aceitos e solicita um pacote sem senha e sem outros pacotes internos. O portal registra o envio e apresenta o estado “recebido para inspeção”. Esse estado não equivale a documento aceito. O cliente recebe uma orientação clara se o lote ultrapassar os limites ou trouxer estrutura incompatível.
O trabalhador isolado lista as entradas, verifica os caminhos e começa a extração com contadores cumulativos. Se uma entrada desrespeitar a política, todo o lote permanece retido. A pessoa responsável pelo atendimento vê o motivo operacional e pede novo envio. Não precisa baixar o anexo no próprio computador para descobrir o problema.
Quando todos os documentos passam pelas verificações, o sistema cria o manifesto e libera apenas as cópias aprovadas para reconhecimento de texto. Uma revisão humana trata dúvidas da extração, separadamente da inspeção do pacote. A empresa consegue distinguir falha de recebimento, problema documental e incerteza da IA, sem resumir tudo em “erro no arquivo”.
Erros comuns
Verificar somente o tamanho recebido. A transferência pequena não informa o consumo após a expansão. Meça os bytes de saída durante o processamento e mantenha limites de tempo e memória. Verificar o tamanho depois que tudo foi extraído chega tarde para proteger os recursos usados nessa etapa.
Extrair e depois procurar caminhos estranhos. A escrita indevida já pode ter ocorrido. Valide cada destino antes de criá-lo, recuse links e isole o trabalhador. Também evite reaproveitar uma pasta antiga: resíduos de uma execução anterior confundem a relação entre arquivo recebido e documento liberado.
Pular uma entrada problemática e aprovar o restante silenciosamente. O usuário pode interpretar a saída parcial como análise completa. Se o negócio permitir lotes parciais, estabeleça essa modalidade explicitamente, com lista de exclusões e aprovação humana. Na política conservadora apresentada aqui, uma falha mantém o pacote inteiro retido.
Repetir automaticamente o mesmo lote bloqueado. Tentativas idênticas consomem recursos e não corrigem a causa. Registre o bloqueio, elimine tarefas duplicadas e solicite uma ação concreta. A retomada só ocorre após nova entrada ou autorização documentada para uma rotina adequada.
Perguntas frequentes
Um resultado limpo do antivírus basta?
Não. Ele é uma camada adicional. Caminhos inseguros, consumo excessivo e formatos sem suporte precisam de controles próprios. Um resultado inconclusivo também não deve ser interpretado como aprovação. Registre separadamente o exame de conteúdo e as verificações estruturais.
Posso enviar o ZIP para a IA inspecionar?
Não use a resposta do modelo como autorização de extração. Primeiro execute a inspeção técnica controlada. Depois, se a política de dados permitir, encaminhe os documentos aprovados ao processo de análise. O modelo não substitui o descompactador seguro.
Qual limite de expansão devo escolher?
Estabeleça limites a partir da capacidade do ambiente e dos documentos esperados. Teste o pior caso legítimo e mantenha margem operacional. Documente limites por arquivo, pacote, usuário e concorrência; uma proporção de compactação isolada não resolve todos esses aspectos.
Como testar sem construir arquivos perigosos?
Use amostras inofensivas e limites de teste reduzidos. Um documento comum pode ultrapassar um teto artificialmente pequeno. Verifique interrupção, limpeza, bloqueio da fila seguinte e mensagem ao usuário. Testes especializados de caminhos e links devem ficar com a equipe de segurança em ambiente controlado.
Uma falha pode deixar arquivos parciais?
Sim. Planeje a limpeza do diretório exclusivo e confira seu término. Nada desse diretório deve ser consumido automaticamente. A liberação ocorre apenas pelo manifesto aprovado, depois que o lote conclui todas as etapas exigidas.