Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-67184-Unauthenticated-NULL-Pointer-Dereference-Crashes-the-Server-TinyWeb- — Aviso de seguridad: desreferencia de puntero NULL no autenticada provoca un bloqueo del servidor (TinyWeb) | Kitploit
Herramientas/GitHubGitHub/theopaid/cve-2026-67184-unauthenticated-null-pointer-dereference-crashes-the-server-tinyweb-
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPapers e InvestigaciónAprendizaje y Educación
GitHubtheopaid/cve-2026-67184-unauthenticated-null-pointer-dereference-crashes-the-server-tinyweb-

CVE-2026-67184-Unauthenticated-NULL-Pointer-Dereference-Crashes-the-Server-TinyWeb-

Aviso de seguridad: desreferencia de puntero NULL no autenticada provoca un bloqueo del servidor (TinyWeb)

Ver Repositorio
5hace 1 mesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Aviso de seguridad: La desreferencia de puntero NULL no autenticada provoca el bloqueo del servidor (TinyWeb)

ID de CVE asignado: CVE-2026-67184

Resumen

Cuando TinyWeb no puede analizar una línea de solicitud, devuelve un error pero deja el puntero URL de la solicitud establecido en NULL. El llamador ignora el error y pasa la solicitud al constructor de respuestas, que desreferencia ese puntero NULL y bloquea el worker. Unas pocas solicitudes malformadas derriban todo el servidor, y este no se recupera.

Software afectado

  • Proyecto: TinyWeb (https://github.com/GeneralSandman/TinyWeb)
  • Versión informada por la compilación: TnyWeb/0.0.8
  • Commits afectados: e48f15d (2018-11-20), donde se introdujeron este analizador y la ruta de respuesta, hasta a381da2 (2023-11-22, el más reciente en master).
  • Versión corregida: ninguna.
  • Clasificación

    • CWE-476: Desreferencia de puntero NULL
    • Puntuación base CVSS 4.0: 8.7 (Alta)
    • Vector: 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 amenaza

    Un atacante remoto no autenticado que pueda alcanzar el puerto TCP de escucha del servidor (9090 en la configuración distribuida). No se requieren credenciales ni interacción del usuario.

    Detalles técnicos

    HttpParser::execute() asigna el objeto URL solo después de que la línea de solicitud se haya analizado correctamente. Una versión HTTP malformada hace que la comprobación de versión falle y salte a la etiqueta de error, que devuelve -1 antes de que se ejecute la asignación:

    root@kitploit:~
    // src/tiny_http/http_parser.cc:1401  (the "H" of "HTTP" is expected here)
    checkOrGoError((ch == 'H'));         // false -> goto error
    
    // src/tiny_http/http_parser.cc:1692  (skipped by the goto above)
    request->url = new Url;
    
    // src/tiny_http/http_parser.cc:1750-1753
    error:
        LOG(Debug) << "http request content is invalid\n";
        return -1;
    

    El HttpRequest se crea con std::make_shared<HttpRequest>(), que lo inicializa por valor, por lo que url permanece NULL cuando se omite la asignación.

    WebProtocol::dataReceived() registra el valor de retorno pero llama a buildResponse() de todos modos:

    root@kitploit:~
    // src/tiny_http/http_protocol.cc:57-61
    valid = m_nParser.execute(data.c_str(), begin, data.size(), m_pRequest.get());
    valid_requ = (valid == -1) ? false : true;
    
    // src/tiny_http/http_protocol.cc:75
    m_nResponser.buildResponse(m_pRequest.get(), valid_requ, m_pResponse.get());
    

    buildResponse() recibe valid_requ == false pero nunca lo comprueba, y desreferencia el puntero URL NULL:

    root@kitploit:~
    // src/tiny_http/http_responser.cc:66
    Url* url = req->url;              // NULL
    
    // src/tiny_http/http_responser.cc:83
    if (url->field_set & (1 << HTTP_UF_PATH)) {   // SIGSEGV
    

    El proceso worker se bloquea en este acceso. No se reinicia a un estado de servicio, por lo que una vez que los workers desaparecen, el servidor deja de responder.

    Prueba de concepto

    1. Inicia el servidor con la configuración distribuida (escuchando en el puerto 9090).

    2. Confirma que responde a una solicitud normal:

    root@kitploit:~
    curl http://TARGET:9090/
    
    1. Envía una solicitud cuyo token de versión está malformado. XTTP/1.1 falla la comprobación de versión después de que la línea de solicitud ya haya pasado al modo de solicitud:
    root@kitploit:~
    printf 'GET / XTTP/1.1\r\n\r\n' | nc TARGET 9090
    
    1. Repite el paso 3 unas cuantas veces para agotar el grupo de workers y, a continuación, reintenta la solicitud normal del paso 2. Ahora se agota el tiempo de espera sin respuesta, porque todos los workers se han bloqueado.

    Un depurador adjunto a un worker muestra el bloqueo en la desreferencia NULL:

    root@kitploit:~
    #0 HttpBuilder::buildResponse (valid_requ=false) at src/tiny_http/http_responser.cc:83
    #1 WebProtocol::dataReceived (data="GET / XTTP/1.1\r\n...") at src/tiny_http/http_protocol.cc:75
    

    Impacto

    Un atacante no autenticado puede bloquear los workers del servidor con unas pocas solicitudes cortas y mantener el servicio fuera de línea reenviándolas. Esto es una denegación de servicio.

    Remediación

    En dataReceived(), cuando valid_requ sea falso, construir una respuesta de error y retornar en lugar de llamar a buildResponse(). En buildResponse(), comprobar si req->url es NULL antes de usarlo. Asignar el objeto URL antes de que el análisis pueda fallar también cerraría la brecha.

    Descargar herramienta