PuppyIP 资源中心
开发工具与网络 5 分钟 发布于 2026-10-15

curl保存了Cookie却没读全?核对这条低危漏洞

Cookie文件存在,不代表curl把它完整读完。官方10月14日披露的低危漏洞,会让后续读取在超长Cookie行处提前结束;8.23.0已修复,三个维护分支也有明确例外。先核对实际运行版本与文件读写链路。

curl libcurl Cookie文件 CVE-2026-92386 会话排错

服务对象与地域限制

PuppyIP 仅面向海外合规企业及其授权人员提供服务,不面向中国大陆地区开放或提供代理服务。本服务仅限用于中国大陆境外的合法业务活动,严禁在中国大陆境内使用本服务。

代理 IP 或服务器位于境外,不改变上述限制。不得通过中转、转接、共享或转售向中国大陆境内的最终使用者提供本服务。使用前请阅读用户服务协议。

本文要点

  • 服务器设置的超长Cookie可被写入Netscape格式Cookie文件;后续curl用--cookie读取同一文件时,可能在该行处静默停止。
  • 被忽略的是该行之后的有效Cookie;服务器无法知道或控制它在文件中的相对位置,可能影响很多、少量或没有其他Cookie。
  • 通常影响8.7.0至8.22.0;8.20.X从8.20.2、8.16.X从8.16.2、8.14.X从8.14.3起不受此项影响,阈值只在各自分支内比较。
  • 官方建议升级8.23.0、应用补丁或不使用Cookie。不同工具、应用与容器中的curl/libcurl副本需分别确认。

为什么写进文件的Cookie,后续请求却没读到?

CVE-2026-92386的关键是两次操作之间的文件。远程HTTP服务器设置很长的Cookie名称和值后,curl可以把它写入Netscape格式的Cookie文件,生成超过自身逐行解析长度限制的记录。

后续另一次curl调用通过--cookie读取同一个文件时,遇到这条超长记录会静默提前结束解析,忽略文件中后面的有效Cookie。文件存在、写入成功,与下一次读取完整,是三个不同的判断。

curl把该漏洞评为Low。服务端无法知道或影响这条Cookie在文件中的相对位置,因此受影响的其他Cookie可能很多、很少,也可能一个都没有。不能把它概括成每次都丢失全部Cookie。

先看实际版本,再对照维护分支

官方列出的通常影响范围为curl 8.7.0至8.22.0,包含两个端点;早于8.7.0或从8.23.0起的版本不受此项影响。公告同时提醒,命令行工具受影响,应用也可能使用并不明显标出的libcurl。

三个维护分支另有例外:8.20.X从8.20.2起、8.16.X从8.16.2起、8.14.X从8.14.3起不受此项影响。每个阈值只适用于对应分支,不能推成所有大于8.14.3的版本都已修复。

先记录当前任务真正调用的工具或库、版本、包修订和安装来源,再逐项匹配。系统发行方可能自行回补修复;若版本字符串保留旧号,需要它的公告和包记录证明,不能只凭主机上另一个curl的版本下结论。

排查时,把写入和读取这两步接起来

第一步,在有权限检查的环境中确认是否使用Netscape格式Cookie文件,以及哪一次操作写入、哪一次操作读取。这个问题涉及后续读取同一文件,不能只看到登录失败就直接归因于漏洞。

第二步,核对读取任务是否用--cookie加载该文件,文件路径是否与预期一致,并确认读写两端各自的curl或libcurl版本。只更新交互终端里的工具,不会证明容器任务或嵌入式库也已更新。

第三步,如需检查文件或日志,在受控本地副本中比较前后记录与读取结果。Cookie可能携带会话信息,不要把原文件、完整请求头或登录资料上传到公开排错工具;也无需构造恶意Cookie来判断版本是否列入影响范围。

已发布的修复,和临时避开Cookie怎么选?

这不是尚待发布的修复计划。官方公告明确,curl 8.23.0于2026年10月14日发布,与漏洞披露同步;列出的选择是升级到8.23.0、把官方补丁应用到本地版本,或不使用Cookie。

有受支持的软件包更新时,沿安装来源的更新路径处理实际受影响副本;采用回补方案时,核对本条CVE对应的补丁记录。修复其他HTTP/2、代理认证或接口选择漏洞,不能自动证明这一项也已处理。

不使用Cookie是官方列出的替代措施,但依赖Cookie的登录与会话流程可能因此无法继续。先确认任务能否在该条件下工作,再决定是否暂停或调整流程;公告没有把删除文件、清空会话或反复重试列为可靠修复。

修复后,确认原任务能完整读写

在受控环境中核对更新后的实际副本与包记录,再检查原先的Cookie写入、后续读取和业务结果。版本修复与会话当前是否有效是不同问题,不能仅凭升级完成就宣布所有登录问题都已恢复。

举一个未执行的例子:定时任务先保存Cookie,下一次任务再加载。如果前半部分有效记录正常、后面的有效记录被忽略,文件解析值得检查;但仍需版本、格式和实际任务记录来判断,不能凭现象断言已遭利用。

这篇回答针对Cookie文件读取提前结束。若你还需要核对同次发布中的HTTP/2上传、HTTP代理凭据和interface复用问题,可查看来源中的既有8.23.0英文指南,分别判断各条漏洞。

资料来源

常见问题

8.20.2低于8.23.0,为什么可能不受影响?

本条公告明确,8.20.X分支从8.20.2起不受CVE-2026-92386影响;8.16.X从8.16.2起、8.14.X从8.14.3起也有对应例外。这些阈值不能跨分支套用,也不代表其他漏洞全部修复。

文件前面的Cookie能用,能否排除这个漏洞?

不能。该机制是在超长记录处停止解析,后续有效Cookie被忽略;服务端无法控制这条记录的相对位置。不过,部分Cookie正常也不能证明就是这个漏洞,还需核对实际版本、文件格式和读取路径。

换一个新Cookie文件,就算修好了么?

新文件本次能够读取,只能说明这次观察到的结果,不会修补受影响的软件。官方建议仍是升级、应用补丁或不使用Cookie;不要把删除原文件或重新登录当成持久修复,也不要把会话文件交给第三方验证。