EDIT 2024-04-25:澄清PHP应用程序何时易受此错误攻击。
最近格利布2.39及更旧版本(CVE-224-2961)被揭开字符集转换中的缓冲区溢出到ISO-2022-CN-EXT字符集可能导致远程代码执行。
可以通过PHP利用glibc中的这个特定缓冲区溢出,它公开了glibc对do字符集的iconv功能通过转换iconv扩展.尽管该错误可以在PHP环境中利用引擎,该错误不在PHP中。它也不可直接利用远程。
该漏洞是可利用的,当且仅当,PHP应用程序调用iconv函数或过滤器使用用户提供的字符集。
应用程序为不在以下情况下易受攻击:
- 已安装来自发行版的Glibc安全更新
- 或者未加载iconv扩展
- 或者已从gconv-modules-extra.conf中删除易受攻击的字符集
- 或者,应用程序只将特定允许的字符集传递给iconv。
此外,当使用用户提供的字符集时,申请只接受是一种好做法应用程序明确允许的特定字符集。如何做到这一点的一个示例是使用allow-list和数组_搜索()
功能在将其传递给iconv之前检查编码。例如:array_search($charset,$allowed_list,true)
网上有许多标题为“缓解PHP的iconv漏洞(CVE-224-2961)”或“PHP受到攻击”。这些标题具有误导性不PHP本身的一个错误。
如果您的PHP应用程序易受攻击,我们首先建议检查您的Linux发行版已经发布了glibc的补丁变体。Debian公司,CentOS等已经完成了,请尽快升级。
一旦glibc中有更新可用,请在您的Linux机器足以缓解这个问题。你不需要更新PHP,因为glibc是一个动态链接的库。
如果您的Linux发行版尚未发布glibc的补丁版本,这个问题没有解决方法。但是,存在一种中描述的解决方法GLIBC公司提供PHP服务的服务器上的漏洞这解释了如何删除glibc中有问题的字符集。对每个系统上可用的gconv-modules-extra.conf文件。
一旦glibc中有更新可用,请在您的Linux机器足以缓解这个问题。你不需要更新PHP,因为glibc是一个动态链接的库。
Windows上的PHP用户不受影响。这是因为iconv扩展在Windows上不可用。
因此,也不会有新版本的PHP用于此漏洞。