Node.js — V8용으로 최소한의 HashDoS 저항성을 가지면서도 빠르게 역전 가능한 정수 해시 개발하기
V8의 배열 인덱스 문자열 해시 취약점(CVE-2026-21717)을 해결하기 위해,
HashDoS 공격에 최소한으로 저항하면서도 빠르게 역산 가능한 24비트 정수 해시 함수가 개발되었습니다.
기존 V8은 배열 인덱스 문자열에 대해 시드 없이 결정론적 해시를 사용해 공격자가 충돌을 쉽게 예측하고 성능 저하를 유발할 수 있었습니다.
새 해시 함수는 xorshift와 곱셈을 번갈아 적용하는 다중 라운드 구조로, 24비트 공간에서 비밀 시드를 활용해 충분한 비트 확산과 난수성을 확보하면서도 역산이 가능하도록 설계되었습니다.
이 방식은 V8의 내부 최적화(예: 문자열-정수 변환 시 해시 역산)를 유지하며, Node.js 서버 환경에서 HashDoS 공격을 효과적으로 완화합니다.
성능 측정 결과, 기존 대비 실질적 성능 저하 없이 보안성을 강화했으며, 2026년 3월 Node.js 보안 릴리스에 포함되어 배포되었습니다.
