新版本添加了“--retry-all-errors”选项,以便在发生任何错误时重试操作,并修复了两个漏洞:
-
漏洞 CVE-2020-8177 允许您在访问攻击者控制的服务器时覆盖系统中的本地文件。 仅当同时使用“-J”(“-remote-header-name”)和“-i”(“-head”)选项时才会出现此问题。 “-J”选项允许您使用标题中指定的名称保存文件
“内容处置”。 如果同名文件已经存在,curl程序通常会拒绝执行覆盖,但如果存在“-i”选项,则检查逻辑被破坏,文件被覆盖(检查是在阶段进行的)接收响应正文,但使用“-i”选项时,首先显示 HTTP 标头,并在开始处理响应正文之前有时间保存)。 只有 HTTP 标头被写入文件,但服务器可以发送任意数据而不是标头,并且它们将被写入。 -
漏洞 CVE-2020-8169 可能会导致某些站点访问密码(Basic、Digest、NTLM 等)泄露到 DNS 服务器。 通过在密码中使用“@”符号,该符号也用作 URL 中的密码分隔符,当触发 HTTP 重定向时,curl 会将“@”符号后面的密码部分与域名一起发送以进行解析名字。 例如,如果您提供密码“passw@rd123”和用户名“dan”,curl 将生成 URL“https://dan:passw@[电子邮件保护]/path”而不是“https://dan:passw%[电子邮件保护]/path”并将发送请求来解析主机”[电子邮件保护]”而不是“example.com”。当启用相对 HTTP 重定向器的支持(通过 CURLOPT_FOLLOWLOCATION 禁用)时,就会出现此问题。 如果使用传统 DNS,则 DNS 提供商和能够拦截传输网络流量的攻击者可以获得有关部分密码的信息(即使原始请求是通过 HTTPS 进行的,因为 DNS 流量未加密)。 当使用 DNS-over-HTTPS (DoH) 时,泄漏仅限于 DoH 运营商。
来源: opennet.ru