피드로 돌아가기
Wednesday August 9th 2023 Security Releases
Node.js BlogNode.js Blog
Security

Node.js가 실험 단계 정책 메커니즘과 권한 모델의 7개 우회 취약점을 패치하여 16.x, 18.x, 20.x 버전 보안 강화

Wednesday August 9th 2023 Security Releases

2023년 8월 9일6intermediate

Context

Node.js의 실험 단계 정책 메커니즘(policy mechanism)과 권한 모델(permission model)에서 여러 우회 방법이 발견되었다. 공격자가 Module._load(), module.constructor.createRequire(), process.binding() 등의 deprecated API와 fs.mkdtemp() API를 통해 policy.json 정의 외의 모듈을 require하거나 권한 검증을 우회할 수 있었다.

Technical Solution

  • Module._load()를 통한 정책 메커니즘 우회 차단: policy.json 정의 범위 외 모듈 require 방지 (16.x, 18.x, 20.x 버전)
  • module.constructor.createRequire()를 통한 정책 우회 차단: 내부 모듈 require 및 임의 코드 실행 방지 (16.x, 18.x, 20.x 버전)
  • process.binding() deprecated API를 통한 권한 모델 우회 차단: path traversal을 이용한 권한 검증 우회 방지 (20.x 버전)
  • 파일 시스템 API의 Buffer 처리 개선: fs.statfs API에서 권한 검증 추가하여 명시적 읽기 권한 없이 파일 통계 조회 방지 (20.x 버전 --allow-fs-read 플래그)
  • fs.mkdtemp()와 fs.mkdtempSync()의 권한 검증 강화: path traversal 공격을 이용한 임의 디렉토리 생성 차단 (20.x 버전)

Impact

2023년 8월 8일(화) 기준 보안 릴리스 구성: 20.x 버전(고심각도 3건, 중심각도 2건, 저심각도 2건), 18.x 버전(고심각도 1건, 중심각도 2건), 16.x 버전(고심각도 1건, 중심각도 2건)

Key Takeaway

실험 단계 보안 기능(정책 메커니즘, 권한 모델)은 프로덕션 배포 전에 다양한 API 조합을 통한 우회 경로를 철저히 감시하고 테스트해야 한다. 특히 deprecated API와 내부 모듈 접근 경로는 새로운 보안 메커니즘 도입 시에도 일관되게 제어되어야 한다.


Node.js

1

6.x,

1

8.x,

2

0.x를 사용하고 실험 단계의 정책 메커니즘이나 권한 모델을 적용한 환경에서는 2023년 8월 9일 보안 릴리스로 즉시 업그레이드하여 Module._load, module.constructor.createRequire, process.binding API를 통한 정책 우회와 fs.mkdtemp/fs.statfs를 통한 권한 검증 우회 취약점을 패치해야 한다.

원문 읽기