🇰🇷 한글 설명
V8 엔진의 문자열 해싱 메커니즘 결함으로 인해 정수형 문자열이 예측 가능한 값으로 해시되며, 이를 이용한 대량의 해시 충돌로 Node.js 프로세스의 성능을 현저히 저하시킬 수 있습니다. JSON.parse() 함수가 공격자 제어 입력을 처리하는 엔드포인트에서 주로 트리거됩니다.
💡 쉬운 설명
Node.js 내부의 문자열 저장 방식에 문제가 있어, 악의적인 입력으로 의도적인 충돌을 만들어 서버를 느리게 만들 수 있습니다. JSON 데이터를 처리하는 웹 서비스가 특히 위험합니다.
🇺🇸 원문 (English)
A flaw in V8's string hashing mechanism causes integer-like strings to be hashed to their numeric value, making hash collisions trivially predictable. By crafting a request that causes many such collisions in V8's internal string table, an attacker can significantly degrade performance of the Node.js process.
The most common trigger is any endpoint that calls `JSON.parse()` on attacker-controlled input, as JSON parsing automatically internalizes short strings into the affected hash table.
This vulnerability affects **20.x, 22.x, 24.x, and 25.x**.
📍 영향받는 시스템
Node.js 20.x, 22.x, 24.x, 25.x
⚔️ 공격 벡터
공격자가 JSON.parse()로 처리되는 엔드포인트에 특수 조작된 JSON 데이터를 전송하여 V8 내부 문자열 테이블에서 해시 충돌을 유발
🛡️ 대응 방법
영향받는 Node.js 버전을 패치된 버전으로 업그레이드 또는 입력 검증 강화로 악의적 JSON 구조 차단
🔧 검증 코드
Node.js 버전이 20.x, 22.x, 24.x, 25.x 범위에 해당하면 'Vulnerable' 출력, 그 외는 'Safe' 출력
node --version | grep -E '(v20|v22|v24|v25)\.' && echo 'Vulnerable' || echo 'Safe'