# Shopware Twig代码注入漏洞
## 概述
Shopware 平台在 6.7.0.0 至 6.7.6.1 之前版本中存在一个回归漏洞(CVE-2023-2017 的回归),导致对 `map(...)` 方法的覆盖中未对允许列表检查 PHP Closure 类型的数组和构造对象。
## 影响版本
- 受影响版本:6.7.0.0 至 6.7.6.0
- 修复版本:6.7.6.1
## 细节
该漏洞是 CVE-2023-2017 的回归问题,由于对 `map(...)` 方法覆盖时,未正确校验传入的参数是否为允许列表中的类型,攻击者可传入包含 PHP Closure 的数组,绕过安全检查,可能导致代码执行。
## 影响
未经身份验证的远程攻击者可能利用此漏洞执行任意代码,导致系统被完全控制。
是否为 Web 类漏洞: 未知
判断理由:
| # | POC 描述 | 源链接 | 神龙链接 |
|---|
标题: Improper Control of Generation of Code in Twig rendered views · Advisory · shopware/shopware · GitHub -- 🔗来源链接
标签:x_refsource_CONFIRM
神龙速读:
从提供的网页截图中,我们可以提取到以下关键信息关于漏洞的简洁Markdown格式内容:
```markdown
### 漏洞概述
**摘要**: Improper Control of Generation of Code in Twig rendered views
**发布者**: mkraeml
**发布时间**: 5 days ago
**GHS编号**: GHSA-7cw6-7h3h-v8pf
**CVE编号**: CVE-2026-23498
**CVSS v3 基础评分**: 7.2 / 10
**严重性**: High (高)
**CVSS v3 基础指标**:
- **攻击向量**: Network
- **攻击复杂度**: Low
- **所需权限**: High
- **用户交互**: None
- **影响范围**: Unchanged
- **机密性影响**: High
- **完整性影响**: High
- **可用性影响**: High
### 受影响的版本与修复版本
| Package | Affected Versions | Patched Versions |
|---------------------------------------|--------------------|------------------|
| shopware/core (Composer) | >=6.7.0.0 <6.7.6.1 | 6.7.6.1 |
| shopware/shopware (Composer) | >=6.7.0.0 <6.7.6.1 | 6.7.6.1 |
### 漏洞描述与影响
**描述**:
在使用Twig渲染视图时,生成代码的控制不当。
**影响**:
我们已修复CVE-2023-2017,将Twig过滤器限制为仅与允许的函数一起执行。然而,这导致了一个回归问题,导致数组和数组制作的PHP闭包未被检查是否在map(...)覆写中允许列表中。
### 修复与临时解决方案
**补丁**:
已在6.7.6.1版本中进行修复。
**解决方式**:
- 安装安全插件。
### 弱点
- CWE-94
### 参考链接
- GHSA-7v2v-9rm4-7m8f
```
这些信息方便了相关安全人员或开发者快速了解并处理该漏洞。
标题: fix: map in security extension for array callables · shopware/shopware@3966b05 · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
## 关键漏洞信息
### 修复内容
- **安全扩展修复**: 修复了数组回调的安全扩展中使用`map`函数可能存在的安全隐患。
### 关键更改
1. 在`SecurityExtension.php`文件中增加了对数组回调的类型检查和可控性验证:
- **`if (\is_array($function)) {`**: 检查回调是否为数组形式。
- **`$function = implode('::', $function);`**: 将数组形式的回调转换为字符串形式。
- **`\assert(\is_callable($function));`**: 断言转换后的回调是可调用的。
2. 引入了对`securityFunctionNotAllowed`异常处理,以增强安全性:
- **`if (`**`is_string($function) && !\in_array($function, $this->allowedPHPFunctions, true)`**`) {`**: 检查是否是不允许的PHP函数。
### 相关测试文件更新
- **`SecurityExtensionTest.php`**中的测试用例被更新,避免了不适当的异常抛出,以确保安全扩展能在正确环境下检测异常,而不是在这里。
- **注释更新**: 测试类`SecurityExtensionGadget`中的`do`方法注释更新,明确指出此测试用例的目的。
### 版本
- **修复版本**: v6.7.6.1
### 提交信息
- **提交哈希**: 3966b05
- **提交时间**: 最近一周
- **提交人**: mkraeml 和 Michael Telgmann
Zaproxy alias impedit expedita quisquam pariatur exercitationem. Nemo rerum eveniet dolores rem quia dignissimos.