🇰🇷 한글 설명
Node.js의 실험적 정책 메커니즘에서 `Module._load()` 함수를 사용할 경우, policy.json에 정의되지 않은 외부 모듈을 로드하여 정책을 우회할 수 있는 취약점입니다. 이 취약점은 Node.js의 16.x, 18.x, 20.x 등 모든 활성 릴리스 라인의 실험적 정책 기능을 사용하는 사용자에게 영향을 미칩니다.
💡 쉬운 설명
Node.js에서 허용된 프로그램만 실행하도록 설정해두었음에도 불구하고, 이를 속이고 허가되지 않은 외부 프로그램을 몰래 실행할 수 있는 보안 구멍이 발견되었습니다. 이로 인해 공격자가 시스템에 원치 않는 코드를 심을 위험이 있습니다.
🇺🇸 원문 (English)
The use of `Module._load()` can bypass the policy mechanism and require modules outside of the policy.json definition for a given module.
This vulnerability affects all users using the experimental policy mechanism in all active release lines: 16.x, 18.x and, 20.x.
Please note that at the time this CVE was issued, the policy is an experimental feature of Node.js.
📍 영향받는 시스템
Node.js 16.x, 18.x, 20.x 버전 중 실험적 정책(Experimental Policy) 기능을 사용하는 모든 시스템
⚔️ 공격 벡터
정책 메커니즘을 우회하기 위해 `Module._load()` 함수를 호출하여 정의되지 않은 모듈을 강제로 로드함
🛡️ 대응 방법
Node.js를 최신 보안 패치가 적용된 버전으로 업데이트하거나, 실험적 정책 기능 사용 시 주의가 필요함
🔧 검증 코드
명령어 실행 시 오류 없이 'Vulnerable potential'이 출력되면 정책 우회 가능성이 있는 환경일 수 있으므로 버전 업데이트가 필요합니다.
node -p "process.versions.node" && node -e "try { require('module')._load(require('module'), 'module', 'test'); console.log('Vulnerable potential'); } catch(e) { console.log('Policy enforced'); }" 2>/dev/null