IPBUF安全漏洞报告
English
CVE-2026-2950 CVSS 6.5 中危

CVE-2026-2950 Lodash原型污染漏洞

披露日期: 2026-03-31
来源: ce714d77-add3-4f53-aff5-83d477b104bb

漏洞信息

漏洞编号
CVE-2026-2950
漏洞类型
原型污染
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Lodash

相关标签

原型污染LodashCVE-2026-2950JavaScript拒绝服务

漏洞概述

Lodash 版本 4.17.23 及更早版本在 _.unset 和 _.omit 函数中存在原型污染漏洞。此前针对 CVE-2025-13465 的修复方案仅针对字符串形式的键名进行了防护,未能有效过滤数组形式的路径参数。攻击者可以利用此绕过缺陷,通过传递数组包裹的路径段,从 Object.prototype、Number.prototype 等内置原型中删除属性。虽然该漏洞不允许覆盖原有行为,但删除关键的原型属性仍可能导致应用程序逻辑异常或拒绝服务。官方已在 4.18.0 版本中修复此问题。

技术细节

该漏洞属于 JavaScript 原型污染的变种,核心在于 Lodash 库对路径解析的防御机制不完善。原型污染通常允许攻击者修改 JavaScript 对象的原型,进而影响所有继承该原型的对象。此前针对 CVE-2025-13465 的补丁主要通过检查字符串路径中是否包含 '__proto__' 等敏感键来防御。然而,Lodash 支持使用数组来表示对象路径(例如 ['constructor', 'prototype', 'key'])。当攻击者使用这种数组格式构造 Payload 时,能够绕过针对字符串的过滤检查。_.unset 和 _.omit 函数在处理路径时会递归遍历对象属性,最终定位到 Object.prototype 并执行删除操作。虽然该漏洞限制了属性的“覆盖”,但删除原型中的基础方法(如 toString 或 hasOwnProperty)会导致依赖这些方法的代码执行失败,从而引发安全风险。

攻击链分析

STEP 1
侦察
攻击者确认目标应用使用了 Lodash 4.17.23 或更早版本,并定位到使用 _.unset 或 _.omit 处理用户输入的代码位置。
STEP 2
武器化
攻击者构造特制的 Payload,使用数组形式包裹路径(如 ['constructor', 'prototype', 'targetProp']),旨在绕过针对字符串键的过滤机制。
STEP 3
交付
将构造好的恶意 JSON 数据或参数发送给目标应用程序的接口,该接口将数据传递给 Lodash 的易受攻击函数。
STEP 4
利用
Lodash 解析数组路径,绕过安全检查,并执行删除操作,移除 Object.prototype 或其他内置原型上的指定属性。
STEP 5
影响
由于原型属性被删除,应用程序后续调用这些缺失的方法时可能抛出异常,导致逻辑错误或拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
const _ = require('lodash'); // 1. Setup: Add a test property to Object.prototype Object.prototype.testKey = 'initial_value'; console.log('[+] Before Exploit: Object.prototype.testKey =', Object.prototype.testKey); // 2. Exploit: Use array-wrapped path to bypass string checks and delete the property // The path ['constructor', 'prototype', 'testKey'] resolves to Object.prototype.testKey var payload = {}; _.unset(payload, ['constructor', 'prototype', 'testKey']); // 3. Verification: Check if the property is deleted from the prototype if (!Object.prototype.hasOwnProperty('testKey')) { console.log('[!] Exploit Successful: Property deleted from Object.prototype'); } else { console.log('[-] Exploit Failed: Property still exists'); }

影响范围

Lodash <= 4.17.23

防御指南

临时缓解措施
官方未提供临时缓解方案,最有效的措施是立即升级到包含补丁的版本 4.18.0。在无法立即升级的情况下,应实施严格的输入过滤,阻止包含 'constructor'、'prototype' 等关键字的数组路径参数传递给相关函数,或使用 Web 应用防火墙(WAF)拦截此类恶意载荷。

参考链接

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