
Prueba de concepto de explotación para un desbordamiento de búfer basado en pila en gmt_remote_dataset_id de GMT, que demuestra un fallo y una posible ejecución de código mediante nombres de conjuntos de datos manipulados.
CVE-2026-33147 (Desbordamiento de búfer basado en pila en gmt_remote_dataset_id)
Se identificó una vulnerabilidad de desbordamiento de búfer basado en pila en la función gmt_remote_dataset_id dentro de src/gmt_remote.c. Este problema ocurre cuando se pasa una cadena larga especialmente diseñada como identificador de conjunto de datos (por ejemplo, a través del módulo which), lo que provoca un bloqueo o una posible ejecución de código arbitrario.
La vulnerabilidad es causada por el uso inseguro de strcpy (u operaciones de cadena sin límites similares) al copiar un nombre de conjunto de datos controlado por el usuario en un búfer de pila de tamaño fijo file[PATH_MAX].
Cuando una entrada supera PATH_MAX (normalmente 4096 bytes), sobrescribe el marco de pila, incluida la dirección de retorno. Esto se confirmó usando AddressSanitizer (ASan), que informó un desbordamiento de búfer de pila (stack-buffer-overflow).
El siguiente script de Python que usa PyGMT reproduce el bloqueo:
import struct
from pygmt.clib import Session
with Session() as lib:
# Payload diseñado para desbordar el búfer de pila
padding = "A" * 4096
fake_ret = struct.pack("<Q", 0x4141414141414141) * 100
payload = padding + fake_ret.decode("latin-1")
# Activar el desbordamiento a través del módulo 'which'
lib.call_module("which", [payload])
Esta es una vulnerabilidad de seguridad de memoria.