피드로 돌아가기
Node.js BlogSecurity
원문 읽기
Node.js가 HTTP/2 및 HTTP 요청 처리의 2개 보안 취약점을 llhttp 9.2.1, undici 6.11.1/5.28.4 업데이트로 패치
Wednesday, April 3, 2024 Security Releases
AI 요약
Context
Node.js의 HTTP/2 서버가 소량의 HTTP/2 프레임 패킷으로 완전히 사용 불가능해질 수 있는 취약점이 존재했다. HTTP 헤더 처리에서 Content-Length 앞에 공백이 있을 경우 잘못된 해석으로 인해 HTTP 요청 스머글링이 가능한 취약점도 발견되었다.
Technical Solution
- llhttp를 9.2.1 버전으로 업데이트: 18.x, 20.x, 21.x 모든 릴리스 라인에 적용
- undici를 6.11.1로 업데이트: 21.x 릴리스 라인에 적용
- undici를 5.28.4로 업데이트: 18.x, 20.x 릴리스 라인에 적용
- HTTP/2 CONTINUATION 프레임 처리 시 nghttp2 메모리 누수 방지: TCP 연결 종료 시 헤더 프레임 처리 경합 조건(race condition) 해결
- Content-Length 헤더의 공백 문자 검증 강화: 요청 스머글링 공격 패턴 차단
Key Takeaway
모든 활성 Node.js 릴리스 라인(18.x, 20.x, 21.x)에 영향을 미치는 1건의 중대도 높음 취약점과 1건의 중대도 중간 취약점이 2024년 4월 3일에 패치되었으므로, 프로덕션 환경에서는 즉시 업데이트가 필요하다.
실천 포인트
Node.js를 사용하는 팀은 2024년 4월 3일 이후 배포된
1
8.x,
2
0.x,
2
1.x 버전으로 즉시 업그레이드하여 HTTP/2 서버 다운타임 공격과 HTTP 요청 스머글링 공격으로부터 보호해야 한다.