
Preuve de concept d'exploitation pour un débordement de tampon basé sur la pile dans gmt_remote_dataset_id de GMT, démontrant un crash et une exécution de code potentielle via des noms de jeux de données spécialement conçus.
CVE-2026-33147 (Dépassement de tampon basé sur la pile dans gmt_remote_dataset_id)
Une vulnérabilité de dépassement de tampon basé sur la pile a été identifiée dans la fonction gmt_remote_dataset_id au sein de src/gmt_remote.c. Ce problème survient lorsqu'une chaîne de caractères spécialement conçue et de grande longueur est transmise comme identifiant de jeu de données (par exemple, via le module which), entraînant un crash ou une éventuelle exécution de code arbitraire.
La vulnérabilité est causée par l'utilisation non sécurisée de strcpy (ou d'opérations similaires sur chaînes sans limite) lors de la copie d'un nom de jeu de données contrôlé par l'utilisateur dans un tampon de pile de taille fixe file[PATH_MAX].
Lorsqu'une entrée dépasse PATH_MAX (généralement 4096 octets), elle écrase la trame de pile, y compris l'adresse de retour. Cela a été confirmé à l'aide d'AddressSanitizer (ASan), qui a signalé un stack-buffer-overflow.
Le script Python suivant utilisant PyGMT reproduit le crash :
import struct
from pygmt.clib import Session
with Session() as lib:
# Payload conçu pour provoquer un dépassement du tampon de pile
padding = "A" * 4096
fake_ret = struct.pack("<Q", 0x4141414141414141) * 100
payload = padding + fake_ret.decode("latin-1")
# Déclenchement du dépassement via le module 'which'
lib.call_module("which", [payload])
Il s'agit d'une vulnérabilité de sécurité mémoire.