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-67183-Unauthenticated-Memory-Leak-Leads-To-Memory-Exhaustion-TinyWeb- — Aviso de Segurança: Vazamento de Memória Não Autenticado Leva ao Esgotamento de Memória (TinyWeb) | Kitploit
Ferramentas/GitHubGitHub/theopaid/cve-2026-67183-unauthenticated-memory-leak-leads-to-memory-exhaustion-tinyweb-
Análise de VulnerabilidadesSegurança WebPapers e PesquisaAprendizado e Educação
GitHubtheopaid/cve-2026-67183-unauthenticated-memory-leak-leads-to-memory-exhaustion-tinyweb-

CVE-2026-67183-Unauthenticated-Memory-Leak-Leads-To-Memory-Exhaustion-TinyWeb-

Aviso de Segurança: Vazamento de Memória Não Autenticado Leva ao Esgotamento de Memória (TinyWeb)

Ver Repositório
há 1 mêsAinda 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

Aviso de Segurança: Vazamento de Memória Não Autenticado Leva ao Esgotamento de Memória (TinyWeb)

ID CVE atribuído: CVE-2026-67183

Resumo

O TinyWeb aloca vários objetos ao analisar cada solicitação e nunca os libera. As estruturas de solicitação e cabeçalho não possuem destrutores, e nada as exclui após o envio da resposta. A memória do worker cresce a cada solicitação e nunca cai, portanto um fluxo constante de solicitações comuns leva o worker a ficar sem memória.

Software afetado

  • Projeto: TinyWeb (https://github.com/GeneralSandman/TinyWeb)
  • Versão informada pelo build: TnyWeb/0.0.8
  • Commits afetados: e48f15d (2018-11-20), onde essas estruturas e o analisador foram introduzidos, até a381da2 (2023-11-22, mais recente em master).
  • Versão corrigida: nenhuma.

Classificação

  • CWE-401: Ausência de Liberação de Memória Após o Tempo de Vida Efetivo
  • Pontuação base CVSS 4.0: 8.7 (Alta)
  • Vetor: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Modelo de ameaça

Um atacante remoto não autenticado que consiga acessar a porta TCP de escuta do servidor (9090 na configuração fornecida) e enviar solicitações a uma taxa sustentada modesta. Não são necessárias credenciais nem interação do usuário. As solicitações podem ser bem formadas; nenhum payload especial é necessário.

Detalhes técnicos

Para cada solicitação, HttpParser::execute() aloca um Url, um HttpHeaders e um HttpHeader por linha de cabeçalho:

root@kitploit:~
// src/tiny_http/http_parser.cc:1692
request->url = new Url;

// src/tiny_http/http_parser.cc:1709
request->headers = new HttpHeaders;

// src/tiny_http/http_parser.cc:1033-1040
HttpHeader* header = new HttpHeader;
return_val = parseHeader(stream, offset, len, header);
...
result->generals.push_back(header);   // stored in a raw-pointer list

HttpRequest e HttpHeaders são structs simples, sem destrutor; portanto, destruir um HttpRequest não libera nenhum deles:

root@kitploit:~
// src/tiny_http/http_parser.h:442
typedef struct HttpRequest {
    ...
    Url* url;
    HttpHeaders* headers;
    HttpBody* body;
} HttpRequest;

// src/tiny_http/http_parser.h:279-304
typedef struct HttpHeaders {
    ...
    std::list<HttpHeader*> generals;   // raw pointers, never deleted
    ...
} HttpHeaders;

WebProtocol mantém a solicitação em um std::shared_ptr<HttpRequest> (src/tiny_http/http_protocol.h:49). Quando a próxima solicitação a substitui, o ~HttpRequest padrão é executado e vaza url, headers, body e todos os HttpHeader em generals. O único delete request no código está em getDataFromProxy() (src/tiny_http/http_protocol.cc:194), uma função que o caminho da solicitação nunca chama. Buffers de resposta por solicitação do pool de memória contribuem para o crescimento.

Prova de conceito

  1. Inicie o servidor com a configuração fornecida (escutando na porta 9090). Anote o ID do processo de um worker.

  2. Registre a memória residente do worker:

root@kitploit:~
grep VmRSS /proc/<worker_pid>/status
  1. Envie um lote de solicitações comuns:
root@kitploit:~
for i in $(seq 1 2000); do
  curl -s -o /dev/null http://TARGET:9090/
done
  1. Leia o VmRSS novamente. Ele cresceu e não cai depois. Uma execução representativa:
root@kitploit:~
VmRSS before:              3704 kB
after  500 requests:       4788 kB
after 1000 requests:      22068 kB
after 1500 requests:      41652 kB
after 2000 requests:      59956 kB

O crescimento é monotônico, aproximadamente 20 a 28 kB por solicitação, sem platô. Repetir o lote continua a subida até que o worker seja morto por falta de memória.

Impacto

Um atacante não autenticado pode esgotar a memória de um worker com um fluxo sustentado de solicitações e forçar uma condição de falta de memória, negando o serviço. O tráfego comum também vaza memória ao longo do tempo, portanto a condição pode ocorrer sem um atacante.

Correção

Forneça destrutores a HttpRequest e HttpHeaders que liberem url, headers, body e todos os HttpHeader em generals, ou mantenha-os em smart pointers para que sejam liberados automaticamente. Libere também os buffers do pool de memória por solicitação assim que a resposta for enviada.

Baixar ferramenta