redyank/CVE-2026-33147

GitHub: redyank/CVE-2026-33147

针对GMT软件gmt_remote_dataset_id函数中栈缓冲区溢出漏洞(CVE-2026-33147)的概念验证代码,可验证该漏洞是否存在并重现崩溃。

Stars: 0 | Forks: 1

# CVE-2026-33147 CVE-2026-33147(gmt_remote_dataset_id 中的栈缓冲区溢出) ### 概述 在 `src/gmt_remote.c` 的 `gmt_remote_dataset_id` 函数中发现了一个基于栈的缓冲区溢出漏洞。当向数据集标识符传入一个特制的长字符串(例如,通过 `which` 模块)时,会触发此问题,导致程序崩溃或潜在的任意代码执行。 ### 详细信息 该漏洞是由于在将用户控制的数据集名称复制到固定大小的栈缓冲区 `file[PATH_MAX]` 时,不安全地使用了 `strcpy`(或类似的非受限字符串操作)造成的。 - 易受攻击函数:`gmt_remote_dataset_id` - 易受攻击文件:`src/gmt_remote.c` - 根本原因:在复制到栈缓冲区之前缺乏输入长度验证。 当输入超过 `PATH_MAX`(通常为 4096 字节)时,它会覆盖栈帧,包括返回地址。这一点已通过 AddressSanitizer (ASan) 得到确认,其报告了 stack-buffer-overflow(栈缓冲区溢出)。 ### PoC 以下使用 PyGMT 的 Python 脚本可重现该崩溃: ``` import struct from pygmt.clib import Session with Session() as lib: # Payload designed to overflow the stack buffer padding = "A" * 4096 fake_ret = struct.pack("
标签:AddressSanitizer, ASan, CVE-2026-33147, GMT, PATH_MAX, PyGMT, Python, strcpy, 内存安全漏洞, 拒绝服务, 无后门, 栈缓冲区溢出, 编程工具, 网络安全, 输入验证缺失, 远程代码执行, 逆向工具, 隐私保护