🔴 【深度分析】严重安全漏洞:CVE-2026-35048

CVSS 评分: 严重(9.8)🔴  状态: Deferred  发布时间: 2026-07-20


🔍 技术细节速览

字段 值
CVE ID CVE-2026-35048
CVSS 评分 9.8 🔴
严重程度 严重
CVSS 向量 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CWE 分类 CWE-20
发布时间 2026-07-20
最后更新 2026-07-21
状态 Deferred
数据来源 security-advisories@github.com

⚠️ CVSS 9.8 (严重) | 攻击向量:网络 | 攻击复杂度:低 | 所需权限:无 | 用户交互:无 | 影响范围:未改变 | 机密性/完整性/可用性:高


漏洞概述

CVE-2026-35048 是 Piwigo(一款开源相册管理系统)安装程序(installer)中存在的严重远程代码执行漏洞。攻击者无需任何身份认证,仅需向安装脚本发送特制 POST 请求,即可将任意 PHP 代码写入服务器上的配置文件,导致该代码在每次页面加载时被执行。该漏洞影响 Piwigo 16.3.0 及更早版本,CVSS 评分为 9.8(严重),利用难度极低,实际威胁极高。


受影响组件与版本

组件 受影响版本范围
Piwigo 安装程序(installer) ≤ 16.3.0

注意:该漏洞存在于安装脚本中(通常位于 install/ 目录),并非运行中的 Piwigo 本身。但若生产环境未删除或未防护该目录,则仍处于风险中。


漏洞原理分析

根本原因

Piwigo 安装程序在接收数据库配置相关 POST 参数(如 prefix、dbpasswd、dbhost、dbname、dbuser)后,将其直接写入 PHP 配置文件 local/config/database.inc.php。本应使用 addslashes() 函数对用户输入进行转义以防止注入,但代码中首先检查了 get_magic_quotes_gpc() 函数的返回值——该函数自 PHP 7.4 起被弃用,并在 PHP 8.0 中被彻底移除。

// 漏洞代码简化示意
if (get_magic_quotes_gpc()) {
    // 此分支在 PHP 8+ 永远不执行
    $value = stripslashes($input);
} else {
    $value = addslashes($input);  // 实际使用的保护
}

由于 get_magic_quotes_gpc() 在 PHP 8.0+ 上不存在,调用该函数会导致 PHP 发出致命错误(函数未定义),从而跳过后续的 addslashes() 调用。最终,用户输入的原始字符串被直接拼接到 PHP 代码中,例如:

// 假设攻击者传入 dbpasswd=123'; system('id'); //
$cfg['db_password'] = '123'; system('id'); //';

攻击向量

  • 攻击路径:通过 HTTP POST 请求向安装脚本(如 install.php?page=2 或类似 URL)发送恶意参数。
  • 利用条件:攻击者能够访问到 Piwigo 安装目录(通常为 /install/),且服务器使用 PHP 8.0 及以上版本。
  • 执行结果:写入的恶意代码在每次页面加载时被 include 或 require 执行,实现远程命令执行、文件读写、权限提升等操作。

影响评估

攻击难度分析(基于 CVSS 向量)

指标 值 解释
AV:N 网络 攻击者可通过远程网络发起攻击
AC:L 低复杂度 无需特殊技巧,直接发送构造的 POST 请求即可
PR:N 无需权限 未认证即可触发
UI:N 无需用户交互 不需要管理员或用户额外点击
C:H / I:H / A:H 完全受影响 可读取、修改所有数据,或导致服务完全瘫痪

实际威胁等级:极高

  • 利用门槛极低:攻击者只需发送一次 POST 请求,即可植入后门。
  • 开发/测试环境常见:很多用户部署后未删除安装目录,导致暴露面大。
  • 影响持久:写入的代码永久存在于配置文件中,即使修复漏洞后,旧文件仍可能被利用。
  • 扫描可能:该漏洞适合自动化扫描,可批量检测并控制目标服务器。

限制因素

  • 依赖 PHP 版本:仅 PHP 8.0+ 环境下 addslashes() 保护失效;PHP 7.x 及以下版本中该函数仍起作用。
  • 需要安装目录可访问:若生产环境已删除 install/ 目录,则无法利用。

修复建议

官方补丁(推荐)

  • 升级到 Piwigo 16.3.1 或更高版本(假定官方已发布修复版本)。新版本应移除有问题的 get_magic_quotes_gpc() 检查,并改用参数化写入或白名单过滤方式。

临时缓解措施

  1. 删除安装目录:
    在 Piwigo 安装完成后,立即删除或重命名 install/ 文件夹(或将其配置为 Web 服务器禁止访问)。

  2. 访问控制:
    在 Web 服务器(如 Nginx / Apache)中配置规则,仅允许可信 IP 访问 /install/ 路径:

    location /install/ {
        deny all;
    }
    
  3. Web 应用防火墙(WAF)规则:
    添加规则拦截包含特殊 SQL 或 PHP 代码片段的 POST 参数(如 dbpasswd 中出现单引号、分号、系统命令等模式)。

  4. 手动检查受影响文件:
    若怀疑已被利用,立即检查 local/config/database.inc.php 文件中是否存在异常 PHP 代码,并重新安装或恢复纯净备份。


参考资料

类型 链接
NVD 官方页面 https://nvd.nist.gov/vuln/detail/CVE-2026-35048
CWE 分类 https://cwe.mitre.org/data/definitions/20.html(输入验证不当)
官方安全公告 暂未提供(截至公开日期 2026-07-20,建议关注 Piwigo 官方 GitHub 仓库)
相关 CVE 无

免责声明:本文中所有技术细节均基于 NVD 公开数据及通用安全知识推演得出,未对实际软件进行逆向分析。如遇具体部署问题,请参考 Piwigo 官方文档。