피드로 돌아가기
Node.js 14.17.5 (LTS)
Node.js BlogNode.js Blog
Security

Node.js 14.17.5가 DNS 호스트명 검증 부재, HTTP/2 메모리 해제 오류, HTTPS 인증서 검증 우회 등 3개 보안 취약점 패치

Node.js 14.17.5 (LTS)

2021년 8월 11일5beginner

Context

Node.js DNS 라이브러리가 도메인 네임 서버로부터 반환된 호스트명에 대한 입력 검증이 없어 원격 코드 실행, XSS, 애플리케이션 크래시, 도메인 탈취가 가능했다. Node.js HTTP/2 구현에서 스트림 취소 시 메모리 해제 후 사용(use-after-free) 취약점이 존재했다. Node.js HTTPS API에서 rejectUnauthorized 파라미터가 undefined로 전달될 경우 검증이 미흡해 만료된 인증서를 가진 서버 연결이 허용되었다.

Technical Solution

  • CVE-2021-3672/CVE-2021-22931: DNS 라이브러리에 호스트명 입력 검증 로직 추가 및 비정형 문자 처리 개선
  • CVE-2021-22940: HTTP/2 스트림 취소 시 메모리 해제 순서 및 포인터 참조 방식 수정으로 use-after-free 공격 방지
  • CVE-2021-22939: HTTPS API에서 rejectUnauthorized 파라미터가 undefined인 경우 명시적 오류 반환 처리 추가
  • 다중 플랫폼 바이너리 배포: Windows(32/64비트), macOS, Linux(x64/PPC64LE/s390x/ARMv7/ARMv8), AIX 제공

Key Takeaway

도메인명 조회, 네트워크 연결, 인증서 검증과 같은 보안 경계 지점에서는 외부 입력이나 선택적 파라미터에 대한 명시적 검증이 필수이며, 메모리 안전성을 위해 리소스 해제 순서와 포인터 생명주기를 철저히 관리해야 한다.


Node.js

1

4.x를 사용 중인 프로덕션 환경에서는 DNS 기반 서비스 디스커버리, HTTP/2 프로토콜 구현, 외부 HTTPS 서버 연결을 하는 경우 반드시

1

4.

1

7.5 이상으로 즉시 업그레이드해야 하며, 특히 도메인 검증 기반 라우팅이나 클라이언트 인증서 검증을 우회당할 수 있으므로 보안 감사를 병행해야 한다.

원문 읽기