🇰🇷 한글 설명
LangSmith JavaScript/TypeScript SDK의 createAnonymizer() API에서 발견된 프로토타입 오염(Prototype Pollution) 취약점입니다. baseAssignValue() 함수가 __proto__ 키만 차단하지만 constructor.prototype을 통한 접근을 막지 못해, 공격자가 데이터 키를 제어할 경우 Object.prototype을 오염시킬 수 있습니다. 이는 Node.js 프로세스의 모든 객체에 영향을 미칩니다.
💡 쉬운 설명
LangSmith SDK의 익명화 기능에 보안 허점이 있어서, 조작된 데이터를 전송하면 자바스크립트 객체 전체에 악의적인 속성을 몰래 추가할 수 있습니다. 이로 인해 애플리케이션이 예상과 다르게 동작할 수 있습니다.
🇺🇸 원문 (English)
LangSmith Client SDKs provide SDK's for interacting with the LangSmith platform. Prior to 0.5.18, the LangSmith JavaScript/TypeScript SDK (langsmith) contains an incomplete prototype pollution fix in its internally vendored lodash set() utility. The baseAssignValue() function only guards against the __proto__ key, but fails to prevent traversal via constructor.prototype. This allows an attacker who controls keys in data processed by the createAnonymizer() API to pollute Object.prototype, affecting all objects in the Node.js process. This vulnerability is fixed in 0.5.18.
📍 영향받는 시스템
LangSmith JavaScript/TypeScript SDK (langsmith) 버전 0.5.18 미만
⚔️ 공격 벡터
공격자가 createAnonymizer() API에 전달되는 데이터의 키를 제어하여 constructor.prototype을 통해 프로토타입 오염 수행
🛡️ 대응 방법
langsmith 패키지를 0.5.18 이상으로 업그레이드 (npm update langsmith)
🔧 검증 코드
0.5.18 미만 버전이 표시되면 취약한 상태이며, 해당 버전 이상이면 패치됨
npm list langsmith --depth=0 2>/dev/null | head -2