Livewire远程代码执行漏洞CVE-2024-47823安全预警
Livewire是 Laravel 框架创始人 Taylor Otwell 支持的开源项目,作为Laravel全栈框架,也是对传统Laravel Blade模板的革命性升级。
Livewire允许开发者在不离开 Laravel 的舒适区的情况下,构建动态的、响应式的用户界面,其核心优势之一是它的实时交互能力。
一、基本情况
在 Livewire 中,构建复杂表单将变得异常简单,它提供了内建的实时验证和文件上传功能,让用户表单处理逻辑更加简洁和直观。
同时Livewire让数据表格的处理变得轻而易举,无论是分页、过滤、排序还是直接在表格中编辑数据,都能够提供流畅的用户体验。
Jeremy Angele 近期报告了Livewire中一个安全漏洞,漏洞追踪为CVE-2024-47823,允许攻击者利用文件上传实现远程代码执行。
二、漏洞分析
CVE-2024-47823漏洞的CVSS评分为7.7,允许攻击者利用文件上传实现远程代码执行(RCE),对受影响的系统将构成严重威胁。
安全研究人员 Jeremy Angele向Livewire官方报告了这一漏洞的存在,并且描述了攻击者如何在特定条件下去利用Livewire的漏洞。
在概念验证(PoC)场景中,Angele演示了上传名为shell.php的文件并通过浏览器访问该文件,就可以获得对服务器的远程访问。
漏洞存在于Livewire < v3.5.2版本中,上传文件的文件扩展名是根据MIME类型猜测的,因此不会验证文件名中的实际文件扩展名。
也就是说在Livewire < v3.5.2的版本中,在上传文件时,其仅仅根据MIME类型来猜测文件扩展名,而没有进行实际扩展名的验证。
这就意味着攻击者可以上传一个具有有效MIME类型(如image/png)但使用危险的扩展名(如.php)的文件,就能轻松绕过验证。
如果系统的Web服务器配置为执行PHP文件,漏洞便会被利用,导致远程代码执行,很显然主要问题在于其处理文件上传的方式。
因此而言,CVE-2024-47823漏洞利用的特定条件如下:
1、文件名由`$file->getClientOriginalName()`使用原始文件名组成;
2、文件直接存储在服务器的公共存储盘上;
3、Web服务器配置为执行“.php”文件。
如果满足了上述条件,攻击者可以利用Livewire这一安全漏洞CVE-2024-47823来执行远程命令执行攻击。
目前,Livewire在3.5.2版本中发布了补丁,增强了文件上传时的扩展名验证,并且确保不匹配的MIME类型和扩展名的文件被阻止。
三、漏洞影响
Livewire < v3.5.2
四、修复建议
该漏洞已在版本3.5.2中得到解决,建议所有用户进行升级,对于此漏洞除升级版本外暂无已知的解决方法。