Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2021-21017 — Preuve de concept d'exploit pour CVE-2021-21017 : confusion de type dans Adobe Reader conduisant à un débordement de tas via une baseURL de PDF malveillant avec un décalage UTF-16BE/ANSI. | Kitploit
Outils/GitHubGitHub/zeusbox/cve-2021-21017
Criminalistique MémoireAnalyse des VulnérabilitésExploitationExploitation d'Applications WebFuzzingExploitation de Binaires
GitHubzeusbox/cve-2021-21017

CVE-2021-21017

Preuve de concept d'exploit pour CVE-2021-21017 : confusion de type dans Adobe Reader conduisant à un débordement de tas via une baseURL de PDF malveillant avec un décalage UTF-16BE/ANSI.

Voir le dépôt
4412il y a 5 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2021-21017

Pas un autre bug de Byte Order Mark dans 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;
  }
  .............................................................
  .............................................................
}

Lors de la construction d'une URL absolue à partir d'une URL relative au baseURL d'un document PDF, destinée à être utilisée par des API comme : app.launchURL, document.submitForm ou app.media.createPlayer, si le baseURL semble être une chaîne UTF-16BE, l'URL relative est également traitée comme une chaîne UTF-16BE lors de la concaténation, alors qu'il s'agit en réalité d'une chaîne ANSI.

Cela peut d'une part conduire à une lecture hors limites. D'autre part, lors de l'allocation mémoire pour le buffer de destination, l'URL relative est « mesurée » comme une chaîne ANSI. Ce qui est bien sûr insuffisant si une lecture hors limites se produit. (chaîne + le terminateur NULL remplissant un bloc heap entier).

Qu'est-ce que cela signifie ?

Confusion de type => Lecture hors limites => Débordement de heap => FULL BUKAKE !

PoC fourni

Cela aboutit le plus souvent à un crash et parfois à l'écrasement du byteLength d'un ArrayBuffer à 0xFF.

Si vous avez des questions, n'hésitez pas à me contacter sur Twitter : https://twitter.com/Zeusb0x

Détection

Le catalogue du document PDF contiendra une entrée URI pointant vers une référence indirecte à un objet dictionnaire. Celui-ci aura à son tour une entrée Base, qui est le baseURL effectif. Il sera très probablement présent en notation hexadécimale et commencera par les caractères \xFE\xFF. (voir PoC). Heureusement, c'est le seul moyen de modifier le baseURL d'un document dans un contexte normal et non privilégié. Tenter de le faire depuis JavaScript lèvera une exception de sécurité.

Télécharger l’outil