🇰🇷 한글 설명
Node.js HTTP/2 서버가 작은 양의 HTTP/2 프레임 패킷을 통해 완전히 사용 불가능하게 될 수 있는 취약점입니다. HTTP/2 CONTINUATION 프레임을 포함한 헤더를 전송한 후 클라이언트가 TCP 연결을 갑자기 종료하면, Http2Session 소멸자 실행 중 헤더 프레임이 nghttp2 메모리에 남아 있어 경합 조건이 발생합니다.
💡 쉬운 설명
Node.js 웹서버에 특수한 방식의 데이터를 보낸 후 연결을 끊으면 서버가 완전히 먹통이 될 수 있습니다. 메모리 정리 과정에서 불완전하게 처리된 데이터로 인해 서버가 반응하지 않게 됩니다.
🇺🇸 원문 (English)
An attacker can make the Node.js HTTP/2 server completely unavailable by sending a small amount of HTTP/2 frames packets with a few HTTP/2 frames inside. It is possible to leave some data in nghttp2 memory after reset when headers with HTTP/2 CONTINUATION frame are sent to the server and then a TCP connection is abruptly closed by the client triggering the Http2Session destructor while header frames are still being processed (and stored in memory) causing a race condition.
📍 영향받는 시스템
Node.js HTTP/2 모듈 (nghttp2 기반, 특정 이전 버전)
⚔️ 공격 벡터
HTTP/2 CONTINUATION 프레임이 포함된 헤더를 전송 후 TCP 연결을 갑자기 종료하여 HTTP/2 서버에 DoS 유발
🛡️ 대응 방법
Node.js를 보안 패치가 적용된 최신 LTS 버전으로 업그레이드 (v18.19.0 이상, v20.10.0 이상)
🔧 검증 코드
표시된 Node.js 버전을 Node.js 공식 보안 권고와 대조하여 CVE-2024-27983이 수정된 버전인지 확인하십시오.
node -v 2>/dev/null | grep -oE 'v[0-9]+\.[0-9]+\.[0-9]+' && echo 'Version check required against Node.js security advisories'