Filament扩展包Laravel中的严重漏洞CVE-2024-47186
Filament是一个用于加速Laravel开发的全栈组件集合,专为Laravel开发者打造,旨在提高开发效率并提供卓越用户体验。
Filament 项目设计核心理念是减少重复工作,帮助开发者在构建管理界面、用户界面或者 SaaS 平台时更加专注于创新。
一、基本情况
Filament基于Laravel 和 Livewire 框架开发,且支持 PHP 8.1,确保了强大的功能以及高效的性能,目前包括多个组件包。
Panel Builder、Form Builder、Table Builder、Notifications、Actions、Infolists、Widgets 等七大组件包可提供各种功能。
使用Panel Builder构建直观后台,Form Builder和Table Builder处理数据输入输出,Widgets和Notifications实现高效管理。
基于Laravel和 Livewire 框架开发的特性,因此充分利用这两个框架的优点并实现全栈支持,且所有组件都设计为可定制。
安全研究人员sv-LayZ发现并披露了 Filament 扩展包 Laravel 中的一个严重XSS漏洞,该漏洞被标记为CVE-2024-47186。
二、漏洞分析
CVE-2024-47186是一个严重跨站点脚本(XSS)漏洞,由于对传递给ColorColumn和ColorEntry组件的值验证不当导致。
如果给ColorColumn或ColumnEntry提供一组包含特定字符集的无效颜色值,则攻击者可以在相应程序页面执行恶意脚本。
攻击者欺骗合法的基于 Web 的应用程序或站点接受来自可信来源的请求时,允许攻击者注入客户端脚本发生跨站点攻击。
这一攻击过程通过转义Web应用程序的上下文来完成,Web 应用程序会将数据与其他受信任的动态内容一起传递给用户,
应用程序无需对其进行验证,浏览器将会无感知的在客户端执行恶意脚本(通过客户端语言;通常是JavaScript或HTML)
如此就可以执行通常会被浏览器的同源策略(same origin policy)阻止的操作,从而实现跨站点脚本(XSS)攻击行为。
同源策略是浏览器最核心且最基本的安全功能,作为一种约定可阻止一个域的JavaScrip脚本和另一个域的内容进行交互。
注入恶意代码是 XSS 最常见的利用方式,因此来说转义字符以防止这种操作是保护代码免受此漏洞影响的常规安全方法。
转义意味着应用程序被编码为标记关键字符,特别是用户输入中包含的关键字符,防止这些字符在危险的上下文被解密。
如在HTML中 < 可以编码为 <而 > 可以编码为>;为了在文本中解释和展示源码,在代码本身中它们用于HTML 标记。
如果恶意内容被注入到转义特殊字符的应用程序中且使用<和>为 HTML 标记,则这些字符已在应用程序代码中正确转义,
那么浏览器仍然不会将它们解释为 HTML 标记,并且通过这种方式尝试的攻击将被会转移,从而拦截请求保护用户安全。
XSS主要用途是窃取cookie和劫持用户会话,但XSS漏洞已被用来窃取敏感信息、访问特权服务和功能及传播恶意软件。
常见的可以操作XSS 攻击的方法如下:
Stored:攻击者直接将恶意代码插入到应用程序中(通常是超链接),每次用户点击该链接时都会激活该代码。
Reflected:攻击者从易受攻击的网站应用程序向外部传递恶意链接,点击后恶意代码将其诱导到漏洞网站从而实现攻击。
DOM-based:攻击者强迫用户的浏览器呈现恶意页面。页面本身中的数据提供跨站点脚本数据。
Mutated:注入看似安全的代码后在解析标记时被浏览器重写和修改,如添加未闭合的引号或向未加引号的参数添加引号。
本漏洞中攻击者对ColorColumn或ColumnEntry传递一组特定字符就能在呈现颜色列或条目的应用程序页面执行恶意脚本。
XSS利用Web应用程序处理不受信任输入缺陷允许攻击者执行恶意脚本,对依赖该框架的网站和应用程序构成重大威胁。
攻击者利用恶意脚本窃取会话、操纵Web内容或将用户重定向到恶意网站,导致未经授权的操作、数据泄露或钓鱼攻击。
Filament 的开发人员迅速做出响应,发布了3.2.115版本,并且建议开发人员尽快升级其应用程序,从而防止可能的利用。
Filament 3.2.115 版本通过验证 ColorColumn 和 ColorEntry 的值来缓解该漏洞,且建议开发人员务必验证所有用户输入。
由于许多Filament用户使用ColorPicker表单组件接受颜色输入,Filament 团队发布了额外颜色验证文档进一步保障安全。
三、影响范围
Filament 版本 v3.0.0 至 v3.2.114 都受此跨站点脚本(XSS)漏洞的影响。
四、修复建议
Filament 开发团队已针对该漏洞发布 3.2.115 版本,建议相关用户尽快升级
五、参考链接
https://nvd.nist.gov/vuln/detail/CVE-2024-47186
https://security-tracker.debian.org/tracker/CVE-2024-47186
https://security.snyk.io/vuln/SNYK-PHP-FILAMENTTABLES-8132055
https://securityonline.info/critical-xss-flaw-discovered-in-filament-cve-2024-47186-requires-urgent-update-for-laravel-developers/