CVE-2025-67125CVE-2025-67125是docopt.cpp库中的一个有符号整数溢出漏洞,存在于LeafPattern::match函数中(位于docopt_private.h文件)。该漏洞在合并出现计数器时触发,当默认计数器值为LONG_MAX再加上用户输入的第一个参数(如-v/--verbose)时,会导致有符号整数溢出,造成计数器回绕为负数或无界值。这种异常行为会影响依赖出现次数限制、速率限制或安全开关的应用程序逻辑,可能导致安全策略绕过。在启用了UBSan或-ftrapv等 sanitizer的加固构建中,该溢出还会导致进程异常终止,造成拒绝服务(DoS)攻击效果。攻击者需要通过本地交互方式触发此漏洞,无需特殊认证权限。
该漏洞的根本原因在于docopt.cpp库在处理命令行参数出现次数时使用了有符号整数类型。当LeafPattern::match函数合并occurrence counters时,如果默认值为LONG_MAX(最大长整型值),再加上用户提供的参数计数(如第一个-v/--verbose参数),有符号整数会发生溢出。在C++中,有符号整数溢出是未定义行为,可能导致计数器回绕为负数或极小值。这种回绕会破坏应用程序中基于出现次数实现的限制逻辑,例如:循环次数限制可能被绕过导致无限循环,安全开关可能被意外触发或禁用,速率限制机制可能失效。由于攻击向量为本地且需要用户交互,攻击复杂度较低,但影响范围取决于具体应用程序对docopt.cpp的使用方式。