🇰🇷 한글 설명
Node.js의 에러 처리 과정에서 'Maximum call stack size exceeded' 오류가 발생할 경우, async_hooks.createHook()이 활성화되어 있으면 이를 포착할 수 없는 버그가 발견되었습니다. 이로 인해 process.on('uncaughtException')을 통한 예외 처리가 불가능해지며, 프로세스가 즉시 종료되어 서비스 거부(DoS) 상태에 빠질 수 있습니다.
💡 쉬운 설명
프로그램 내부에서 너무 많은 계산이 겹치면 오류가 발생하는데, 특정 설정이 켜져 있으면 이 오류를 잡아내지 못하고 프로그램이 그냥 꺼져버립니다. 이로 인해 서비스가 갑자기 중단될 수 있는 위험이 있습니다.
🇺🇸 원문 (English)
We have identified a bug in Node.js error handling where "Maximum call stack size exceeded" errors become uncatchable when `async_hooks.createHook()` is enabled. Instead of reaching `process.on('uncaughtException')`, the process terminates, making the crash unrecoverable. Applications that rely on `AsyncLocalStorage` (v22, v20) or `async_hooks.createHook()` (v24, v22, v20) become vulnerable to denial-of-service crashes triggered by deep recursion under specific conditions.
📍 영향받는 시스템
Node.js v20, v22 (AsyncLocalStorage 사용 시) 및 v20, v22, v24 (async_hooks.createHook() 사용 시)
⚔️ 공격 벡터
특정 조건에서 깊은 재귀 호출을 유도하여 스택 오버플로우를 발생시킴으로써 프로세스를 강제 종료
🛡️ 대응 방법
Node.js를 해당 취약점이 해결된 최신 보안 패치 버전으로 업데이트
🔧 검증 코드
출력된 Node.js 버전이 취약점이 해결된 패치 버전 이후인지 확인