严重 PHP 漏洞导致服务器遭受远程代码执行


DEVCORE 发现 PHP 中存在一个严重的远程代码执行漏洞,影响 Windows 系统上该语言的所有版本。该漏洞被追踪为 CVE-2024-4577,已于 2024 年 6 月 6 日修复。

发现和披露
DEVCORE 攻击研究团队在检查 PHP 与 Windows 编码转换功能的集成时发现了此严重漏洞。该漏洞允许未经身份验证的攻击者使用特定字符序列绕过现有保护措施(特别是 CVE-2012-1823),从而在受影响的服务器上执行任意代码。DEVCORE 于 2024 年 5 月 7 日向 PHP 官方团队报告了此问题,他们承认了该问题的严重性并迅速开发和发布了补丁。

技术细节和影响
该漏洞源于 PHP 实现中的疏忽,特别是在 Windows 上编码转换期间对 Best-Fit 功能的处理。此漏洞允许参数注入攻击,从而危及服务器安全。受影响的 PHP 版本包括:

  • 8.3.8 以下的 PHP 8.3 版本
  • 8.2.20 以下的 PHP 8.2 版本
  • 8.1.29 以下的 PHP 8.1 版本
值得注意的是,较旧的 PHP 分支(8.0、7.x、5.x)已经不再受支持且仍无人维护,这增加了仍在运行这些版本的系统的风险。

在 CGI 模式下运行 PHP 或暴露 PHP 二进制文件的服务器尤其容易受到威胁。常见的受影响配置包括:

  • 将 HTTP 请求映射到 Apache 配置中的 PHP-CGI 可执行文件。
  • 适用于 Windows 的 XAMPP,默认情况下公开 PHP 可执行二进制文件。
DEVCORE 已验证该漏洞在 Windows 繁体中文(代码页 950)、简体中文(代码页 936)和日语(代码页 932)语言环境中的利用情况。对于其他语言环境(包括英语、韩语和西欧),由于 PHP 使用场景各异,建议进行全面的资产评估。

解决措施
强烈建议升级到最新的 PHP 版本 (8.3.8、8.2.20、8.1.29)。对于无法立即升级的系统,临时缓解措施包括实施特定的 Apache 重写规则来阻止攻击媒介,特别是在被确定为易受攻击的区域。

对于 Windows 版 XAMPP 用户,注释掉 Apache 配置文件中的 ScriptAlias /php-cgi/”C:/xampp/php/” 行可以减轻暴露。

服务器管理员应该:

  • 确保 PHP 已更新至版本 8.3.8、8.2.20 或 8.1.29。
  • 彻底检查 PHP 配置,特别是使用 CGI 模式或公开 PHP 二进制文件的服务器。
  • 如果无法立即升级,请使用推荐的重写规则。
  • 评估迁移到更安全的 PHP 执行架构,如 Mod-PHP、FastCGI 或 PHP-FPM。