Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
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.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Ferramentas/GitHubGitHub/foxirain/linux-kernel-codex-harness
Análise EstáticaAnálise de VulnerabilidadesFuzzingSegurança de IA
GitHubfoxirain/linux-kernel-codex-harness

linux-kernel-codex-harness

Harness de pesquisa de vulnerabilidades no kernel Linux orientado por evidências, utilizado na investigação da CVE-2026-31720

Ver Repositório

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 →
há 23 diasAinda não revisado
Compartilhar

Kernel Codex Harness

한국어 | English

CI

Ferramenta de Pesquisa · Importação Original: 3 de abril de 2026 · Revisão da Documentação: 11 de julho de 2026

Filosofia Central — Sinal Externo
Deixe que observações reproduzíveis fora da inferência do modelo orientem a atenção; nunca confunda prioridade com prova.

Status do projeto. Este repositório é uma versão inicial de um harness de pesquisa assistido por LLM que foi construído e usado para investigação real de vulnerabilidades no kernel Linux. Esta versão foi usada para descobrir a vulnerabilidade divulgada como CVE-2026-31720. O harness prioriza alvos de investigação, mas não prova vulnerabilidades automaticamente nem garante a segurança do kernel; a validação final e a divulgação são conduzidas por humanos.

Resumo

Resumo— Explorar uma base de código tão grande quanto o kernel Linux diretamente com um LLM dispersa rapidamente o contexto e confunde facilmente a existência de APIs perigosas com a real explorabilidade. O Kernel Codex Harness define esse problema não como detecção automática de vulnerabilidades, mas como . Este projeto chama de o princípio de controlar a atenção do modelo com observações reproduzíveis calculadas fora da inferência do LLM. Ele combina caminhos do kernel, fronteiras de userspace e sinais estáticos relacionados a lifetime, usercopy, refcount e tamanho, com inteligência opcional de crashes do syzbot, para ranquear arquivos candidatos e converter cada candidato em pacotes de prompt estreitos. A revisão manual e o autopilot baseado em orçamento de tempo usam o mesmo contrato de resposta e estado de sessão. Este harness foi usado em uma investigação real do kernel Linux para descobrir uma escrita fora dos limites (stack out-of-bounds write) no caminho de áudio do gadget USB, e essa falha foi divulgada como . Esta implementação não é um analisador estático preciso, mas sim um workflow de pesquisa que usa heurísticas explicáveis para limitar o escopo da investigação do LLM; todos os achados exigem revalidação humana de reachability, quebra de invariante e impacto concreto.

priorização de investigação e orquestração baseada em estado
Sinal Externo
CVE-2026-31720

Termos de Índice— kernel Linux, pesquisa de vulnerabilidades, sinal externo, orquestração de LLM, priorização heurística, syzbot, análise de programas, Codex.

I. Introdução

A revisão de segurança do kernel Linux enfrenta dois tipos de problemas de escala. Primeiro, a árvore de fontes completa é grande demais para caber em um único contexto de LLM. Segundo, sinais como copy_from_user, alocadores, refcount e locks são comuns, mas não significam vulnerabilidades por si só. O analista deve primeiro decidir "onde olhar" e, em seguida, provar separadamente a reachability de userspace e as transições de estado concretas.

A filosofia central deste projeto é o Sinal Externo.

Não deixamos o LLM decidir sozinho onde olhar. Sinais reproduzíveis fora da inferência do modelo alocam a atenção, mas as conclusões sobre vulnerabilidades são determinadas apenas por evidências de reachability e invariantes.

Portanto, o harness não faz o modelo explorar vagamente o kernel inteiro. Ele prioriza arquivos, fornece apenas um ramo de investigação por vez e exige estrutura de evidências antes de conclusões.

II. Sinal Externo e Princípios de Design

A. Sinal Externo Antes da Inferência do Modelo

Sinal Externo não é um julgamento gerado pelo LLM; é uma observação determinada antes da execução do modelo e recalculável a partir da mesma árvore de fontes, perfil e JSON do syzbot armazenado. Pesos de caminho, hits de regex e sobreposição com syzbot em cache se enquadram nisso. Esses sinais são usados apenas para ranquear candidatos e fornecer contexto de prompt; nunca são promovidos a veredito ou prova.

Neste documento, Sinal Externo refere-se à filosofia geral do projeto. O modelo de dados ExternalSignal no código atualmente representa apenas os sinais derivados do syzbot, portanto o escopo dos dois termos é diferente.

B. Priorização Não É Prova

Hits de regex, caminhos de alto risco e sobreposição com syzbot são todos sinais para ordenar a investigação. Uma pontuação alta não constitui um achado de segurança se o caminho de chamada real, privilégios, config do kernel, namespace ou disponibilidade de dispositivo não permitirem o alcance do atacante.

C. Reachability Antes da Classe de Bug

A auditoria primeiro verifica as fronteiras iniciadas em userspace, como syscall, ioctl, netlink, procfs, filesystem, BPF e hooks de driver. Somente depois avalia classes de bug como UAF, OOB, refcount, race, vazamento de informação e verificações de capability.

D. Um Ramo de Investigação por Vez

Uma unidade de investigação é limitada, por padrão, a um arquivo e seus callers, teardown e caminhos de free próximos. Follow-ups manuais recomendados pelo modelo são permitidos no máximo duas vezes. Essa limitação não visa reduzir a capacidade de exploração, mas manter as conclusões dentro de um escopo verificável.

E. Evidência Acima de Confiança

O prompt exige que um achado forte explique pelo menos os seguintes itens:

  1. entrypoint alcançável pelo atacante,
  2. campo controlado pelo atacante ou transição de lifetime,
  3. invariante de objeto, comprimento ou estado que é quebrada,
  4. impacto concreto, como corrupção, vazamento ou escalonamento de privilégios,
  5. por que as verificações existentes não impedem o ataque.

Se a evidência for insuficiente, o modelo retorna um único alvo para verificação em seguida, em vez de afirmar fortemente uma vulnerabilidade. Este é um contrato de evidência em nível de prompt; o parser atual não valida automaticamente a completude de cada evidência. Como a ingestão normaliza o veredito e o próximo alvo, a validação final da evidência é responsabilidade humana.

F. Linhagem de Design

O fluxo inicial de investigação partiu das ideias de análise por arquivo, expansão limitada de contexto e saídas estruturadas usadas pelo vulnhuntr da Protect AI [1]. Neste projeto, essas ideias não foram aplicadas diretamente à análise de aplicações Python, mas redesenhadas em torno da superfície do kernel alcançável por userspace, do lifetime de objetos do kernel, dos caminhos de teardown e da sobreposição com syzbot. Em particular, separar sinais de priorização da prova de vulnerabilidade e verificar reachability antes da classe de bug são as escolhas centrais de design do harness para kernel.

III. Arquitetura do Sistema

Arquitetura de Sinal Externo para Kernel Codex Harness

Fig. 1. A camada de Sinal Externo transforma observações calculadas antes da inferência do modelo em unidades de revisão ranqueadas. Ela aloca atenção, mas não estabelece prova de vulnerabilidade.

TABELA I — RESPONSABILIDADES DOS MÓDULOS PRINCIPAIS

MóduloResponsabilidade
targeting.pyExploração de arquivos do kernel e pontuação de sinais de caminho, padrão e syzbot
models.pyModelos de dados Candidate, Signal e ExternalSignal derivado do syzbot
bundle.pyGeração de manifest, índice de sessão e pacotes de prompt/snippet
prompting.pyPrompts de auditoria do kernel focados em reachability e invariantes
session.pyArmazenamento de estado de revisão pendente, histórico e profundidade de follow-up
ingest.pyNormalização estrita de veredito e próximo alvo
autopilot.pyGerenciamento de codex exec baseado em orçamento de tempo, logs, arquivamento e achados
syzbot.pyColeta de páginas públicas do syzbot e geração de cache JSON local
cli.pyConexão de comandos como scan, inspect, codex, loop, autopilot

IV. Metodologia

A. Descoberta e Pontuação de Candidatos

O scanner percorre arquivos .c e .h sob o diretório de includes do perfil. A pontuação de prioridade do arquivo f é conceitualmente composta da seguinte forma:

root@kitploit:~
Score(f) = Σ path_weight(f)
         + Σ line_signal_weight(f)
         + Σ syzbot_overlap_weight(f)

Essa pontuação não é uma medida de probabilidade ou explorabilidade. Cada item fornece apenas uma ordem relativa para o modelo decidir quais arquivos verificar primeiro. A implementação atual soma todas as correspondências em nível de linha e limita apenas os principais sinais exibidos no prompt. O recálculo do mesmo resultado pressupõe a mesma árvore de fontes, perfil e JSON do syzbot em cache. O peso do syzbot é aplicado posteriormente a arquivos que já se tornaram candidatos pelas heurísticas de caminho e linha; um hit do syzbot sozinho não gera novos arquivos candidatos.

Os principais sinais estáticos incluem:

  • ioctl, handlers compat, hooks de operações de arquivo
  • copy_from_user, copy_to_user, __user
  • kmalloc, kzalloc, kvmalloc, alocação de cache e caminhos de free
  • operações de refcount, atomic e kref
  • cálculos de tamanho/comprimento e famílias de memcpy
  • padrões de lock, RCU e lifetime assíncrono
  • fronteiras de BPF, skb, XDP e netlink
  • verificações de capability e namespace

B. Escopo Orientado por Perfil

Os perfis integrados são default, net, fs, io_uring, bpf e drivers. Cada perfil define caminhos de include, padrões, pesos e o número de sinais preservados por arquivo. Em vez de aplicar uma única política de pontuação a todo o kernel, os perfis refletem a superfície de ataque e as características de lifetime de cada subsistema.

C. Inteligência de Crashes

O syzbot-fetch extrai título, subsistema, tipo de bug e informações de arquivo:linha das páginas públicas de bugs do syzbot do projeto syzkaller [2] e as armazena em um cache JSON. A sobreposição exata de arquivo é um Sinal Externo forte; a sobreposição de subsistema é um Sinal Externo fraco. Como o dashboard ao vivo pode mudar, a unidade de reprodução é o JSON armazenado no momento da coleta. As informações de crash são apenas um ponto de partida para a caça de variantes, não evidência de novas vulnerabilidades.

D. Sessão e Contrato de Revisão

O scan gera um manifest de candidatos ranqueados e os principais pacotes de prompt. Cada prompt inclui o caminho do alvo, o motivo da pontuação, sinais de linha, contexto do syzbot e o procedimento de auditoria.

A resposta do modelo é normalizada para um dos seguintes vereditos:

  • cve_candidate
  • plausible_security_bug
  • latent_bug
  • not_cve_candidate
  • needs_more_context

A resposta inclui um único Single best next target e um breve resumo. Respostas antigas sem alvo pendente são arquivadas separadamente e não são vinculadas a novos alvos.

V. Implementação e Uso

A. Requisitos

  • Python 3.11 ou superior
  • Codex CLI [3] e autenticação ao usar o autopilot
  • Conexão de rede para coleta remota do dashboard do syzbot

B. Instalação

root@kitploit:~
git clone https://github.com/foxirain/linux-kernel-codex-harness.git
cd linux-kernel-codex-harness

python3 -m venv .venv
source .venv/bin/activate
python -m pip install .

Os JSONs de perfil integrados são incluídos no wheel. Regras JSON externas podem ser passadas com --config /path/to/profile.json.

C. Workflow Mínimo

root@kitploit:~
# 1. Crie uma sessão ranqueada.
kernel-harness scan /path/to/linux \
  --profile net \
  --limit 80 \
  --top 20 \
  --out artifacts

# 2. Inspecione os candidatos de alta prioridade.
kernel-harness inspect artifacts/session-YYYYMMDDTHHMMSSZ --top 10

# 3. Renderize um prompt focado.
kernel-harness codex artifacts/session-YYYYMMDDTHHMMSSZ \
  --rank 1 \
  --include-snippet

--limit define o número de candidatos mantidos no manifest; --top define o número de pacotes de prompt pré-gerados inicialmente. Pacotes de ranks posteriores também podem ser gerados sob demanda.

D. Autopilot com Orçamento de Tempo

root@kitploit:~
kernel-harness autopilot artifacts/session-YYYYMMDDTHHMMSSZ \
  --duration 30m \
  --per-run-timeout 10m \
  --include-snippet

O sandbox padrão é read-only. Use --sandbox workspace-write somente se a modificação de arquivos for estritamente necessária durante a análise.

E. Feed Opcional do syzbot

root@kitploit:~
kernel-harness syzbot-fetch https://syzkaller.appspot.com/upstream \
  --out artifacts/syzbot/upstream.json \
  --limit 50

kernel-harness scan /path/to/linux \
  --profile fs \
  --syzbot-json artifacts/syzbot/upstream.json \
  --out artifacts

F. Artefatos da Sessão

root@kitploit:~
artifacts/session-<timestamp>/
├── SESSION.md
├── targets.json
├── finding_template.json
├── review_state.json
├── codex_response.txt              # presente enquanto uma resposta está pendente
├── bundles/
│   ├── <rank>-<target>.md
│   └── <rank>-<target>.snippet.txt
├── responses/
└── autopilot/
    ├── AUTOPILOT_STATUS.txt
    ├── AUTOPILOT_PROGRESS.txt
    ├── AUTOPILOT_FINDINGS.txt
    ├── prompts/
    ├── exec/
    └── findings/

VI. Resultado Operacional e Verificação

Esta versão não permaneceu apenas como prova de conceito; foi usada em uma investigação real de vulnerabilidades no kernel Linux.

TABELA II — RESULTADO DE VULNERABILIDADE DIVULGADA

Resultado públicoÁrea afetadaSeveridade / CVSSVulnerabilidadeModelo de investigação
CVE-2026-31720Áudio de gadget USB · drivers/usb/gadget/function/f_uac1_legacy.cAlta 7.8 · CVSS 3.1 (NVD)O comprimento da solicitação controlado pelo host poderia estourar um objeto de pilha de quatro bytesAchado surgiu durante uma investigação assistida pela v1; validação e divulgação permaneceram conduzidas por humanos
Fonte do CVSS (verificada em 09/08/2026)
  • CVE-2026-31720: NVD CVSS 3.1 · 7.8 Alta · CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
  • A pontuação e o vetor oficiais divulgados foram transcritos; nenhum recálculo independente foi realizado.

A verificação não é um benchmark de precisão de detecção, mas sim um foco em regressões de implementação e capacidade de implantação.

TABELA III — ESCOPO DE VERIFICAÇÃO DE ENGENHARIA

Item de verificaçãoPropriedade esperada
Regressão de alocadoreskmalloc e kvmalloc detectados como sinais de alocador
Recursos de perfilCarregamento dos 6 perfis integrados a partir do checkout de fontes; smoke-test do perfil default a partir do wheel instalado
Contrato de vereditonot_cve_candidate não é confundido com um achado positivo
Política de follow-upPermite dois follow-ups manuais; bloqueia a terceira solicitação
Tratamento de respostas obsoletasRespostas sem alvo pendente são arquivadas e não reutilizadas
Padrão seguroO sandbox padrão do autopilot é read-only
Matriz de CISuíte de regressão executada em Python 3.11 e 3.12
root@kitploit:~
python -m unittest discover -s tests -v

O GitHub Actions executa regressões unitárias, instala o wheel em um novo ambiente e faz smoke-test do scan com o perfil default. O caso divulgado acima é um resultado operacional obtido em investigação real, mas não é um benchmark de precisão, recall ou taxa de descoberta de CVEs medido em um corpus representativo de árvores Linux.

VII. Considerações de Segurança

  • Recomenda-se manter o sandbox padrão read-only.
  • Não use --dangerously-bypass-approvals-and-sandbox em ambientes sem sandbox externo.
  • Comentários e identificadores de fontes não confiáveis também podem ser entradas do modelo; considere a possibilidade de prompt injection.
  • Achados gerados pelo modelo devem ser revalidados por humanos quanto a reachability e impacto antes de divulgação ou relatório.
  • Crashes do syzbot e pontuações heurísticas altas não devem ser citados como prova de vulnerabilidade.

VIII. Limitações e Ameaças à Validade

  1. Análise lexical. Não constrói AST real de C, grafo de chamadas ou fluxo de dados interprocedural.
  2. Viés de pontuação. Comentários, macros, tokens repetidos e arquivos grandes podem influenciar excessivamente a pontuação.
  3. Lacuna de reachability. Config do kernel, privilégios, namespace e disponibilidade de dispositivo não são modelados automaticamente.
  4. Fragilidade de dados externos. A integração com syzbot é afetada por mudanças na estrutura do HTML público.
  5. Dependência do modelo. A qualidade dos resultados depende do modelo usado, da interpretação do prompt e do contexto do repositório.
  6. Escopo da avaliação. Os testes atuais verificam regressões de software. O caso CVE divulgado é um resultado de uso real, mas não substitui uma avaliação estatística do desempenho de detecção de segurança.

IX. Retrospectiva

Desde a primeira versão registrada no histórico do Git, o objetivo esteve mais próximo de "controlar qual código revisar primeiro e quais evidências exigir" do que de "fazer o LLM encontrar vulnerabilidades sozinho". A investigação assistida pela v1 que descobriu o CVE-2026-31720 forneceu um caso de aplicação real da unidade de investigação estreita e do contrato de evidências. A v2 estendeu esse workflow para triagem ciente de proveniência, preservando o estado do repositório e referências conhecidas. Se eu fosse reimplementar agora, priorizaria:

  1. grafo de símbolos/chamadas baseado em tree-sitter ou Clang,
  2. normalização de pontuação considerando tamanho do arquivo e hits repetidos,
  3. separação das camadas review e runner para eliminar duplicação entre CLI e autopilot,
  4. manifest versionado e escrita atômica de estado,
  5. respostas do modelo e evidências estruturadas baseadas em JSON Schema,
  6. vinculação automática de crashes do syzbot, commits de correção e variantes próximas.

Ainda assim, o princípio central que quero manter é o Sinal Externo. Não deixar o LLM explorar vagamente toda a base de código; em vez disso, repetir unidades de investigação estreitas, guiadas por sinais externos ao modelo, com foco em reachability e invariantes.

X. Conclusão

O Kernel Codex Harness não substitui a detecção de vulnerabilidades no kernel Linux. Em vez disso, transforma o Sinal Externo em um ranqueamento explicável e limita a revisão do LLM a um processo de investigação curto e com estado. Essa estrutura foi usada em investigação real para descobrir o CVE-2026-31720. O principal resultado do projeto não está em reivindicar um novo algoritmo de análise, mas em definir a revisão de segurança com LLM como um problema de alocação de atenção por sinal externo, contrato de evidências e orquestração reproduzível, aplicado a um workflow de pesquisa real.

Apêndice A. Estrutura do Repositório

root@kitploit:~
.
├── .github/workflows/ci.yml
├── docs/
│   ├── assets/kernel-harness-architecture.svg
│   ├── AUTOPILOT.md
│   ├── CODEX_CLI.md
│   ├── CODEX_WORKFLOW.md
│   └── SYZBOT.md
├── kernel_harness/
│   ├── resources/
│   │   ├── linux-kernel-default.json
│   │   └── profiles/
│   ├── autopilot.py
│   ├── bundle.py
│   ├── cli.py
│   ├── ingest.py
│   ├── models.py
│   ├── prompting.py
│   ├── session.py
│   ├── syzbot.py
│   └── targeting.py
├── tests/test_regressions.py
├── README.md
└── pyproject.toml

Procedimentos operacionais detalhados podem ser encontrados em docs/.

Referências

[1] Protect AI, "vulnhuntr," repositório GitHub. https://github.com/protectai/vulnhuntr

[2] Google, "syzkaller and syzbot," repositório GitHub. https://github.com/google/syzkaller

[3] OpenAI, "Codex CLI." https://developers.openai.com/codex/cli/

Licença

Licenciado sob a Apache License 2.0.

Baixar ferramenta