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-2021-21017 — Exploit de prueba de concepto para la confusión de tipos en Adobe Reader que conduce a desbordamiento de montón, con análisis detallado de causa raíz y guía de detección. | Kitploit
Herramientas/GitHubGitHub/zeusbox/cve-2021-21017
Forensia de MemoriaAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebFuzzingExplotación de Binarios
GitHubzeusbox/cve-2021-21017

CVE-2021-21017

Exploit de prueba de concepto para la confusión de tipos en Adobe Reader que conduce a desbordamiento de montón, con análisis detallado de causa raíz y guía de detección.

Ver Repositorio
44123hace 5 añosRevisado por Kitploit

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

CVE-2021-21017

No es otro bug de marca de orden de bytes de Adobe Reader :)

root@kitploit:~
# IA32 plugin, ver. 2020.013.20074.
char * __cdecl FUN_2581894c(char *base_url,LPCSTR rel_url)
{
  ............................................................
  ............................................................
  if ((base_url != (char *)0x0) && (rel_url != (LPCSTR)0x0)) {
    if ((*base_url == -2) && (base_url[1] == -1)) {
      iVar6 = bytes_len(base_url);
      pcVar7 = base_url + iVar6;
      pcVar8 = rel_url + 2;
      do {
        do {
          cVar3 = *pcVar8;
          pcVar1 = pcVar8 + 2;
          *pcVar7 = cVar3;
          pcVar2 = pcVar7 + 2;
          cVar4 = pcVar8[1];
          pcVar7[1] = cVar4;
          pcVar7 = pcVar2;
          pcVar8 = pcVar1;
        } while (cVar3 != '\0');
      } while (cVar4 != '\0');
    }
    else {
      lstrcatA(base_url,rel_url);
    }
    return base_url;
  }
  .............................................................
  .............................................................
}

Al construir una URL absoluta a partir de una relativa al baseURL de un documento PDF para ser usada por APIs como: app.launchURL, document.submitForm o app.media.createPlayer, si el baseURL parece ser una cadena UTF-16BE, la relativa también se trata como una cadena UTF-16BE al realizar la concatenación, aunque en realidad es una cadena ANSI.

Esto puede resultar en un acceso de lectura fuera de los límites (OOB) por un lado. Por otro lado, al asignar memoria para contener el búfer de destino, la URL relativa se "mide" como una cadena ANSI. Esto, por supuesto, no es suficiente si se produce una lectura OOB. (cadena + el terminador NULL llenando un bloque completo del heap).

¿Qué significa esto?

Confusión de tipos => Lectura fuera de límites => Desbordamiento de heap => ¡FULL BUKAKE!

PoC adjunto

Lo más frecuente es que provoque un fallo y, ocasionalmente, sobrescriba el byteLength de un ArrayBuffer a 0xFF.

Si tienes preguntas, no dudes en contactarme en Twitter: https://twitter.com/Zeusb0x

Detección

El catálogo del documento PDF tendrá una entrada URI que contiene una referencia indirecta a un objeto de diccionario. Este, a su vez, tendrá una entrada Base, que es el baseURL real. Lo más probable es que esté presente en notación hexadecimal y comience con los caracteres \xFE\xFF. (ver PoC). Afortunadamente, esta es la única forma de cambiar el baseURL de un documento en un contexto normal y sin privilegios. Intentar hacerlo desde JavaScript lanzará una excepción de seguridad.

Descargar herramienta