SCW图标
英雄背景无分隔线
博客

심층 분석: 심각도가 높은 libcurl/curl 취약성 발견 및 수정

Laura Verheyde
发布于 2023 年 10 月 20 日
最后更新于 2026年3月9日

就在不久前,curl项目的首席开发者丹尼尔-斯滕伯格(Daniel Stenberg)向安全和开发界发出了警告,他发布了一份不幸的邮件,称10月11日发布的新版curl解决了两个影响巨大的安全漏洞,其中一个被他称为 "可能是长期以来最严重的curl安全漏洞"。

斯滕伯格博客上的一份报告指出,受影响版本的 curl 库容易出现基于堆的缓冲区溢出漏洞,这与 2002 年以来使用的 SOCKS5 代理协议的遗留问题有关。

作为一种命令行工具,curl 的使用可以追溯到 1998 年,它被广泛视为互联网的基础支柱。它的历史如此悠久,使用范围如此广泛,如果被发现存在漏洞,将对整个网络安全产生持续影响。

这一事件与Log4j 中发生的破坏性 Log4Shell 攻击事件有相似之处,后者是另一个在近两年后仍在被利用的脆弱依赖项。

>>>现在就通过我们的 curl 任务测试你的知识!‍ ‍

漏洞缓冲区溢出

该漏洞在CVE-2023-38545 下有详细说明,影响 curl 7.69.0 至 8.3.0(包括 8.3.0)版本。主要漏洞是一个基于堆的缓冲区溢出漏洞,初步报告指出,成功利用该漏洞可能会导致更具破坏性的远程代码执行(RCE)攻击。虽然这对威胁行为者来说是一个可能的工作流程,但这只是一个罕见的使用案例,而不是必然的。

也许唯一可以降低风险的是,恶意通信必须通过 SOCKS5 代理,而这种部署相对来说并不常见。

与 curl 漏洞利用类似,让我们看看这个缓冲区溢出解释器:

当curl被告知使用SOCKS5代理时,它会传递主机名并由代理解析。然而,如果主机名超过了255字节的限制,curl就会在本地解析主机名(如下面的代码片段所示:源代码)。

如果客户端和代理之间的握手速度较慢,则有可能将长主机名复制到内存缓冲区,而不是(较短的)解析地址。分配的内存部分只允许 255 字节的值,因此如果接收到的值超过这个限制,数据就会溢出内存缓冲区的边界。

>>> 在这个可玩任务中亲身体验一下吧 游戏任务!

缓冲区溢出是一种强大的攻击载体,在许多传统编程语言中普遍存在。在这种特殊情况下,利用缓冲区溢出会在某些情况下以 RCE 的形式造成更严重和更具破坏性的攻击,尽管这种途径仍不常见,也不太可能出现。

如何降低缓冲区溢出风险?

在此阶段,最优先的补救措施是为所有易受攻击的实例打上补丁,同时提醒您,curl 的使用非常普遍,您的系统组件在使用中是否包含该依赖关系不一定很明显,也不一定会做广告。在这种情况下,需要进行审计和后续修补。 

一般来说,缓冲区溢出缺陷可以通过使用Rust这样的内存安全语言来缓解,但对于像curl这样的庞大项目来说,移植到其他语言或临时重写并不现实。正如斯滕伯格(Stenberg)在讨论使用和支持更多内存安全语言编写的依赖项的可能性时所指出的那样,或者说逐步替换curl部分内容的替代方案,"......开发工作......目前正在以近乎冰川般的速度进行,这清楚地表明了所面临的挑战。在可预见的未来,curl仍将使用C语言编写。这不是一项小工程,其安全影响是巨大的。

安全错误可能会发生,也一定会发生,不可能总是依靠扫描仪和测试来发现所有可能的攻击向量。因此,我们对抗这些漏洞的最大武器就是不断提高安全意识和技能。

想进一步了解如何编写安全代码和降低风险?

试试我们的 堆溢出免费挑战.

如果您有兴趣获得更多免费的编码指南,请查看 安全代码教练来帮助您掌握安全编码的最佳实践。

查看资源
查看资源

curl 라이브러리의 영향을 받는 버전은 SOCKS5 프록시 프로토콜의 기존 문제와 관련된 HEAP 기반 버퍼 오버플로 취약점에 취약합니다.플레이 가능한 미션을 통해 이 취약성 유형을 찾아 해결하는 방법을 알아보세요.

您对更多内容感兴趣吗?

了解更多

Secure Code Warrior致力于在整个软件开发生命周期中保护代码,并帮助组织建立将网络安全置于首位的文化。无论您是应用安全管理员、开发人员、首席信息安全官还是任何与安全相关的人员,我们都能协助您的组织降低与不安全代码相关的风险。

预约演示
共享对象:
领英品牌社交x 标志
作者
Laura Verheyde
发布于 2023 年 10 月 20 日

Laura Verheyde 是Secure Code Warrior 的一名软件开发人员,主要负责研究漏洞并为Missions 和编码实验室创建内容。

共享对象:
领英品牌社交x 标志

就在不久前,curl项目的首席开发者丹尼尔-斯滕伯格(Daniel Stenberg)向安全和开发界发出了警告,他发布了一份不幸的邮件,称10月11日发布的新版curl解决了两个影响巨大的安全漏洞,其中一个被他称为 "可能是长期以来最严重的curl安全漏洞"。

斯滕伯格博客上的一份报告指出,受影响版本的 curl 库容易出现基于堆的缓冲区溢出漏洞,这与 2002 年以来使用的 SOCKS5 代理协议的遗留问题有关。

作为一种命令行工具,curl 的使用可以追溯到 1998 年,它被广泛视为互联网的基础支柱。它的历史如此悠久,使用范围如此广泛,如果被发现存在漏洞,将对整个网络安全产生持续影响。

这一事件与Log4j 中发生的破坏性 Log4Shell 攻击事件有相似之处,后者是另一个在近两年后仍在被利用的脆弱依赖项。

>>>现在就通过我们的 curl 任务测试你的知识!‍ ‍

漏洞缓冲区溢出

该漏洞在CVE-2023-38545 下有详细说明,影响 curl 7.69.0 至 8.3.0(包括 8.3.0)版本。主要漏洞是一个基于堆的缓冲区溢出漏洞,初步报告指出,成功利用该漏洞可能会导致更具破坏性的远程代码执行(RCE)攻击。虽然这对威胁行为者来说是一个可能的工作流程,但这只是一个罕见的使用案例,而不是必然的。

也许唯一可以降低风险的是,恶意通信必须通过 SOCKS5 代理,而这种部署相对来说并不常见。

与 curl 漏洞利用类似,让我们看看这个缓冲区溢出解释器:

当curl被告知使用SOCKS5代理时,它会传递主机名并由代理解析。然而,如果主机名超过了255字节的限制,curl就会在本地解析主机名(如下面的代码片段所示:源代码)。

如果客户端和代理之间的握手速度较慢,则有可能将长主机名复制到内存缓冲区,而不是(较短的)解析地址。分配的内存部分只允许 255 字节的值,因此如果接收到的值超过这个限制,数据就会溢出内存缓冲区的边界。

>>> 在这个可玩任务中亲身体验一下吧 游戏任务!

缓冲区溢出是一种强大的攻击载体,在许多传统编程语言中普遍存在。在这种特殊情况下,利用缓冲区溢出会在某些情况下以 RCE 的形式造成更严重和更具破坏性的攻击,尽管这种途径仍不常见,也不太可能出现。

如何降低缓冲区溢出风险?

在此阶段,最优先的补救措施是为所有易受攻击的实例打上补丁,同时提醒您,curl 的使用非常普遍,您的系统组件在使用中是否包含该依赖关系不一定很明显,也不一定会做广告。在这种情况下,需要进行审计和后续修补。 

一般来说,缓冲区溢出缺陷可以通过使用Rust这样的内存安全语言来缓解,但对于像curl这样的庞大项目来说,移植到其他语言或临时重写并不现实。正如斯滕伯格(Stenberg)在讨论使用和支持更多内存安全语言编写的依赖项的可能性时所指出的那样,或者说逐步替换curl部分内容的替代方案,"......开发工作......目前正在以近乎冰川般的速度进行,这清楚地表明了所面临的挑战。在可预见的未来,curl仍将使用C语言编写。这不是一项小工程,其安全影响是巨大的。

安全错误可能会发生,也一定会发生,不可能总是依靠扫描仪和测试来发现所有可能的攻击向量。因此,我们对抗这些漏洞的最大武器就是不断提高安全意识和技能。

想进一步了解如何编写安全代码和降低风险?

试试我们的 堆溢出免费挑战.

如果您有兴趣获得更多免费的编码指南,请查看 安全代码教练来帮助您掌握安全编码的最佳实践。

查看资源
查看资源

要下载报告,请填写以下表格。

我们请求您的同意,以便向您发送有关本公司产品及/或相关安全编码主题的信息。我们始终以最高标准谨慎处理您的个人信息,且绝不会出于营销目的向其他公司出售您的信息。

提交
scw 成功图标
SCW 错误图标
要提交表单,请启用'Analytics' Cookie。完成后,您可随时将其重新禁用。

就在不久前,curl项目的首席开发者丹尼尔-斯滕伯格(Daniel Stenberg)向安全和开发界发出了警告,他发布了一份不幸的邮件,称10月11日发布的新版curl解决了两个影响巨大的安全漏洞,其中一个被他称为 "可能是长期以来最严重的curl安全漏洞"。

斯滕伯格博客上的一份报告指出,受影响版本的 curl 库容易出现基于堆的缓冲区溢出漏洞,这与 2002 年以来使用的 SOCKS5 代理协议的遗留问题有关。

作为一种命令行工具,curl 的使用可以追溯到 1998 年,它被广泛视为互联网的基础支柱。它的历史如此悠久,使用范围如此广泛,如果被发现存在漏洞,将对整个网络安全产生持续影响。

这一事件与Log4j 中发生的破坏性 Log4Shell 攻击事件有相似之处,后者是另一个在近两年后仍在被利用的脆弱依赖项。

>>>现在就通过我们的 curl 任务测试你的知识!‍ ‍

漏洞缓冲区溢出

该漏洞在CVE-2023-38545 下有详细说明,影响 curl 7.69.0 至 8.3.0(包括 8.3.0)版本。主要漏洞是一个基于堆的缓冲区溢出漏洞,初步报告指出,成功利用该漏洞可能会导致更具破坏性的远程代码执行(RCE)攻击。虽然这对威胁行为者来说是一个可能的工作流程,但这只是一个罕见的使用案例,而不是必然的。

也许唯一可以降低风险的是,恶意通信必须通过 SOCKS5 代理,而这种部署相对来说并不常见。

与 curl 漏洞利用类似,让我们看看这个缓冲区溢出解释器:

当curl被告知使用SOCKS5代理时,它会传递主机名并由代理解析。然而,如果主机名超过了255字节的限制,curl就会在本地解析主机名(如下面的代码片段所示:源代码)。

如果客户端和代理之间的握手速度较慢,则有可能将长主机名复制到内存缓冲区,而不是(较短的)解析地址。分配的内存部分只允许 255 字节的值,因此如果接收到的值超过这个限制,数据就会溢出内存缓冲区的边界。

>>> 在这个可玩任务中亲身体验一下吧 游戏任务!

缓冲区溢出是一种强大的攻击载体,在许多传统编程语言中普遍存在。在这种特殊情况下,利用缓冲区溢出会在某些情况下以 RCE 的形式造成更严重和更具破坏性的攻击,尽管这种途径仍不常见,也不太可能出现。

如何降低缓冲区溢出风险?

在此阶段,最优先的补救措施是为所有易受攻击的实例打上补丁,同时提醒您,curl 的使用非常普遍,您的系统组件在使用中是否包含该依赖关系不一定很明显,也不一定会做广告。在这种情况下,需要进行审计和后续修补。 

一般来说,缓冲区溢出缺陷可以通过使用Rust这样的内存安全语言来缓解,但对于像curl这样的庞大项目来说,移植到其他语言或临时重写并不现实。正如斯滕伯格(Stenberg)在讨论使用和支持更多内存安全语言编写的依赖项的可能性时所指出的那样,或者说逐步替换curl部分内容的替代方案,"......开发工作......目前正在以近乎冰川般的速度进行,这清楚地表明了所面临的挑战。在可预见的未来,curl仍将使用C语言编写。这不是一项小工程,其安全影响是巨大的。

安全错误可能会发生,也一定会发生,不可能总是依靠扫描仪和测试来发现所有可能的攻击向量。因此,我们对抗这些漏洞的最大武器就是不断提高安全意识和技能。

想进一步了解如何编写安全代码和降低风险?

试试我们的 堆溢出免费挑战.

如果您有兴趣获得更多免费的编码指南,请查看 安全代码教练来帮助您掌握安全编码的最佳实践。

观看网络研讨会
开始
了解更多

点击下方链接下载此资源的PDF文件。

Secure Code Warrior致力于在整个软件开发生命周期中保护代码,并帮助组织建立将网络安全置于首位的文化。无论您是应用安全管理员、开发人员、首席信息安全官还是任何与安全相关的人员,我们都能协助您的组织降低与不安全代码相关的风险。

查看报告预约演示
查看资源
共享对象:
领英品牌社交x 标志
您对更多内容感兴趣吗?

共享对象:
领英品牌社交x 标志
作者
Laura Verheyde
发布于 2023 年 10 月 20 日

Laura Verheyde 是Secure Code Warrior 的一名软件开发人员,主要负责研究漏洞并为Missions 和编码实验室创建内容。

共享对象:
领英品牌社交x 标志

就在不久前,curl项目的首席开发者丹尼尔-斯滕伯格(Daniel Stenberg)向安全和开发界发出了警告,他发布了一份不幸的邮件,称10月11日发布的新版curl解决了两个影响巨大的安全漏洞,其中一个被他称为 "可能是长期以来最严重的curl安全漏洞"。

斯滕伯格博客上的一份报告指出,受影响版本的 curl 库容易出现基于堆的缓冲区溢出漏洞,这与 2002 年以来使用的 SOCKS5 代理协议的遗留问题有关。

作为一种命令行工具,curl 的使用可以追溯到 1998 年,它被广泛视为互联网的基础支柱。它的历史如此悠久,使用范围如此广泛,如果被发现存在漏洞,将对整个网络安全产生持续影响。

这一事件与Log4j 中发生的破坏性 Log4Shell 攻击事件有相似之处,后者是另一个在近两年后仍在被利用的脆弱依赖项。

>>>现在就通过我们的 curl 任务测试你的知识!‍ ‍

漏洞缓冲区溢出

该漏洞在CVE-2023-38545 下有详细说明,影响 curl 7.69.0 至 8.3.0(包括 8.3.0)版本。主要漏洞是一个基于堆的缓冲区溢出漏洞,初步报告指出,成功利用该漏洞可能会导致更具破坏性的远程代码执行(RCE)攻击。虽然这对威胁行为者来说是一个可能的工作流程,但这只是一个罕见的使用案例,而不是必然的。

也许唯一可以降低风险的是,恶意通信必须通过 SOCKS5 代理,而这种部署相对来说并不常见。

与 curl 漏洞利用类似,让我们看看这个缓冲区溢出解释器:

当curl被告知使用SOCKS5代理时,它会传递主机名并由代理解析。然而,如果主机名超过了255字节的限制,curl就会在本地解析主机名(如下面的代码片段所示:源代码)。

如果客户端和代理之间的握手速度较慢,则有可能将长主机名复制到内存缓冲区,而不是(较短的)解析地址。分配的内存部分只允许 255 字节的值,因此如果接收到的值超过这个限制,数据就会溢出内存缓冲区的边界。

>>> 在这个可玩任务中亲身体验一下吧 游戏任务!

缓冲区溢出是一种强大的攻击载体,在许多传统编程语言中普遍存在。在这种特殊情况下,利用缓冲区溢出会在某些情况下以 RCE 的形式造成更严重和更具破坏性的攻击,尽管这种途径仍不常见,也不太可能出现。

如何降低缓冲区溢出风险?

在此阶段,最优先的补救措施是为所有易受攻击的实例打上补丁,同时提醒您,curl 的使用非常普遍,您的系统组件在使用中是否包含该依赖关系不一定很明显,也不一定会做广告。在这种情况下,需要进行审计和后续修补。 

一般来说,缓冲区溢出缺陷可以通过使用Rust这样的内存安全语言来缓解,但对于像curl这样的庞大项目来说,移植到其他语言或临时重写并不现实。正如斯滕伯格(Stenberg)在讨论使用和支持更多内存安全语言编写的依赖项的可能性时所指出的那样,或者说逐步替换curl部分内容的替代方案,"......开发工作......目前正在以近乎冰川般的速度进行,这清楚地表明了所面临的挑战。在可预见的未来,curl仍将使用C语言编写。这不是一项小工程,其安全影响是巨大的。

安全错误可能会发生,也一定会发生,不可能总是依靠扫描仪和测试来发现所有可能的攻击向量。因此,我们对抗这些漏洞的最大武器就是不断提高安全意识和技能。

想进一步了解如何编写安全代码和降低风险?

试试我们的 堆溢出免费挑战.

如果您有兴趣获得更多免费的编码指南,请查看 安全代码教练来帮助您掌握安全编码的最佳实践。

目录

查看资源
您对更多内容感兴趣吗?

了解更多

Secure Code Warrior致力于在整个软件开发生命周期中保护代码,并帮助组织建立将网络安全置于首位的文化。无论您是应用安全管理员、开发人员、首席信息安全官还是任何与安全相关的人员,我们都能协助您的组织降低与不安全代码相关的风险。

预约演示下载
共享对象:
领英品牌社交x 标志
资源中心

有助于开始的资源

更多帖子
资源中心

有助于开始的资源

更多帖子