IPBUF安全漏洞报告
English
CVE-2026-21715 CVSS 3.3 低危

CVE-2026-21715 Node.js权限模型文件系统绕过漏洞

披露日期: 2026-03-30

漏洞信息

漏洞编号
CVE-2026-21715
漏洞类型
权限绕过
CVSS评分
3.3 低危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Node.js

相关标签

权限绕过Node.js文件系统信息泄露

漏洞概述

Node.js 权限模型在文件系统强制执行中存在缺陷,`fs.realpathSync.native()` 函数未正确执行读权限检查。攻击者可利用此漏洞在受限权限下检查文件存在性、解析符号链接并枚举路径,绕过 `--allow-fs-read` 的限制。

技术细节

该漏洞源于 Node.js 引入的 Permission Model(权限模型)未对 `fs.realpathSync.native()` 方法实施严格的权限校验。当 Node.js 进程使用 `--permission` 标志启动并限制了 `--allow-fs-read` 路径时,本应禁止读取受限目录外的文件。然而,`fs.realpathSync.native()` 作为原生方法,缺失了与其他文件系统函数一致的权限检查逻辑。攻击者若拥有低权限本地访问能力,可调用该函数探测文件是否存在、解析符号链接指向的真实路径,甚至枚举文件系统结构,从而获取超出授权范围的信息,导致沙箱逃逸或信息泄露风险。

攻击链分析

STEP 1
1. 初始访问
攻击者获得对运行受影响 Node.js 版本系统的低权限本地访问能力。
STEP 2
2. 识别配置
攻击者确认目标 Node.js 进程启用了 `--permission` 模式并配置了受限的 `--allow-fs-read`。
STEP 3
3. 漏洞利用
攻击者调用存在漏洞的 `fs.realpathSync.native()` 函数,尝试解析或检查未被允许访问的文件路径(如 /etc/passwd)。
STEP 4
4. 信息泄露
由于权限检查缺失,函数成功返回路径信息,攻击者借此确认文件存在性或枚举系统结构。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2026-21715 PoC // Run with: node --experimental-permission --allow-fs-read=/tmp/ poc.js const fs = require('fs'); try { // Attempt to resolve a path outside the allowed directory (/tmp) // This should fail under correct permission enforcement but succeeds here. const target = '/etc/passwd'; const resolvedPath = fs.realpathSync.native(target); console.log(`[+] Vulnerability Confirmed! Resolved path: ${resolvedPath}`); } catch (e) { console.log(`[-] Exploit failed: ${e.message}`); }

影响范围

Node.js 20.x
Node.js 22.x
Node.js 24.x
Node.js 25.x

防御指南

临时缓解措施
如果无法立即升级,请严格限制对运行 Node.js 进程的主机的本地访问权限,确保只有受信任的用户能够执行代码或访问文件系统,避免在不受控的环境中启用实验性权限模型。

参考链接

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