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

Node.js 5.10.0에서 npm 3.8.3으로 업그레이드하고 Buffer API를 확장해 인증 토큰 노출 보안 취약점 해결

Node.js 5.10.0 (Current)

2016년 4월 1일5beginner

Context

npm CLI에서 인증 토큰이 모든 HTTP 요청에 포함되어 공격자가 임의 서버를 통해 토큰을 수집할 수 있는 보안 취약점이 존재했다.

Technical Solution

  • npm을 3.8.3으로 업그레이드: 인증 토큰을 레지스트리 또는 현재 설치에 사용되는 레지스트리에 대한 요청에만 포함하도록 수정
  • Buffer.byteLength() 함수 확장: ArrayBuffer 및 DataView 객체 지원 추가
  • Buffer 스왑 메서드 추가: swap16()과 swap32() 메서드 구현으로 바이트 순서 변환 기능 제공
  • Buffer 생성자 API 백포트: 새로운 Buffer 생성자 방식을 도입
  • --zero-fill-buffers 커맨드라인 옵션 백포트: 버퍼 생성 시 메모리 초기화 옵션 제공
  • fs.mkdtemp() 함수 추가: 임시 디렉토리 생성 기능 구현
  • REPL에서 독립형 블록 지원: 스크립트 형태의 코드 블록 실행 가능
  • V8 스레드 기본값 재정의: CLI 옵션을 통해 V8 스레드 설정 커스터마이징 가능
  • async_wrap 모듈 개선: 콜백 예외 처리 및 인터셉트 예외 후처리 로직 추가
  • net 모듈에서 lookup 이벤트에 호스트 정보 포함: 네트워크 조회 시 호스트명 제공

Key Takeaway

보안 업데이트(npm 인증 토큰 범위 제한)와 API 확장(Buffer 메서드, fs.mkdtemp)이 함께 릴리스되면서 마이너 버전 업그레이드의 전형적 패턴을 보여준다.


Node.js를 사용하는 팀에서는 npm 인증 토큰이 필요한 레지스트리에만 전달되도록 npm 버전을

3.

8.3 이상으로 업그레이드하고, 바이너리 데이터 처리가 필요한 서비스는 swap16()·swap32() 메서드를 활용해 엔디안 변환 코드를 단순화할 수 있다.

원문 읽기