关键信息 漏洞描述 漏洞编号: CVE-2024-9681 漏洞名称: HSTS subdomain overwrites parent cache entry 描述: 当curl被要求使用HSTS时,子域的过期时间可能会覆盖父域的缓存条目,使其在预期之外提前或延迟过期。 影响 影响curl使用HSTS的场景,其中子域使用不安全的HTTP://方案,并与主机名如 以及 (其中第一个主机是第二个主机的子域)进行传输。 当 响应带有 头时,该漏洞可能导致子域的过期时间提前,并设置为父域 在curl的HSTS缓存中。 结果是HTTP访问到 可能会转换为HTTPS,但时间范围与原始服务器请求不同。如果 在过期时间停止支持HTTPS,curl可能会在错误设置的过期时间到期后尝试访问 ,从而导致在不安全的HTTP上意外切换回HTTPS。 信息 当触发时,这可能是一个潜在的次要DoS安全问题,当尝试使用HTTPS时,如果不再工作或需要保护的明文传输数据。 但 如上所述是故意设置为HSTS的,服务器应预期客户端可能会尝试在HSTS之外的时间范围内升级到HTTPS。 访问失败的场景尝试使用明文HTTP到域。明文HTTP是一种不安全的协议,应用程序不应依赖或信任此类响应,这降低了问题的严重性。 即使没有这个问题,服务器偶尔会设置HSTS头,但HTTPS提供问题,因此这是一个不需要curl问题的场景,应用程序需要逻辑来处理。应用程序可以通过简单地关闭HSTS来绕过这种情况。 这个漏洞不被认为是C语言错误(不太可能避免,如果没有使用C)。 这个缺陷也影响了curl命令行工具。 影响版本 受影响的版本: curl 7.74.0到8.10.1 不受影响的版本: curl = 8.11.0 引入版本: https://github.com/curl/curl/commit/7385610d0c74c6a25 解决方案 已修复: https://github.com/curl/curl/commit/a94973805df96269bf 推荐行动 立即采取以下行动之一,按优先级排序: - 升级curl和libcurl到版本8.11.0 - 应用到你的版本的补丁并重建 - 避免依赖HSTS 时间线 问题于2024年10月7日报告给curl项目。我们于2024年10月29日联系了distros@openwall。 curl 8.11.0于2024年11月6日UTC时间06:00发布,与本公告协调。 信用 报告人: newfunction 修复人: Daniel Stenberg 感谢大家!