피드로 돌아가기
Node.js 12.22.0 (LTS)
Node.js BlogNode.js Blog
Backend

Node.js 12.22.0 LTS가 llhttp 기반 HTTP 파서를 기본값으로 유지하면서 레거시 파서를 런타임 deprecation 처리해 보안 강화

Node.js 12.22.0 (LTS)

2021년 3월 30일5intermediate

Context

Node.js 10.x의 EOL(2021년 4월)에 따라 유일한 HTTP 파서였던 레거시 HTTP 파서를 더 이상 유지할 수 없는 상황이 발생했다. 기본 HTTP 파서로 사용 중인 llhttp는 더 엄격한 HTTP 표준 준수로 보안이 우수하지만, 비표준 HTTP 헤더를 송신하는 구현과의 상호운용성 문제가 발생할 수 있다.

Technical Solution

  • 레거시 HTTP 파서를 --http-parser=legacy 옵션으로 사용 시 런타임 경고 발생시켜 deprecation 알림: 기능은 유지하되 미래 버전에서 제거 예정 명시
  • llhttp 기반 기본 HTTP 파서 유지: HTTP 표준을 더 엄격하게 준수하여 보안 강화
  • --insecure-http-parser 커맨드라인 옵션 추가: 비표준 HTTP 헤더 송신 구현과의 상호운용성이 필요한 경우 덜 엄격한 파싱 모드 선택 가능
  • Node-API를 8버전으로 업데이트하고 add-on 파일명 검색 API 추가: 네이티브 모듈 개발 생태계 확장
  • ES Modules를 안정화(stable) 상태로 전환: 모듈 시스템 표준화 완료

Impact

아티클에 성능 수치나 정량적 영향도가 명시되지 않음.

Key Takeaway

점진적 deprecation 패턴을 통해 레거시 기술을 제거하면서도 호환성 옵션(--insecure-http-parser)을 제공하면, 기존 사용자의 마이그레이션 시간을 확보하면서 보안 표준을 상향할 수 있다.


Node.js

1

2.x 이상을 사용하는 팀에서 HTTP 처리 코드 작성 시, 비표준 헤더 요청을 처리해야 하는 경우에만 `--insecure-http-parser` 플래그를 명시적으로 활성화하고 그 사유를 문서화하면, 기본 보안 수준은 유지하면서 필요시에만 호환성 모드를 사용할 수 있다.

원문 읽기