Devcore宣布了PHP中的一个严重的远程代码执行(RCE)漏洞,编号为CVE-2024-4577。该漏洞影响了所有从5.x版本开始在Windows服务器上运行的PHP版本,这一问题由于PHP的广泛使用而显得尤为重要。漏洞源于字符编码转换处理不当,特别是影响使用某些语言(如中文或日文)代码页的系统。随着该漏洞的影响逐渐显现,组织需要了解风险并采取必要措施保护其环境。在本安全公告中,我们将深入探讨CVE-2024-4577的细节、其潜在影响以及保护系统的步骤。
漏洞背景
CVE-2024-4577是一个关键的远程代码执行(RCE)漏洞,由Devcore于2024年6月6日宣布。此漏洞影响所有在Windows服务器上运行的PHP版本,从5.x开始。由于PHP被超过70%的网站使用,并且涉及到大量不同的代码,包括各种SQL实现、内容管理系统和HTML,因此此类漏洞非常棘手。PHP的长期存在带来了众多用户和文档支持,加上其相对轻量和灵活的特性,使得理解PHP的使用环境成为风险缓解过程的重要部分,尤其是依赖于特定版本或实现的Web应用程序。
该漏洞由于字符编码转换处理不当而发生,具体来说是PHP在通用网关接口(CGI)模式下运行时,Windows使用"最佳匹配"(Best-Fit)功能来替换传递给Win32 API函数的命令行中的字符,尤其影响使用某些字符代码页的系统(如中文或日文)。攻击者可以通过简单的Web请求强迫服务器执行不需要的命令。
在Windows上使用Apache和PHP-CGI时,如果系统设置为使用特定代码页,Windows可能会使用"最佳匹配"行为来替换传递给Win32 API函数的命令行中的字符。PHP CGI模块可能会误解这些字符为PHP选项,从而允许恶意用户传递选项给正在运行的PHP二进制文件。
利用此漏洞可能导致多种后果,例如泄露脚本源代码、在服务器上运行任意PHP代码等。其影响被评估为严重,对机密性、完整性和可用性都有很高的影响。
进一步的复杂情况
Imperva在2024年6月10日发布的额外研究中,将“TellYouThePass”勒索软件团体与此漏洞的利用联系起来。TellYouThePass自2019年以来一直活跃,最近使用Go语言增强了勒索软件在多个操作系统上的有效性。该团体采用传统的勒索软件模式,使用数据加密作为勒索方法,并不使用公开羞辱博客。TellYouThePass还利用了其他近期漏洞,例如针对Log4j和其他已知漏洞的攻击。
漏洞详情
根据GitHub上WatchTowr的POC概念验证显示,利用此漏洞的代码非常简单,只需通过Web请求发送一行代码:
1 | res = s.post(f "{args.target.rstrip('/')}?%ADd+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input" , data = f "{args.code};echo 1337; die;" )
|
Bitdefender的遥测数据反映了其他研究人员的发现,显示2024年6月7日互联网扫描的大幅增加,这是该漏洞公开后的第二天。自6月8日起,扫描活动增加,可能是由于攻击者和研究人员都在尝试了解漏洞的范围。Censys报告了超过450000个潜在漏洞实例;Shodan的结果显示了类似的严峻情况,尤其是在样本数据中观察到多个易受攻击的版本。
Bitdefender威胁研究确认了其他行业报告,我们的实验室团队观察到几个使用各种攻击的独特活动后利用攻击。这些攻击使用了与公共PoC相同的方法获取远程代码执行(RCE),并将以下参数注入PHP命令行:
1 | - d + auto_prepend_file % 3dphp : / / input "
|
一旦进入,攻击者进行了各种发现技术来侦察环境。利用后,攻击者能够运行多个PowerShell脚本关闭防火墙和其他Web服务,从而重新部署受害者服务器作为恶意Web服务器。侧加载的DLL将恶意进程注入受影响的系统,允许捕获凭证和远程命令与控制(C2)。这一过程可以在多个服务器上继续,因为下载的恶意软件继续在易受攻击的主机上传播。这些入侵指标包括在下表中。
在一个案例中,观察到攻击者使用cmd.exe中的脚本通过certutil.exe从hxxp://147[.]50[.]253[.]109:35411下载额外的恶意软件。之前在VirusTotal上看到此恶意软件与其他IP地址和文件名相关,表明可能重复使用其他商品恶意软件活动中的代码。其他攻击中观察到的后利用操作包括部署名为RingQ的开源攻击者框架以及CobaltStrike。Bitdefender实验室还观察到使用Rust编写的木马,以及部署的用Go、Powercat和PowerShell编写的后门程序。这些指标包括在下表中。
基于在VirusTotal等网站上对这些指标的社区检测的观察,很可能攻击者试图通过仅使用文件名来规避检测,或者可能是多个攻击者编写自己的攻击脚本以进一步模糊活动,或者是两者的结合。攻击者通常使用各种命名约定来为.bat文件、.dll文件和.exe文件命名,这些文件名可能包含类似于合法系统文件的故意拼写错误,或每次攻击中可能会改变的随机字母数字字符串。在这些情况下,URL、哈希值和IP地址等更高保真度的指标已包含在下表中。
Bitdefender安全建议
截至本报告发布之时,Bitdefender已观察到与CVE-2024-4577漏洞利用相关的活动检测。此外,检测到多个IP地址扫描易受攻击的服务器。PHP开发团队已经发布了补丁来解决这个漏洞。
建议用户升级到最新的PHP补丁版本 – PHP 8.3.8、PHP 8.2.20和PHP 8.1.29,这些版本包含了该漏洞的补丁。任何在这些版本之前的版本都应被视为易受攻击的,尤其是已不再受支持的分支,如PHP 8.0、PHP 7和PHP 5。
Devcore指出CGI实现由于其年代久远可能存在问题,并进一步建议评估其他安全架构,如Mod-PHP、FastCGI或PHP-FPM。
Devcore对语言设置发布了免责声明:“对于运行在其他地区设置(如英文、韩文和西欧语言)的Windows,由于PHP使用场景的广泛,目前无法完全列举和消除所有潜在的利用场景。因此,建议用户进行全面的资产评估,验证其使用场景,并更新PHP到最新版本以确保安全。”
对于无法升级的系统,临时措施包括:
a. 通过远程规则阻止攻击 - 特定的重写规则可以阻止攻击,如下所示:
1 2 | AddHandler cgi - script .php
Action cgi - script "/cgi-bin/php-cgi.exe"
|
或
1 2 3 | <FilesMatch "\.php$" >
SetHandler application / x - httpd - php - cgi
< / FilesMatch>
|
b. XAMPP用户的配置调整:注释掉httpd-xampp.config中的ScriptAlias指令:(通常位于‘C:/xampp/apache/conf/extra/httpd-xampp.conf’)。
1 | ScriptAlias / php - cgi / "C:/xampp/php/"
|
由于几个活动使用了PowerShell,组织应考虑限制环境中PowerShell的使用,仅限于管理员等特权用户。
对于Bitdefender 高级威胁情报的用户,可以在此处找到更多信息:
https://intellizone.bitdefender.com/en/threat-search/threats/BDt5b2507l
入侵指标
阅读Bitdefender安全公告原文:
https://www.bitdefender.com/blog/businessinsights/technical-advisory-cve-2024-4577-php-vulnerability-under-active-exploit/
攻防演练季,欢迎体验 Bitdefender EDR/XDR/CWPP/CSPM解决方案:
致电:4000-132-568
联系:sales@bitdefender-cn.com
阅读更多
Bitdefender受邀参加北京网络安全大会BSC
Bitdefender亮相AWS中国峰会
Bitdefender被评为Gartner 2023年度端点保护平台魔力象限“远见者”
Bitdefender荣获AV-TEST 2023年度“最佳保护”和“最佳性能”奖
AV-Comparatives APT 威胁 防护能力测试 - Bitdefender 排名第一!
Bitdefender 被评为 2023 年 Gartner Peer Insights™ 端点保护平台客户之选