
Detecção baseada em ML de ataques de evasão de cabeçalho de arquivos ZIP Zombie (CVE-2026-0866)
Um scanner defensivo para evasão de metadados estruturais em arquivos ZIP.
O ZombieGuard detecta contradições entre cabeçalhos de arquivos locais ZIP, registros do diretório central e características do payload. Essas contradições podem ser usadas para fazer o conteúdo de um arquivo parecer vazio ou inofensivo para um parser, enquanto outro parser ainda alcança o payload.
Ele combina um parser ZIP limitado com um pequeno modelo LightGBM. Ele não extrai nem executa o conteúdo dos arquivos.
[!IMPORTANT] O ZombieGuard detecta sinais de evasão em arquivos, não malware. Um resultado limpo não é prova de que os arquivos dentro de um arquivo são seguros.
O ZombieGuard é compatível com Python 3.11 e 3.12.
git clone https://github.com/mdshoaibuddinchanda/zombieguard.git
cd zombieguard
python -m pip install .
zombieguard scan suspicious.zip --include-features
O modelo da versão de lançamento é instalado junto com o pacote. Use zombieguard scan --help para ver o limite de tamanho de entrada, a saída JSON/SARIF e as opções de varredura de diretórios.
Para desenvolvimento, instale o repositório em modo editável:
python -m pip install -e ".[dev]"
python -m pytest
O ZombieGuard trata cada ZIP como um problema de consistência, em vez de procurar assinaturas de malware:
O scanner emite um veredito com códigos de motivo de apoio. Falhas de parsing são relatadas como condições indeterminadas ou suspeitas; elas nunca são convertidas silenciosamente em um resultado limpo.
Untrusted ZIP bytes
│
▼
Bounded structural parser ──► explicit parse/limit failures
│
▼
Per-entry consistency features
│
▼
Versioned LightGBM model
│
▼
verdict + score + reasons
Erros de validação estrutural produzem um resultado explicitamente não escaneável. Arquivos analisados com sucesso são pontuados pelo modelo, e inconsistências observadas são retornadas como códigos de motivo. Os metadados do modelo registram o esquema de features, a configuração de treinamento, os hashes das fontes e o checksum do modelo.
A avaliação da versão de lançamento é intencionalmente restrita e reproduzível. Ela não alega detecção de malware no mundo real nem generalização entre formatos.
| Propriedade | Protocolo da versão |
|---|---|
| Escopo | Benchmark de features de evasão estrutural em ZIP com positivos sintéticos |
| Corpus elegível | 1.150 positivos gerados e 1.568 linhas de features rotuladas como benignas e deduplicadas |
| Holdout positivo | Deixar uma variante completa de ataque de fora por fold (8 variantes) |
| Holdout benigno | Partição determinística por SHA-256; cada amostra é avaliada uma vez |
| Limiar de decisão | Calibração agrupada aninhada apenas nas linhas do treinamento externo; orçamento de 0,5% de FPR benigno |
| Previsões relatadas | Apenas previsões dos folds externos; linhas retidas nunca definem seu limiar |
| Excluído das alegações | Rótulos positivos derivados de MalwareBazaar ou não verificados de outra forma |
| Confiança | Intervalos de Wilson de 95% junto com métricas agregadas |
O artefato atual relata:
| Métrica | Resultado | Intervalo Wilson de 95% |
|---|---|---|
| Acurácia | 99,89% (2.715 / 2.718) | 99,68–99,96% |
| Precisão | 99,74% | 99,24–99,91% |
| Recall | 100% (1.150 / 1.150) | 99,67–100% |
| F1 | 99,87% | — |
| ROC-AUC | 99,90% | — |
| Taxa de falsos positivos | 0,191% (3 / 1.568) | 0,065–0,561% |
A matriz de confusão é TN=1.565, FP=3, FN=0, TP=1.150. Os resultados oficiais estão em artifacts/metrics.json; esse arquivo também contém resumos de fold por variante, hashes das fontes de dados, verificações de vazamento de dados, checksum do modelo e a configuração exata. Se uma métrica for usada em um currículo, artigo ou apresentação, cite seu escopo como avaliação de features sintética aninhada com exclusão de uma variante por vez.
As linhas negativas compreendem 686 linhas de features derivadas de PyPI, 478 negativas difíceis geradas, 400 pequenas benignas geradas e 4 linhas de features derivadas de Office. As famílias de fontes negativas são distribuídas entre os folds, em vez de serem retidas como famílias. Os intervalos descrevem a incerteza no nível de linha dentro deste benchmark; eles não estimam a incerteza de implantação nem o deslocamento de domínio (domain shift). A saída do LightGBM é relatada como uma pontuação não calibrada, não uma probabilidade. A política de limiar é um ponto operacional de desenvolvimento avaliado com folds aninhados; ainda são necessários arquivos benignos novos, analisados pela versão de lançamento atual, antes de tratar a taxa de falsos positivos medida como evidência de produção.
Por que usar positivos sintéticos? Exemplos públicos e verificados de forma independente dessa técnica restrita de evasão são escassos. A geração torna cada mutação estrutural explícita e repetível. O desempenho sintético é evidência de que o detector reconhece essas mutações; ele não substitui um benchmark do mundo real com rótulos independentes.
Consulte o cartão de dados e o cartão do modelo para obter proveniência, semântica de rótulos e modos de falha.
Instale as dependências principais e verifique os artefatos versionados. As etapas adicionais de geração e atualização reproduzem todos os positivos sintéticos seguros e confirmam que suas features versionadas ainda correspondem ao parser atual antes do retreinamento:
python -m pip install -e .
python -m zombieguard.evaluate --check
python data/scripts/generate_zombie_samples.py
python scripts/refresh_synthetic_features.py
python -m zombieguard.evaluate --train --check
O treinamento lê as tabelas de features e rótulos versionadas e grava:
src/zombieguard/assets/zombieguard_lgbm.txt — modelo LightGBM portátil;src/zombieguard/assets/zombieguard_lgbm.metadata.json — metadados de esquema e integridade;artifacts/metrics.json — relatório de avaliação legível por máquina.A integração contínua executa linting, auditoria de dependências e segurança estática, compilação de bytecode, testes com cobertura, builds de pacotes em Python 3.11 e 3.12, alinhamento entre gerador e parser, verificação de artefatos versionados e um teste de fumaça isolado do tipo treinar-e-verificar.
src/zombieguard/ installable scanner package and release assets
tests/ self-contained unit, adversarial, and CLI tests
data/processed/ committed feature table and labels
data/scripts/ safe synthetic-data builders
scripts/ dataset curation and audit helpers
artifacts/metrics.json reproducible release metrics
docs/ data and model cards
Malware bruto, corpora baixados, credenciais e modelos temporários treinados localmente não fazem parte do repositório.
--max-size-mb ativado e adicione limites de memória e tempo no nível do processo em implantações de produção.Leia o CONTRIBUTING.md antes de alterar o parser, o conjunto de dados ou o protocolo de avaliação. Não faça commit de amostras de malware, credenciais de API ou alegações de benchmark sem um artefato reproduzível.
Para relatar uma vulnerabilidade ou bypass do parser, siga o SECURITY.md. Por favor, não anexe malware ativo a uma issue pública.
Licenciado sob a Apache License 2.0.