피드로 돌아가기
Node.js BlogSecurity
원문 읽기
Node.js가 PKI 검증 로직 3가지를 수정하고 console.table() 프로토타입 오염 취약점을 패치해 v12.x, v14.x, v16.x, v17.x 전 버전의 보안 결함 해소
January 10th 2022 Security Releases
AI 요약
Context
Node.js의 TLS 인증서 검증 로직에서 Subject Alternative Name(SAN) 처리 방식으로 인해 PKI 제약을 우회할 수 있었다. 또한 Name Constraint 검증 시 문자열 주입 취약점과 Relative Distinguished Name(RDN) 다중값 해석 오류, console.table() 함수의 프로토타입 오염 취약점이 존재했다.
Technical Solution
- URI SAN 타입 검증 비활성화: 인증서 호스트명 검사 시 PKI에서 정의되지 않은 URI SAN 타입을 더 이상 수락하지 않음
- SAN 문자열 이스케이핑 구현: Name Constraint 우회를 가능하게 하는 특수 문자를 포함한 SAN을 이스케이프 처리
- 다중값 RDN 거부 정책 적용: 인증서 주체에서 다중값 Relative Distinguished Name을 더 이상 허용하지 않음
- console.table() Null 프로토타입 설정: 프로토타입 오염을 방지하기 위해 프로퍼티 할당 시 Null 프로토타입을 사용
- 보안 되돌리기 옵션 제공: --security-revert 명령줄 옵션으로 이전 동작으로 복원 가능하도록 구성
Key Takeaway
TLS 인증서 검증 로직은 표준 준수뿐 아니라 실제 PKI 운영 관례(URI SAN 미사용)를 반영해야 하며, 문자열 기반 비교 로직에서는 주입 공격 벡터를 사전에 차단해야 한다는 점을 보여준다.
실천 포인트
Node.js를 사용하는 본인 애플리케이션에서 TLS 연결을 검증할 때 v
1
2.x 이상의 보안 패치 버전으로 업그레이드하거나, 레거시 환경에서는 --security-revert 옵션 사용 여부를 명시적으로 검토해야 한다.