피드로 돌아가기
Node.js BlogSecurity
원문 읽기
Node.js가 2024년 7월 8일 보안 업데이트로 Windows 배치 파일 인젝션, 네트워크 임포트 우회, 권한 모델 결함 5개 CVE 해결
Monday, July 8, 2024 Security Releases
AI 요약
Context
Node.js의 child_process.spawn/spawnSync에서 Windows 배치 파일의 모든 확장자 처리 미흡으로 shell 옵션 미설정 시에도 임의 명령 실행 가능하다. 네트워크 임포트 제한을 우회하기 위해 데이터 URL로 비네트워크 임포트를 임베드할 수 있으며, 실험 단계 권한 모델에서 파일 디스크립터 기반 작업 시 권한 검증 부재 문제가 있다.
Technical Solution
- CVE-2024-27980 (BatBadBut 불완전 수정): Windows의 child_process.spawn/spawnSync에서 배치 파일 확장자 처리 로직 강화로 악의적 명령행 인자 주입 차단
- 네트워크 임포트 보안 우회: 네트워크 임포트에서 데이터 URL 금지 정책 적용으로 임의 코드 실행 방지
- 권한 모델 fs-write 결함: --allow-fs-write 플래그 사용 시 읽기 전용 파일 디스크립터를 통한 소유권/권한 변경 제한
- 권한 모델 fs-read 결함: fs.lstat API에 대한 권한 검증 강화로 명시적 읽기 접근 권한 없는 파일 통계 조회 차단
- 권한 모델 경로 검증: Windows의 2개 백슬래시(\) 프리픽스 처리 로직 수정으로 경로 정규화 엣지 케이스 해결
- undici 버전 업그레이드: Node.js 18.x 및 20.x에서 undici를 v6.19.2로 업그레이드 (22.x는 기존 포함)
Key Takeaway
Windows 환경의 서브프로세스 실행, 네트워크 기반 모듈 로딩, 실험 단계 권한 모델을 사용하는 Node.js 애플리케이션은 22.x, 20.x, 18.x 활성 릴리스 라인의 패치 적용이 필수다. 특히 권한 모델의 파일 디스크립터 연산과 경로 검증에서 보안 검증 누락은 저권한 프로세스에 의한 권한 상승 가능성을 내포한다.
실천 포인트
Windows에서 child_process.spawn/spawnSync를 사용하거나 --allow-fs-read/--allow-fs-write 권한 플래그로 Node.js 권한 모델을 구성한 서비스는 2024년 7월 8일 이후 배포되는
2
2.x,
2
0.x,
1
8.x 보안 패치를 즉시 적용해야 하며, 특히 데이터 URL 기반 동적 모듈 로딩을 사용하는 경우 네트워크 임포트 정책을 검토해야 한다.