CVE-2026-40190LangSmith JavaScript/TypeScript SDK在0.5.18版本之前存在原型污染漏洞。其内部lodash set()工具的修复不完整,未阻止通过constructor.prototype进行的遍历。攻击者若能控制createAnonymizer() API处理的数据键,即可污染Object.prototype,进而影响Node.js进程中的所有对象。该问题已在0.5.18版本中修复。
该漏洞源于LangSmith SDK内部集成的lodash工具函数中`baseAssignValue()`的过滤机制存在缺陷。虽然开发者针对原型污染进行了修复,拦截了关键字`__proto__`,但忽略了JavaScript对象属性访问的另一条路径`constructor.prototype`。在JavaScript中,`obj.constructor.prototype`等同于`obj.__proto__`。当`createAnonymizer()`函数处理用户提供的对象时,如果输入包含类似`{"constructor": {"prototype": {"polluted": true}}}`的结构,恶意属性会被合并到`Object.prototype`中。由于JavaScript的原型链继承机制,这将导致后续创建的所有对象都带有`polluted`属性,攻击者可利用此特性绕过安全检查或篡改应用逻辑。