A desativação de entidades externas não protege, por si só, um processador de relatórios de todas as entradas de esgotamento de recursos. Um anexo compactado pode se expandir antes do analisador XML ser iniciado, e um XML profundamente aninhado ou superdimensionado pode consumir recursos sem acessar uma entidade externa. Trate a descompressão, a interpretação XML e a admissão de carga de trabalho como limites defensivos separados.
RFC 9990 identifica explicitamente riscos de esgotamento de recursos de arquivo e XML. A orientação XML do OWASP explica por que os controles de recursos externos específicos do analisador são importantes. O design do teste aqui é uma recomendação operacional para verificar esses limites em um ambiente de teste isolado.
Defina o que nunca deve acontecer
Referências: RFC 9990 §8.1.
O trabalhador não deve buscar recursos de rede selecionados por anexo, ler segredos de aplicativos por meio de resolução XML, escrever caminhos fornecidos por arquivos ou consumir CPU, memória ou disco ilimitados. Dê-lhe acesso mínimo ao sistema de arquivos e nenhum acesso desnecessário à rede. Use um ambiente de teste descartável com canários sintéticos em vez de segredos de produção.
Defina limites observáveis para entrada compactada, saída expandida, tempo de análise, aninhamento, comprimento de texto e trabalhos simultâneos. Registre onde cada limite é aplicado. Um tempo limite próximo à importação final não pode proteger uma etapa anterior de descompactação ilimitada.
Verifique os recursos XML diretamente
Referência: Prevenção de entidade externa OWASP XML, Orientação Geral.
Configure o analisador real e qualquer camada de validação de esquema ou transformação. Desative o processamento desnecessário de DTD, entidades externas, XInclude e carregamento de recursos externos. Trate as configurações de segurança não suportadas como falhas de configuração. Uma configuração segura do analisador pode ser prejudicada se um estágio de validação posterior buscar um esquema escolhido pela entrada. Revise toda a cadeia de processamento, não apenas a primeira chamada da biblioteca.
Use um pequeno acessório contendo uma referência externa para um sentinela de teste controlado. O comportamento esperado é a rejeição ou a não resolução segura sob a política documentada, sem acesso sentinela. Grave telemetria de rede e acesso a arquivos. Não aponte referências de teste para arquivos locais confidenciais ou serviços externos que você não controla.
Testes de expansão inofensivos vinculados
Referências: RFC 9990 §8.1.
Para descompressão, use conteúdo sintético pequeno e limites de teste intencionalmente baixos. Para XML, use aninhamento limitado ou acessórios de expansão interna projetados para ultrapassar limites igualmente baixos. Não há necessidade de criar uma bomba verdadeiramente enorme para estabelecer que uma fronteira é aplicada.
Caso ilustrativo: um trabalhador de teste tem um limite de bytes expandidos de 256 KiB e um prazo de processamento de um segundo. Um fluxo expandido sintético de 300 KiB deve parar no limite de bytes. Um pequeno acessório de referência externa separado não deve causar nenhuma pesquisa. A aprovação em um caso não prova que o outro limite funciona. Os limites são ilustrativos e a memória real e o tempo decorrido devem ser medidos em vez de assumidos.
Verifique a contenção de falhas
Para cada acessório rejeitado, afirme que nenhum registro de relatório parcial foi confirmado, nenhum arquivo de saída não aprovado apareceu e o diagnóstico contém uma referência de entrada segura e o motivo. Tamanho de diagnóstico limitado também, porque copiar todo o documento rejeitado em logs cria outro risco de recursos e privacidade.
Envie um pequeno relatório válido a seguir. Verifique se o processamento da fila é recuperado, se os arquivos temporários são limpos dentro da política aprovada e se a reprodução não cria contagens duplicadas. Exercite chegadas simultâneas dentro de um orçamento de teste seguro para que os limites agregados de trabalhadores sejam testados, bem como os limites por arquivo.
Torne a evidência do teste repetível
Referências: RFC 9990 §8.1, RFC 9990 §9.2.
Retenha hashes de fixtures, versões de analisador e tempo de execução, configuração, limites, resultados esperados e resultados medidos. Repita após alterações de dependência, analisador, contêiner ou validação. Se um teste não puder observar acesso externo ou uso de memória, marque essa parte como não verificada em vez de declarar o pipeline seguro.
Uma rejeição prova que uma entrada específica encontrou um limite específico na configuração testada. Isso não prova que todos os documentos maliciosos possíveis sejam inofensivos. Combine equipamentos focados, configuração revisada, isolamento e monitoramento e mantenha um proprietário para acompanhamento quando qualquer limite falhar.
O pacote de revisão executa apenas uma pequena demonstração de descompressão limitada e modelos semânticos. Os testes de referência externa, isolamento de memória, trabalho simultâneo e contenção de banco de dados real descritos acima permanecem requisitos de aceitação, não testes concluídos.