热门PHP库中的严重漏洞:开发者需要了解什么
来自SonarSource公司的网络安全研究团队发布了一份报告,内容涉及在最常用的PHP模板库之一Smarty中发现的一个严重漏洞。该漏洞编号为CVE-2024-35227,允许攻击者在服务器上远程执行任意代码,可能导致Web应用程序完全被攻陷。
漏洞详情
问题与Smarty库中fetch()函数处理用户输入的机制有关。在不安全的配置且缺乏数据过滤的情况下,攻击者可以传递恶意字符串,该字符串将被解释为PHP代码。根据CVSS v3.1评分标准,该漏洞获得了最高分9.8(严重)。
漏洞的主要特征:
- 攻击向量:远程(Network)
- 利用难度:低(Low)
- 所需权限:无(None)
- 对完整性的影响:完全(High)
受影响版本
该漏洞影响Smarty库直至4.3.2和5.0.1的所有版本。库开发者已在4.3.3和5.0.2版本中分别发布了补丁。强烈建议所有用户立即更新库。
如何检查您的项目是否存在漏洞
为确保您的项目不受风险影响,请执行以下步骤:
- 在
composer.json或vendor/smarty/smarty/Smarty.class.php文件中检查Smarty的版本。 - 如果版本低于4.3.3或5.0.2(取决于分支),请执行更新:
composer update smarty/smarty。 - 检查代码中所有使用
fetch()函数处理用户数据的地方。
安全建议
除了立即更新库之外,专家建议遵循通用安全规则:
- 始终过滤和转义用户输入。
- 对文件操作采用最小权限原则。
- 定期更新项目的所有依赖项。
- 使用静态代码分析工具(SAST)查找漏洞。
历史与背景
Smarty是最古老的PHP模板库之一,于2004年发布。它被用于诸如Drupal(通过模块)、PrestaShop等流行CMS以及许多自建项目中。据分析师估计,该漏洞可能影响全球超过100,000个网站。
这并非该库第一次出现严重安全问题。2021年,发现了与模板注入相关的漏洞CVE-2021-29454。Smarty开发者及时发布了修复程序,但生产环境中过时版本的数量仍然很高。