피드로 돌아가기
Node.js 15.4.0 (Current)
Node.js BlogNode.js Blog
Backend

Node.js 15.4.0이 AbortSignal, EventTarget, BroadcastChannel 등 5개 API를 새로 추가 및 안정화하고 60개 이상의 모듈을 primordials 패턴으로 마이그레이션

Node.js 15.4.0 (Current)

2020년 12월 9일12intermediate

Context

Node.js 버전 15.4.0은 비동기 작업 취소, 이벤트 처리, 멀티스레드 통신 등 여러 표준 API 기능이 부족했다. 또한 기존 구현 코드가 프로토타입 오염 공격(prototype pollution)에 취약한 상태였다.

Technical Solution

  • child_process에 AbortSignal 지원 추가: 실행 중인 자식 프로세스를 Signal 객체로 취소 가능하게 변경
  • EventTarget과 AbortController API 안정화: 웹 표준 이벤트 API를 Node.js 코어에 정식 포함
  • http 모듈에서 setHeader() 메서드 체이닝 활성화: 반환값을 http.ServerResponse 객체로 변경해 메서드 연쇄 호출 지원
  • stream 모듈에 AbortSignal 및 FileHandle 지원 추가: 파일 스트림을 중단하고 파일 핸들 기반 읽기/쓰기 스트림 생성 가능
  • worker 모듈에 BroadcastChannel 실험적 구현 추가: 워커 스레드 간 메시지 방송 기능 지원
  • 60개 이상 모듈(assert, buffer, fs, http2, dgram, net, os, path, readline, repl 등)을 primordials 패턴으로 마이그레이션: 프로토타입 메서드 직접 참조로 변경해 런타임 프로토타입 오염 영향 제거
  • ICU(국제화 컴포넌트) 68.1 버전 업그레이드: 유니코드 및 국제 문자 처리 개선
  • npm 7.0.15 업그레이드: 패키지 관리자 기능 향상

Impact

아티클에 정량적 성능 지표가 명시되어 있지 않음.

Key Takeaway

Node.js 생태계가 웹 표준 API(EventTarget, AbortController)를 점진적으로 수용하면서 브라우저와의 호환성을 높이고 있으며, 동시에 프로토타입 오염 보안 취약점을 대규모 리팩토링으로 근본적으로 해결하는 사례를 보여준다.


Node.js

1

5.

4.0 이상을 사용하는 백엔드 개발자는 child_process 실행 시 AbortSignal로 명시적 취소 메커니즘을 구현하거나, stream 기반 파일 처리에서 AbortSignal을 전달해 리소스 누수를 방지할 수 있다. primordials 마이그레이션으로 인해 사용자 코드에서 Object.prototype을 오염시켜도 Node.js 내부 로직은 영향을 받지 않으므로, 써드파티 라이브러리의 프로토타입 오염 공격으로부터 더 안전해진다.

원문 읽기