피드로 돌아가기
Wednesday February 14 2024 Security Releases
Node.js BlogNode.js Blog
Security

Node.js가 v18.x, v20.x, v21.x 릴리스 라인에 9개 보안 취약점 패치를 배포해 권한 상승, 서비스 거부, 경로 추적 공격 차단

Wednesday February 14 2024 Security Releases

2024년 2월 14일12intermediate

Context

Node.js의 세 활성 릴리스 라인(18.x, 20.x, 21.x)에서 9개의 보안 취약점이 발견되어 즉시 패치가 필요했다. 이 중 4개는 높은 심각도의 권한 상승 및 서비스 거부 공격이었고, 4개는 중간 심각도, 1개는 낮은 심각도였다.

Technical Solution

  • libuv를 1.48.0으로 업데이트(v21.x): CVE-2024-24806 권한 상승 취약점 해결
  • libuv 패치 적용(v18.x, v20.x): CVE-2024-24806에 대한 보안 수정 적용
  • undici를 5.28.3으로 업데이트(전체 릴리스): CVE-2024-24758, GHSA-3787-6prv-h9w3 해결
  • OpenSSL을 3.0.13+quic1로 업데이트(전체 릴리스): 공개된 OpenSSL 자문 대응
  • 환경변수 처리 로직 수정: CAP_NET_BIND_SERVICE 예외 처리의 버그 제거로 권한 없는 사용자의 코드 주입 방지
  • HTTP 청크 인코딩 검증 강화: 청크 확장 바이트에 대한 제한 추가로 CPU 및 네트워크 대역폭 소진 공격 차단
  • Permission Model 경로 해석 개선: Buffer.prototype.utf8Write 몽키패칭을 통한 path.resolve() 우회 방지(v20.x, v21.x)
  • setuid() 호출 후 io_uring 권한 정리: libuv의 io_uring 작업이 setuid() 전에 초기화되었을 때 권한 드롭 실패 문제 해결(v20.x, v21.x)
  • privateDecrypt() 타이밍 사이드채널 완화: PKCS#1 v1.5 패딩 오류 처리 중 암호문 유효성 판별 정보 유출 방지
  • Permission Model 내장 함수 오버라이드 방지(v20.x, v21.x): node:fs 함수 정규화에 사용되는 내장 유틸리티 함수 보호
  • Permission Model 와일드카드 문서화 수정(v20.x, v21.x): 와일드카드는 파일 경로의 마지막 문자로만 사용 가능하다는 명시

Key Takeaway

Node.js 프로젝트는 권한 상승, 서비스 거소 공격, 경로 추적과 같은 다층적 보안 위협에 대해 의존성 업데이트, 코어 로직 수정, 문서화 개선을 동시에 수행해야 한다는 것을 보여준다. 특히 실험적 기능인 Permission Model의 여러 우회 경로를 패치한 것처럼, 신기능 도입 시 초기부터 보안 테스트와 엣지 케이스 검증이 필수다.


Node.js를 사용하는 운영 환경에서는 2024년 2월 14일 이후에 v

1

8.x, v

2

0.x, v

2

1.x 중 적어도 하나 이상의 버전을 최신 패치 버전으로 업그레이드하고, 특히 Permission Model을 사용 중이라면 와일드카드 규칙 재검토와 함께 즉시 업데이트해야 한다. 또한 Node.js 보안 공지 메일링 리스트(nodejs-sec)를 구독하면 향후 취약점 공개 전에 정보를 받을 수 있다.

원문 읽기