Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
kernel-c-to-rust-spike — Endurecimento dos parsers em C do kernel por meio de reescrita em Rust + fuzzing diferencial + verificação formal. Primeiro alvo: UVC (CVE-2024-53104). | Kitploit
Ferramentas/GitHubGitHub/runtimeverification/kernel-c-to-rust-spike
Análise EstáticaAnálise de VulnerabilidadesEngenharia ReversaFuzzingAnálise de BináriosPapers e PesquisaAprendizado e Educação
GitHubruntimeverification/kernel-c-to-rust-spike

kernel-c-to-rust-spike

Endurecimento dos parsers em C do kernel por meio de reescrita em Rust + fuzzing diferencial + verificação formal. Primeiro alvo: UVC (CVE-2024-53104).

Ver Repositório
285há 3 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Spike de endurecimento do kernel de C para Rust: parser de descritores UVC

Um parser C do kernel Linux crítico para a segurança pode ser endurecido reescrevendo-o em Rust, com a reescrita demonstrada como equivalente ao original e depois formalmente verificada? Este spike executa o ciclo completo sobre um alvo: o parser de descritores de vídeo UVC (uvc_parse_format/uvc_parse_frame de drivers/media/usb/uvc/, v7.2-rc2), escolhido por ter carregado duas CVEs independentes de segurança de memória com dezesseis anos de diferença (CVE-2008-3496, CVE-2024-53104, esta última no catálogo CISA KEV).

O ciclo, e o que cada etapa estabeleceu

  1. Extrair a folha C (c/). A lógica de parsing copiada byte a byte do kernel; apenas o ambiente foi substituído por stubs (// SPIKE-STUB). Compila para uma biblioteca com ABI C. A folha extraída inclui a passagem de contagem e a alocação dimensionada, de modo que a classe de bug da CVE-2024-53104 (o parsing escrevendo além do que a contagem alocou) é alcançável, não abstraída.

  2. Reescrever em Rust (rust/). A mesma folha de parsing em Rust seguro, mesma ABI C e struct de resultado. Cada desvio em relação ao C é marcado com // DEVIATION e documentado.

  3. Fuzzing diferencial (fuzz/). Um harness LibAFL em rustc estável executa ambas as implementações a partir de uma única entrada e compara as saídas campo a campo. Resultado: após corrigir uma incompatibilidade de portabilidade em um ponto de overflow de sinal dependente do compilador, zero divergências em 54.019 execuções com 93% de cobertura de arestas. No código fiel da v7.2-rc2 nenhum acesso fora dos limites é alcançável (ambas as CVEs estão corrigidas). Um controle negativo opcional (--features vuln, espelhado em ambas as linguagens) reintroduz a incompatibilidade da CVE-2024-53104: na mesma entrada o C faz uma escrita fora dos limites no heap (ASan), o Rust entra em panic de forma segura. Detalhes: fuzz/RESULTS.md.

  4. Verificação formal (verify/). A folha Rust fiel é extraída via Charon e Aeneas para Lean 4 sem nenhum sorry no código gerado, e sem bloqueio por union (diferente do spike do Binder). Dois teoremas, em verify/VERIFY-REPORT.md e ROADMAP.md:

    • Segurança total sobre toda entrada (todo resultado é ok / fail controlado / não terminação, nunca um resultado de comportamento indefinido): provado, sem sorry. Isso torna explícita, como uma afirmação verificada, a propriedade de segurança de memória que o C não possui.
    • Ausência de panic em entrada bem formada (o panic ocorre apenas em entrada malformada, onde é o comportamento seguro pretendido que substitui a escrita fora dos limites do C): em andamento. O invariante de contagem versus escrita cuja violação é a CVE-2024-53104 está provado sem sorry, juntamente com dois princípios reutilizáveis de raciocínio de laço do Aeneas e ausência de divisão para os 5 laços estruturalmente terminantes. O restante se reduz a um núcleo nomeado de correção funcional de caminhamento posicional (quatro lemas declarados); veja ROADMAP.md.

Status

O ciclo é demonstrado de ponta a ponta em um alvo. A reescrita é mostrada equivalente ao C por fuzzing diferencial; a diferença de segurança de memória é tornada concreta pelo controle negativo; o Rust é extraído de forma limpa para Lean e sua propriedade de segurança total é verificada por máquina. Para o teorema de ausência de panic, o invariante de contagem (o núcleo da CVE-2024-53104) está provado sem sorry e o trabalho restante é reduzido a um núcleo nomeado de correção funcional, declarado mas ainda não provado. O status completo da prova e os lemas em aberto estão em ROADMAP.md.

Estrutura

  • c/ — a folha C extraída e seus stubs
  • rust/ — a reescrita em Rust seguro
  • fuzz/ — o fuzzer diferencial LibAFL, resultados e controle da classe de CVE
  • verify/ — extração Charon/Aeneas/Lean e teoremas
  • ROADMAP.md — status da prova e os lemas em aberto restantes
  • OPEN_CHALLENGES.md — tarefas concretas que um contribuidor pode assumir
  • */README.md, fuzz/RESULTS.md, verify/VERIFY-REPORT.md — detalhes por etapa

Ambiente

Kernel v7.2-rc2 (referência somente leitura). Rust estável 1.94.0. LibAFL 0.15. Charon 909ff09a (v0.1.220, --preset=aeneas), Aeneas c2015b86, Lean/mathlib v4.31.0.

Baixar ferramenta