
Mecanismo de análise semântica para detecção de correções de vulnerabilidades em patches de driver do kernel Windows — 58 regras YAML, descompilação Ghidra, rastreamento de alcançabilidade e pontuação
Estrutura Automatizada de Inteligência e Descoberta de Patches
Um motor de análise semântica para detecção de correções de vulnerabilidades em patches de drivers do kernel do Windows. AutoPiff usa regras YAML conservadoras para identificar alterações de código relevantes para segurança com alta precisão e explicabilidade.
O AutoPiff analisa as diferenças entre versões vulneráveis e corrigidas de drivers para detectar automaticamente:
ExFreePool)memcpy)ProbeForRead/ProbeForWrite)Fornecedor lança 500 atualizações de driver/ano
├── 490 são alterações de funcionalidade/desempenho/estética
├── 8 são correções de bugs menores
└── 2 são correções de segurança silenciosas (sem CVE atribuído)
Sem automação: Revisar manualmente 500 para encontrar 2
Com AutoPiff: Revisar 10 de alta pontuação para encontrar 2
Patches de segurança são frequentemente lançados sem atribuição de CVE. Reverter manualmente todas as atualizações de driver para encontrar as relevantes para segurança não é viável. O AutoPiff resolve isso exibindo automaticamente as alterações que importam.
| Fase | Esforço Manual | Com AutoPiff | Tempo Economizado |
|---|---|---|---|
| Emparelhamento de versões | 5-15 min/driver | Automático | ~100% |
| Decompilação | 2-10 min/binário | Em lote, paralelo | ~95% |
| Correspondência de funções | 30-60 min/par | Instantâneo | ~100% |
| Identificação de alterações de segurança | 2-8 horas/par | Segundos | ~99% |
| Triagem e classificação inicial | 1-2 horas | Instantâneo | ~100% |
| Geração de relatório | 30-60 min | Instantâneo | ~100% |
Total: 4-12 horas por par de drivers reduzido para 2-5 minutos
┌─────────────────────────────────────────────────────────────────┐
│ AUTOMATIZADO pelo AutoPiff │
│ ├── Encontrar a agulha: "Esta função mudou perto de ExFreePool"│
│ ├── Classificar: "Parece uma correção de use-after-free" │
│ └── Classificar: "Pontuação 5.5 - vale a pena investigar" │
├─────────────────────────────────────────────────────────────────┤
│ AINDA MANUAL (Sua expertise) │
│ ├── Confirmar explorabilidade: "Posso realmente acionar isso?" │
│ ├── Análise de causa raiz: "Por que isso era vulnerável?" │
│ ├── Desenvolvimento de exploit: "Como alcanço este sink?" │
│ └── Avaliação de impacto: "Qual é o risco no mundo real?" │
└─────────────────────────────────────────────────────────────────┘
O AutoPiff não substitui a pesquisa de exploração. Torna-a viável em escala ao automatizar a fase de reconhecimento.
1. Detecção de Patch Silencioso
2. Pesquisa de Vulnerabilidade de 1 Dia
3. Auditoria de Segurança do Fornecedor
4. Construção de Corpus CVE Histórico
O AutoPiff executa como um pipeline Karton com 8 estágios sequenciais mais uma ramificação paralela de triagem DriverAtlas. Cada estágio é um microsserviço independente que se comunica via Redis/RabbitMQ.
graph LR
sources["WinBIndex<br/>VirusTotal"]:::src --> s0["Estágio 0<br/>Monitor"]
s0 --> s14["Estágios 1-4<br/>Differ de Patch"]
s0 --> triage["DriverAtlas<br/>Triagem"]:::triage
s14 --> s5["Estágio 5<br/>Alcançabilidade"]
s5 --> s6["Estágio 6<br/>Classificação"]
s6 --> s7["Estágio 7<br/>Relatório"]
s6 --> s8["Estágio 8<br/>Alertador"]
triage --> alerts["Tags MWDB<br/>+ Alertas"]:::triage
classDef src fill:#1a1a2e,stroke:#e94560,color:#eee
classDef triage fill:#1a1a2e,stroke:#e9a345,color:#eee
classDef default fill:#16213e,stroke:#0f3460,color:#eee
| Estágio | Serviço | O que faz |
|---|---|---|
| 0 | driver-monitor | Consulta WinBIndex e VirusTotal por novas versões de driver, envia para MWDB |
| 1-4 | karton-patch-differ | Emparelhamento de versões, decompilação Ghidra, correspondência de funções, avaliação de regras semânticas |
| 5 | karton-reachability | BFS no grafo de chamadas Ghidra de pontos de entrada IOCTL/IRP para funções alteradas, exportação completa de decompilação |
| 6 | karton-ranking | Pontua descobertas usando alcançabilidade, severidade semântica e superfície de ataque |
| 7 | karton-report | Gera relatórios markdown estruturados, envia para MWDB |
| 8 | autopiff-alerter | Envia alertas Telegram para descobertas com pontuação >= 8.0 |
| — | autopiff-driver-triage | Pontuação de superfície de ataque DriverAtlas (paralelo a 1-4), marca amostras MWDB, alertas Telegram |
O AutoPiff inclui 58 regras em 22 categorias. Veja Docs/semantic_rules.md para a especificação completa e Docs/SEMANTIC_RULES_REFERENCE.md para a referência técnica.
| Categoria | Exemplo de Detecção |
|---|---|
bounds_check | Verificação de tamanho adicionada antes de memcpy |
lifetime_fix | Atribuição nula após ExFreePool |
user_boundary_check | Adicionado ProbeForRead/ProbeForWrite |
int_overflow | Uso de auxiliar matemático seguro |
state_hardening | Operações de contagem de referência intercravada |
ioctl_input_validation | Novas verificações de tamanho/tipo em manipuladores de dispatch |
pool_type_hardening | Migração para NonPagedPoolNx |
privilege_check | Adicionado SeSinglePrivilegeCheck |