Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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é.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
gdcm-security-poc — Package privé de reproduction de désinfectant de bout en bout pour six constats GDCM | Kitploit
Outils/GitHubGitHub/abhinavagarwal07/gdcm-security-poc
Analyse StatiqueAnalyse Dynamique (Sandboxing)Criminalistique MémoireAnalyse des VulnérabilitésExploitationFuzzingAnalyse de BinairesArticles et RechercheApprentissage et Éducation
GitHubabhinavagarwal07/gdcm-security-poc

gdcm-security-poc

Package privé de reproduction de désinfectant de bout en bout pour six constats GDCM

Voir le dépôt
61il y a 21 joursPas encore vérifié

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

Constats GDCM 1-6 : package de reproduction

Six défauts de parseur/codec dans GDCM, reproduits sur la v3.2.6 sous forme d'échecs de sanitizer ou de vérifications de propagation bornées. Chaque déclencheur automatisé dispose d'un contrôle quasi-valide qui ne produit pas le signal vulnérable. Le constat 1 inclut également une primitive de flux de contrôle instrumentée.

Destiné à la revue par les mainteneurs et les coordinateurs de vulnérabilités. Lire SAFETY.md avant d'exécuter quoi que ce soit.

Cibles épinglées

manifest/targets.env :

NomRévisionDescription
vulnerable9c71b163tag v3.2.6
master2cd05d13instantané amont master examiné statiquement ; matrice d'exécution en attente
fixednon définià renseigner uniquement lorsqu'un commit de remédiation revu existe

master est un instantané daté, pas une branche mobile. Les deux révisions sont accessibles depuis le dépôt public, donc bootstrap.sh peut préparer l'une ou l'autre sans aucune source privée.

Périmètre des constats

Les preuves d'exécution dans ce dépôt concernent la v3.2.6. Les plages plus larges ci-dessous proviennent de l'inspection de l'historique des sources ; les motifs impliqués subsistent également dans l'instantané master épinglé.

#CWEPlage inspectée dans les sourcesChemin requis
1CWE-787v3.0.4 à v3.2.7lecture multi-trames RLE YBR_FULL_422
2CWE-787v2.0.16 à v3.2.7encodage/transcodage JPEG2000
3CWE-125v2.0.5 à v3.2.7analyse de palette segmentée ; l'application de la LUT expose les valeurs propagées
4CWE-787v2.0.8 à v3.2.7ImageRegionReader::ReadIntoBuffer ; lié à la validation de précision incomplète après CVE-2024-22373
5CWE-674v2.0.4 ou antérieur à v3.2.7analyse ordinaire de séquences imbriquées
6CWE-369v2.0.4 ou antérieur à v3.2.7analyse RLE ordinaire avec NumSegments=0

Contenu

  • fixtures/ - les entrées DICOM inertes, épinglées par SHA-256 dans manifest/expectations.json et vérifiées avant chaque exécution de déclencheur
  • generators/ - générateurs de sources déterministes et sans dépendances pour chaque fixture
  • harnesses/ - harnais minimaux de lecture/encodage/décodage ; le constat 2 est présenté à la fois via la CLI gdcmconv et via l'API de transcodage de la bibliothèque qu'un serveur appellerait
  • manifest/expectations.json - commandes lisibles par machine, signaux décisifs et critères d'acceptation pour la cible fixed
  • scripts/ - préparation des sources épinglées, builds avec sanitizer, exécution bornée, nettoyage
  • evidence/ - résultats concis déjà observés, avec les cibles non testées indiquées explicitement
  • LICENSE - licence MIT

Prérequis

Un environnement de build Linux ou macOS jetable avec Git, Python 3, CMake 3.20+, Ninja et une chaîne d'outils C++11 (Clang ou GCC). Sur Ubuntu : git python3 cmake ninja-build clang zlib1g-dev. Définir CC/CXX pour utiliser GCC à la place.

La préparation des sources clone via HTTPS sauf si GDCM_SOURCE_REPO pointe vers un clone local existant. Aucun hôte SSH n'est utilisé.

Préparation et build

Ces commandes préparent uniquement les sources et les artefacts de build ; elles n'ouvrent aucune fixture.

./scripts/build-target.sh vulnerable asan  debug
./scripts/build-target.sh vulnerable ubsan debug
./scripts/build-target.sh master     asan  debug
./scripts/build-target.sh master     ubsan debug

Le troisième argument est le profil. debug correspond à -O0 -g ; release correspond à -O2 -g -DNDEBUG, ce qui élide les gdcm_debug_assert() de GDCM et correspond à la façon dont les distributions compilent la bibliothèque. Exécuter la matrice sous les deux profils répond à la première question que pose un mainteneur, à savoir si les rapports sont un artefact d'un build avec assertions activées.

GDCM_SUPPORT_BROKEN_IMPLEMENTATION=ON est la valeur par défaut de GDCM lui-même et est laissée telle quelle. Remplacer le parallélisme conservateur avec JOBS=8.

Chaque build écrit build-info.json (révision, compilateur, flags, plateforme) dans son arbre de build GDCM, et chaque résumé d'exécution l'incorpore, de sorte que les preuves archivées sont auto-descriptives.

Exécution

export GDCM_REPRO_ACK=I_UNDERSTAND_THIS_CRASHES_A_LOCAL_PROCESS

./scripts/run-matrix.sh vulnerable master --profile debug   # all automated cases
./scripts/run-one.sh vulnerable f1                          # one trigger
./scripts/run-one.sh vulnerable f1 --control                # its control

run-matrix.sh exécute chaque cas automatisé pour chaque cible, ne s'arrête pas au premier échec, et écrit _runs/matrix-<stamp>.json ainsi qu'un fichier rendu _runs/matrix-<stamp>.md. Le cas f1-exploit en deux étapes reste manuel et est signalé comme tel plutôt que d'être mal classé comme un cas automatisé en échec.

Chaque processus enfant a les core dumps désactivés et un délai d'expiration de 15 secondes ; le constat 5 reçoit en plus une limite de pile bornée. Les sorties restent sous _runs/. Le classificateur fait correspondre la classe de sanitizer et la fonction impliquée, jamais les adresses, les PID ou les numéros de ligne source.

Pour vulnerable, un cas passe lorsque le signal décisif apparaît et que son contrôle reste propre. Pour master, le runner enregistre une observation plutôt qu'un verdict prédéclaré. Pour fixed, un cas passe uniquement lorsque le signal est absent, qu'aucun autre sanitizer ou signal fatal n'apparaît, et que le harnais renvoie un résultat propre autorisé. Ces règles sont provisoires tant que FIXED_REV ne désigne pas un correctif réel ; elles doivent être revues au regard du comportement de rejet-ou-traitement prévu par ce correctif.

Cas

CasConstatCe qu'il montre
f11écriture tas ASan dans RLECodec::DecodeFragment
f1-exploit1écrasement instrumenté d'objet adjacent et contrôle de branche indirecte (Linux x86-64)
f22écriture tas ASan dans opj_write_from_memory via gdcmconv --j2k
f2-lib2la même écriture via ImageChangeTransferSyntax::Change
f33lecture tas ASan dans l'expansion de palette segmentée
f3-propagation3des octets hors limites atteignent les pixels décodés, rapportés sous forme de comptage
f3-sentinel3un mot de garde connu et borné franchit la limite logique de la LUT
f44écriture tas ASan dans le décodage de région JPEG2000
f55épuisement de pile ASan sur des éléments de séquence imbriqués
f66division par zéro UBSan dans le décodage RLE ; SIGFPE sur x86

Deux harnais supplémentaires relèvent de la recherche d'exploitabilité plutôt que de cas de reproduction, et ne se compilent que dans le profil sans sanitizer sur Linux x86-64 :

HarnaisConstatCe qu'il établit
finding01_groom1l'adjacence glibc testée, observée via des hooks d'enregistrement d'allocations
finding03_leak3une surlecture de 131070 octets peut exposer un pointeur de bibliothèque spécifique au build

Preuves conservées

evidence/v3.2.6-macos-arm64-debug.md consigne la matrice debug v3.2.6 complète, y compris chaque contrôle et les deux vérifications bornées de propagation du constat 3.

evidence/v3.2.6-linux-x86_64-finding01-groom.md et evidence/v3.2.6-linux-x86_64-finding03-leak.md consignent les deux résultats d'exploitabilité ci-dessous. Les résultats pour le master actuel, la matrice complète en profil release et f1-exploit ne sont pas revendiqués tant que leurs transcriptions ne sont pas conservées.

Nettoyage

./scripts/clean.sh

Le nettoyage refuse de s'exécuter sans le marqueur du package et ne supprime que _work, _build, _generated, _runs et les caches de bytecode Python sous ce dépôt. Les preuves conservées sous evidence/ ne sont pas supprimées.

Télécharger l’outil