提问人:Motti 提问时间:10/25/2023 最后编辑:Motti 更新时间:10/25/2023 访问量:68
CVE-2023-4039 是否会影响现有二进制文件?
Does CVE-2023-4039 affect existing binaries?
问:
我们的安全扫描程序报告 docker 映像容易受到 CVE-2023-4039 的攻击:
面向 AArch64 的基于 GCC 的工具链中的功能出现故障,允许攻击者利用应用程序中动态大小的局部变量中的现有缓冲区溢出,而不会检测到此漏洞。此堆栈保护程序故障仅适用于 C99 样式的动态大小局部变量或使用...
-fstack-protector
alloca()
OpenSuse 声称这个漏洞已修补,但我不明白这是怎么回事。如果漏洞出现在编译器的代码生成中,这是否意味着使用此编译器创建的所有二进制文件都容易受到攻击?
如何修复编译器修复现有二进制文件?我不认为创建对共享对象文件的调用......alloca
我们的镜像没有安装gcc,修补镜像是必需的/有帮助的吗?
答:
我并不是说情况是这样,但我会解释这是怎么回事,因为我在 Ubuntu 中已经多次看到了这一点。有时Canonical(Ubuntu的制造公司)没有等待上游补丁。为了表示他们将为版本添加后缀。例如,“bash 5.1-6”将变为“bash 5.1-6ubuntu1”。我们的漏洞扫描程序会发现该版本未打补丁,因为它仍然是 5.1-6,并报告该漏洞,因为它不熟悉 Canonicals 表示法。我会检查容器中的版本是否与易受攻击的版本不同。
在上面链接的底部公告中,Suse 说明了他们为缓解它所做的工作,并且更新的库的版本号看起来像是在没有等待上游的情况下修补的。
由于您没有指定哪个特定容器是您的基础映像,因此我无法显示具体版本,但例如,在“SUSE Linux Enterprise Micro for Rancher 5.2”(任意选择为最后一个)中,GCC 和 co. 的版本是:
- libstdc++6-13.2.1+git7813-150000.1.3.3
- libgcc_s1-debuginfo-13.2.1+git7813-150000.1.3.3
- libstdc++6-debuginfo-13.2.1+git7813-150000.1.3.3
- libgcc_s1-13.2.1+git7813-150000.1.3.3
这些版本看起来是由下游(Suse)而不是上游(GNU)修补的,因为GNU使用常规的三部分版本命名法。
至于使用易受攻击的编译器编译的任何内容,这些都是来自不同包的不同二进制文件,需要重新编译。
评论