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
CVE-2026-23416-POC — PoC para CVE-2026-23416 (linux kernel 6.17 – linux kernel 7 rc5) - vulnerabilidade descoberta por Antonius | Kitploit
Ferramentas/GitHubGitHub/bluedragonsecurity/cve-2026-23416-poc
Análise de VulnerabilidadesExploraçãoPapers e PesquisaAprendizado e EducaçãoExploração de Binários
GitHubbluedragonsecurity/cve-2026-23416-poc

CVE-2026-23416-POC

PoC para CVE-2026-23416 (linux kernel 6.17 – linux kernel 7 rc5) - vulnerabilidade descoberta por Antonius

Ver Repositório
813há 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

CVE-2026-23416 — PoC

mm/mseal: atualizar final do VMA corretamente ao mesclar

Vulnerabilidade descoberta por Antonius / Blue Dragon Security


Visão Geral

CampoDetalhe
CVE IDCVE-2026-23416
Subsistemamm/mseal — mm/vma.c
AfetadoLinux kernel 6.17 até 7.0-rc5
Corrigido emLinux 7.0-rc6, backports estáveis 6.18.21, 6.19.11
Acesso necessárioUsuário não privilegiado (UID 1000, sem capacidades)
Syscalls usadasmemfd_create, mmap, mseal
Reprodutibilidade100% determinística, < 1 segundo
Reservado2026-01-13
Publicado2026-04-02

Descrição da Vulnerabilidade

O bug reside em mseal_apply() dentro de mm/mseal.c. Ao iterar sobre VMAs para aplicar a syscall mseal(2), a função rastreia a posição usando curr_start e curr_end:

root@kitploit:~
/* Simplified pre-fix logic */
curr_end = vma->vm_end;
/* ... process VMA ... */
curr_start = curr_end;  /* advance to next VMA */

O problema: vma_modify_flags() — chamada durante a iteração — pode mesclar VMAs, alterando vma->vm_end no local. Isso faz com que o valor de curr_end capturado antes da mesclagem fique obsoleto. Na próxima iteração, curr_start é definido como o agora obsoleto curr_end, produzindo um endereço inicial incorreto.

Em kernels de depuração (CONFIG_DEBUG_VM), esse estado inconsistente do vmg dispara:

root@kitploit:~
VM_WARN_ON_VMG(middle &&
    ((middle != prev && vmg->start != middle->vm_start) ||
     vmg->end > middle->vm_end))

em mm/vma.c:830, produzindo um WARNING do kernel.

Em kernels de produção (WARN compilado como no-op), o curr_start obsoleto prossegue silenciosamente — significando que VM_SEALED pode ser aplicado a um intervalo de endereços incorreto sem nenhum erro visível, minando a garantia de segurança que mseal(2) foi projetado para fornecer.

Caminho de Chamada

root@kitploit:~
mseal(2)
  └─ do_mseal()              [mm/mseal.c]
       └─ mseal_apply()
            └─ vma_modify_flags()   [mm/vma.c]
                 └─ vma_modify()
                      └─ vma_merge_existing_range()
                           └─ VM_WARN_ON_VMG fires at line 830

Causa Raiz

root@kitploit:~
/* BEFORE fix — mm/mseal.c mseal_apply() */
curr_end = vma->vm_end;           // captured here
/* ... vma_modify_flags() may merge VMAs, changing vma->vm_end ... */
curr_start = curr_end;            // stale! merge is not reflected

A correção define curr_end = vma->vm_end incondicionalmente em cada iteração após qualquer mesclagem potencial, e adicionalmente fixa curr_start/curr_end como valores const derivados do intervalo de entrada e dos limites do VMA:

root@kitploit:~
/* AFTER fix */
curr_end = vma->vm_end;           // unconditional, always fresh

Layout do VMA Durante o Gatilho

O PoC constrói o seguinte layout antes da segunda chamada mseal():

root@kitploit:~
[0x21da6000 - 0x21de5fff]  VMA-A  (fd2, MAP_SHARED|MAP_FIXED) ← VM_SEALED after step 1
[0x21de6000 - 0x21e82fff]  VMA-B  (fd2, MAP_SHARED|MAP_FIXED) ← NOT sealed
[0x21e83000 - 0x21e84fff]  VMA-C  (leftover)

A segunda mseal(m2, 0x70000) tem como alvo [0x21da6000 – 0x21e15fff], abrangendo VMA-A (selado) até VMA-B (não selado). Dentro de mseal_apply(), o curr_end obsoleto de VMA-A é usado como curr_start ao processar VMA-B, criando o estado vmg inconsistente.


Impacto de Segurança

  1. Acessível a partir do userspace não privilegiado — requer apenas memfd_create + mmap + mseal, nenhum CAP_* necessário.
  2. mseal(2) é uma primitiva de segurança — ela protege a imutabilidade do VMA. Um erro lógico em sua aplicação significa que VM_SEALED pode ser silenciosamente mal aplicado ao abranger VMAs com estados de selamento mistos.
  3. Silencioso em produção — em kernels sem depuração, o estado inconsistente prossegue sem aviso, potencialmente deixando a árvore de VMA com estado de selamento incorreto.

Prova de Conceito

Arquivo: cve-2026-23416-poc.c

Compilação

root@kitploit:~
gcc -o poc cve-2026-23416-poc.c

Executar

root@kitploit:~
./poc

Saída Esperada (kernel de depuração com CONFIG_DEBUG_VM)

root@kitploit:~
============================================
CVE-2026-23416-POC
Discovered by : Antonius / Blue Dragon Security
  https://bluedragonsec.com
  https://github.com/bluedragonsecurity
============================================
[iter 0]
[iter 1]
...
[+] WARNING triggered N times total

Verifique dmesg por:

root@kitploit:~
WARNING: CPU: X PID: Y at mm/vma.c:830 vma_merge_existing_range+0x...

Requisitos

  • Linux kernel 6.17 – 7.0-rc5
  • CONFIG_DEBUG_VM=y para observar o VM_WARN_ON_VMG (em kernels de produção o bug ainda está presente, mas silencioso)
  • Nenhum root ou capacidades especiais necessários

Correção

Três commits de correção upstream (aplicados no 7.0-rc6 e backports estáveis):

CommitTree
40b3f4700e55stable
83737e34b83astable
2697dd8ae721stable

Versões do kernel corrigidas: 7.0-rc6, 6.18.21, 6.19.11


Referências

  • CVE-2026-23416 — cve.org
  • CVE-2026-23416 — NVD
  • Relatório técnico — Medium (@w1sdom)
  • Blue Dragon Security

Cronograma de Divulgação

DataEvento
2026-01-13ID CVE reservado
2026-04-02CVE publicado, commits de correção mesclados

Autor

Antonius (@w1sdom)
Blue Dragon Security — Tangerang, Indonésia
GitHub: bluedragonsecurity


Este PoC é liberado para fins educacionais e de pesquisa.

Baixar ferramenta