最近在流行的 curl 命令行工具和库中发现的一个漏洞(被跟踪为 CVE-2024-11053,CVSS 得分为 9.1)可能会导致用户凭据意外暴露。该漏洞源于使用 .netrc 文件存储凭据与 curl 处理 HTTP 重定向之间的交互作用。
在特定情况下,当 curl 被配置为使用 .netrc 文件并跟踪重定向时,它可能会无意中将初始主机的密码泄漏给重定向主机。如果.netrc文件包含重定向目标主机名的条目,但省略了密码或登录名和密码,就会发生这种情况。
举例说明:
考虑这样一种情况:curl 传输到 a.tld 后重定向到 b.tld。在 .netrc 文件中,a.tld 的登录名带有密码,而 b.tld 的登录名则没有密码。在这种情况下,curl 会在随后向 b.tld 的传输中错误地使用 a.tld 的密码,从而可能将其暴露给重定向主机。
受影响的版本:
该漏洞影响curl 6.5至8.11.0版本。6.5 之前和 8.11.1 及更高版本不受影响。
解决方案:
该问题已在curl 8.11.1版本中得到解决。强烈建议用户升级到该版本,或应用提供的补丁并重建 curl。作为解决方法,避免使用 .netrc 文件和重定向。
影响:
由于 curl 和 libcurl 被许多应用程序广泛使用,而且通常没有明确提及,因此该漏洞带来了重大风险。凭证的潜在暴露可能导致未经授权的访问和敏感信息的泄露。
建议:
- 立即将 curl 和 libcurl 升级到 8.11.1 版本。
- 如果无法升级,则应用补丁并重建 curl。
- 作为临时缓解措施,禁止在重定向时使用 .netrc 文件。
更新:
CISA 将 CVE-2024-11053 从 9.1 降至 3.4。