Glibc 包含由 Aurora OS 开发人员准备的针对 memcpy 漏洞的修复程序

Aurora 移动操作系统(开放移动平台公司开发的 Sailfish 操作系统的一个分支)的开发人员分享了一个关于消除 严重漏洞 (CVE-2020-6096)在 Glibc 中,仅出现在 ARMv7 平台上。 有关该漏洞的信息早在 XNUMX 月份就已披露,但直到最近几天,尽管该漏洞已被修复,但仍无法修复 分配 危险程度很高,并且有一个漏洞利用的工作原型,允许您在 memcpy() 和 memmove() 函数中处理以某种方式格式化的数据时组织代码执行。 包修复 Debian и Ubuntu 尚未发布,并且该漏洞自公开披露之日起近两个月内以及自 Glibc 开发人员收到通知之日起五个月内仍未得到修复。

该漏洞出现在 ARMv7 的汇编语言中的 memcpy() 和 memmove() 实现中,是由于对确定复制区域大小的参数负值的错误处理造成的。 当公司 SUSE и 红帽 宣布他们的平台不受该问题的影响,因为他们不是针对 32 位 ARMv7 系统构建的,也没有参与创建修复程序。 许多嵌入式发行版的开发人员似乎都依赖 Glibc 团队,并且也没有积极参与修复的准备工作。

选项 修补 为了解决这个问题,华为几乎立即提出尝试将使用有符号操作数(bge 和 blt)操作的汇编指令替换为无符号类似物(blo 和 bhs)。 Glibc 维护者开发了一套测试来检查各种错误情况,之后发现华为补丁不合适,没有处理所有可能的输入数据组合。

由于 Aurora OS 是针对 ARM 的 32 位版本,其开发人员决定自行修复该漏洞并向社区提供解决方案。 困难在于,必须编写该函数的高效汇编语言实现,并考虑输入参数的各种选项。 已使用未签名指令重写了实现。 补丁 结果很小,但主要问题是保持执行速度并避免 memcpy 和 memmove 函数的性能下降,同时保持与所有输入值组合的兼容性。

3月初,准备了两个版本的修复程序,分别通过了Glibc维护者的测试框架和Aurora的内部测试套件。 XNUMX 月 XNUMX 日,选择了其中一个选项并 发送 到 Glibc 邮件列表。 一个星期后
建议的 另一个方法类似的补丁,纠正了华为之前试图修复的多架构实施中的问题。 测试花了一个月的时间 合法注册 由于补丁的重要性。
8月XNUMX日更正 被接受 到即将发布的 glibc 2.32 版本的主分支。 该实现包括两个补丁 - 第一 用于 ARMv7 的 memcpy 多架构实现,以及 第二 用于 ARM 的 memcpy() 和 memmove() 的通用汇编语言实现。

该问题影响数百万运行 Linux 的 ARMv7 设备,如果没有适当的更新,所有者在将它们连接到网络时就会面临风险(接受无大小限制的输入数据的网络可访问服务和应用程序可能会受到攻击)。 例如,识别该漏洞的研究人员准备的漏洞利用程序展示了如何通过发送非常大的 GET 请求来攻击汽车信息系统中内置的 HTTP 服务器,并获得系统的 root 访问权限。

来源: opennet.ru

添加评论