CVE-2026-45772Turborepo 是一个用于 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 常用于自动化构建流程,该漏洞极易被用于供应链攻击,危害极大。