CVE-2025-60751CVE-2025-60751是GeographicLib 2.5版本中存在的一个高危缓冲区溢出漏洞,位于GeoConvert组件的DMS::InternalDecode函数中。GeographicLib是由Charles Karney开发的一套用于地理和大地测量计算的C++库,广泛应用于地图投影、坐标转换、大地线计算等场景。该漏洞允许远程攻击者通过网络向受影响应用程序发送特制的输入数据,触发DMS::InternalDecode函数中的缓冲区溢出,从而导致应用程序崩溃或拒绝服务(DoS)状态。
该漏洞的CVSS 3.1评分为7.5分,属于高危级别。其攻击向量为网络(AV:N),攻击复杂度低(AC:L),无需特权(PR:N)和用户交互(UI:N),表明该漏洞可以被远程未授权攻击者轻易利用。漏洞的主要影响在于可用性方面(Availability: High),可能导致应用程序或服务完全不可用。根据CVSS向量分析,机密性影响为无(C:N),完整性影响为无(I:N),但可用性影响为高(A:H),这意味着该漏洞主要用于发起拒绝服务攻击。
该漏洞已在GeographicLib的GitHub Issue #43中被报告,相关的概念验证(PoC)代码已在GitHub上公开(zer0matt/CVE-2025-60751仓库)。Debian项目也已发布安全公告(debian-lts-announce/2025/11/msg00004.html),提示用户尽快更新到修复版本。建议使用GeographicLib 2.5版本的用户密切关注官方补丁发布,并及时升级到安全版本。
该漏洞源于GeographicLib库中GeoConvert模块的DMS::InternalDecode函数在解析DMS(度-分-秒)格式坐标数据时,未对输入字符串的长度进行充分验证,导致缓冲区溢出。
DMS::InternalDecode函数负责将度分秒格式的坐标字符串解析为十进制度数值。在解析过程中,函数可能使用了固定大小的内部缓冲区来存储中间解析结果(如度、分、秒的字符串表示),当攻击者提供超长的DMS格式输入字符串时,解析过程中产生的中间数据将超出缓冲区边界,覆盖相邻内存区域。
具体利用方式如下:
1. 攻击者构造一个超长的DMS格式字符串作为输入,例如包含大量数字字符的度分秒表示;
2. 当应用程序调用GeographicLib的GeoConvert功能处理该输入时,DMS::InternalDecode函数被触发;
3. 函数内部对输入字符串进行解析时,由于缺少边界检查,超长数据溢出固定大小的内部缓冲区;
4. 溢出的数据覆盖栈上的返回地址或其他关键数据结构,导致程序崩溃或执行异常。
由于该漏洞无需认证且可远程触发,任何能够向使用GeographicLib的应用程序提交DMS格式坐标数据的攻击者均可利用此漏洞发起拒绝服务攻击。