🇰🇷 한글 설명
Node.js 워커 풀 구현체인 piscina의 특정 버전에서 프로토타입 오염(Prototype Pollution) 취약점이 발견되었습니다. 공격자가 Object.prototype.filename을 오염시키면, piscina의 생성자나 run() 메서드가 오염된 값을 읽어 공격자의 .mjs 파일을 워커 스레드에서 실행할 수 있습니다.
💡 쉬운 설명
프로그램의 기본 설정값이 조작될 수 있는 약점을 이용해, 공격자가 원치 않는 악성 코드를 시스템 내부에서 실행하게 만드는 보안 결함입니다. 이를 통해 공격자는 서버의 권한을 탈취하거나 악성 동작을 수행할 수 있습니다.
🇺🇸 원문 (English)
piscina is a node.js worker pool implementation. Prior to 6.0.0-rc.2, 5.2.0, and 4.9.3, piscina's constructor and run() paths read the filename option via plain member access. Both reads fall through the prototype chain when the caller's options object doesn't have filename as an own property. When Object.prototype.filename is polluted upstream the inherited value flows to worker_threads.Worker import and the attacker's .mjs runs in the worker. This vulnerability is fixed in 6.0.0-rc.2, 5.2.0, and 4.9.3.
📍 영향받는 시스템
piscina < 6.0.0-rc.2, < 5.2.0, < 4.9.3
⚔️ 공격 벡터
Object.prototype.filename 오염을 통한 프로토타입 체인 탐색 및 악성 .mjs 파일 실행
🛡️ 대응 방법
piscina 버전을 6.0.0-rc.2, 5.2.0 또는 4.9.3 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 piscina의 버전이 취약한 버전 범위(6.0.0-rc.2, 5.2.0, 4.9.3 미만)에 해당하는지 확인합니다.