피드로 돌아가기
Node.js BlogSecurity
원문 읽기
Node.js가 child_process.spawn/spawnSync의 배치 파일 처리 취약점을 패치하여 Windows에서 명령어 주입 공격 방지
Wednesday, April 10, 2024 Security Releases
AI 요약
Context
Node.js의 child_process.spawn과 child_process.spawnSync에서 배치 파일(.bat, .cmd)을 부적절하게 처리하여, shell 옵션 미활성화 상태에서도 악의적인 명령어 인자를 통한 임의 코드 실행이 가능했다.
Technical Solution
- child_process.spawn/spawnSync에 배치 파일 검증 로직 추가: .bat 또는 .cmd 파일이 shell 옵션 없이 전달되면 EINVAL 에러 발생
- 기존 코드 호환성을 위한 대체 방법 제공: 입력이 정제된 경우 { shell: true } 옵션 전달 가능
- 긴급 보안 패치 배포: Node.js 18.x, 20.x, 21.x 모든 활성 릴리스 라인에 2024년 4월 9일 이후 배포
- 보안 되돌리기 옵션 제공: --security-revert=CVE-2024-27980 플래그로 패치 거부 가능 (권장하지 않음)
Impact
패치는 Windows 사용자 전체에 영향을 미치며, 취약점 영향 범위는 Node.js 18.x, 20.x, 21.x 릴리스 라인 전체 사용자이다.
Key Takeaway
Windows 환경에서 child_process를 통한 외부 프로세스 실행 시 배치 파일 호출은 보안 취약점이 될 수 있으므로, shell 옵션 활성화 또는 입력 정제를 통해 명령어 주입 공격을 방어해야 한다.
실천 포인트
Windows에서 Node.js child_process를 사용하는 엔지니어는 배치 파일(.bat, .cmd) 실행 시 { shell: true } 옵션을 명시적으로 추가하거나 입력값을 완벽히 정제해야 CVE-2024-27980 패치 적용 후 EINVAL 에러를 방지할 수 있다.